sincpro-py-compiler


Namesincpro-py-compiler JSON
Version 0.2.1 PyPI version JSON
download
home_pagehttps://github.com/Sincpro-SRL/sincpro_py_compiler
SummaryHerramienta simple para compilar proyectos Python (.py → .pyc) y distribuir código compilado con protección por contraseña
upload_time2025-08-31 05:26:06
maintainerNone
docs_urlNone
authorSincpro SRL
requires_python<4.0,>=3.10
licenseMIT
keywords python compiler pyc build packaging distribution security encryption password-protection
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # SincPro Python Compiler

Una herramienta simple y efectiva para compilar proyectos Python (.py → .pyc) y distribuir código compilado de forma segura.

## 🎯 Propósito

- **Compilar archivos .py a .pyc** para distribución segura del código
- **Copiar archivos no-Python tal como están** (XML, JS, TXT, etc.)
- **Excluir archivos específicos** según el tipo de proyecto
- **Ocultar código fuente** para distribución a clientes

## ⚡ Instalación

```bash
pip install sincpro-py-compiler
```

O desde el código fuente:

```bash
git clone https://github.com/Sincpro-SRL/sincpro_py_compiler.git
cd sincpro_py_compiler
poetry install
```

## 🚀 Uso Rápido

### Comandos básicos

```bash
# Compilar proyecto básico
sincpro-compile ./mi_proyecto

# Especificar directorio de salida
sincpro-compile ./mi_proyecto -o ./compilado

# Usar template para Django
sincpro-compile ./mi_django_app -t django

# Usar template para Odoo
sincpro-compile ./mi_addon_odoo -t odoo

# Ver templates disponibles
sincpro-compile --list-templates
```

### 🔒 Protección del Código Compilado (Nuevo Feature)

**SincPro Python Compiler** ahora incluye funcionalidades de seguridad para proteger tu código compilado mediante compresión con contraseña o encriptación simple. Esto es especialmente útil para la distribución comercial donde necesitas una licencia/contraseña para acceder al código.

#### Compresión con Contraseña

```bash
# Compilar y comprimir con contraseña
sincpro-compile ./mi_proyecto --compress --password "mi_licencia_comercial"

# Resultado: mi_proyecto_compilado.zip (protegido)
```

#### Encriptación Simple

```bash
# Compilar y encriptar con contraseña
sincpro-compile ./mi_proyecto --encrypt --password "clave_secreta"

# Resultado: mi_proyecto_compilado.enc (encriptado)
```

#### Desproteger Código

Para usar código protegido, utiliza el comando de desprotección:

```bash
# Descomprimir código protegido
sincpro-decrypt ./codigo_protegido.zip --password "mi_licencia_comercial" -o ./codigo_desprotegido

# Desencriptar código protegido  
sincpro-decrypt ./codigo_protegido.enc --password "clave_secreta" -o ./codigo_desprotegido
```

#### Ventajas de la Protección

- **Distribución Segura**: El código compilado no puede ser accedido sin la contraseña/licencia
- **Control de Licencias**: Cada cliente necesita su propia contraseña para ejecutar el código
- **Protección Comercial**: Impide el acceso casual al código .pyc
- **Flexibilidad**: Elige entre compresión (más compatible) o encriptación (más segura)

### 📦 Copias fieles por template (Nuevo Feature)

A partir de la versión actual, SincPro Python Compiler permite definir archivos y carpetas que serán **copiados fielmente** (sin compilar ni excluir) según el template seleccionado.

Por ejemplo, en el template `odoo`, los siguientes archivos y carpetas se copian tal cual al directorio de salida:

- `__manifest__.py`
- `__openerp__.py`
- `static/`
- `data/`
- `demo/`
- `security/`

Esto es útil para mantener la integridad de archivos requeridos por Odoo y otros frameworks, evitando su compilación o exclusión.

### Opciones avanzadas de copia fiel

Puedes definir archivos y carpetas adicionales para copiar fielmente usando la opción:

```bash
sincpro-compile ./mi_proyecto --copy-faithful-file mi_copias_fieles.txt
```

El archivo debe contener un patrón por línea, por ejemplo:

```
# Copias fieles personalizadas
config.json
assets/
logo.png
```

Estos patrones se suman a los definidos por el template seleccionado.

### Copia fiel usando patrones directos

Además de usar archivos de patrones, puedes pasar patrones directos o una lista separada por comas con la opción:

```bash
sincpro-compile ./mi_addon_odoo --copy-faithful-file __manifest__.py -o ./dist
```

O múltiples patrones:

```bash
sincpro-compile ./mi_addon_odoo --copy-faithful-file "__manifest__.py,config.json,logo.png" -o ./dist
```

Esto copiará fielmente los archivos y carpetas indicados, sin necesidad de crear un archivo de patrones.

También puedes seguir usando archivos de texto o archivos Python (.py) con la variable `COPY_FAITHFUL_PATTERNS` para definir múltiples patrones.

### Ejemplo de uso

```bash
sincpro-compile ./mi_addon_odoo -t odoo
```

En este caso, los archivos `.py` se compilan a `.pyc`, los archivos definidos como "copias fieles" se copian tal cual, y el resto se excluye según el template.

Puedes personalizar los templates o agregar tus propios patrones en la carpeta `resources/exclude_patterns/`.

### Uso con diferentes tipos de proyecto

#### Proyecto Python básico

```bash
sincpro-compile ./mi_app -t basic
```

#### Proyecto Django

```bash
sincpro-compile ./mi_django_project -t django -o ./dist
```

#### Addon Odoo

```bash
sincpro-compile ./mi_addon -t odoo -o ./compilado
```

## 📋 Templates Disponibles

### `basic` - Proyecto Python básico

Excluye:

- `__pycache__/`, `*.pyc`
- `.git/`, `.venv/`, `venv/`, `env/`
- Archivos de log y temporales
- Archivos de configuración de IDEs

### `django` - Proyecto Django

Incluye exclusiones básicas más:

- `migrations/`
- `static/`, `media/`
- `db.sqlite3`

### `odoo` - Addon Odoo

Incluye exclusiones básicas más:

- `__manifest__.py`, `__openerp__.py`
- `static/`, `data/`, `demo/`
- `security/`

## 🔧 Opciones Avanzadas

### Archivo de exclusiones personalizado

Crea un archivo con patrones de exclusión (uno por línea):

```text
# Mi archivo de exclusiones personalizadas
*.log
temp/
config/secret.py
docs/
```

Úsalo con:

```bash
sincpro-compile ./proyecto -e mi_exclusiones.txt
```

### Opciones del CLI

```bash
sincpro-compile [directorio] [opciones]

Opciones:
  -o, --output DIR          Directorio de salida (default: ./compiled)
  -t, --template TEMPLATE   Template: basic, django, odoo (default: basic)
  -e, --exclude-file FILE   Archivo personalizado de exclusiones
  --list-templates         Mostrar templates disponibles
  -v, --verbose           Mostrar información detallada
  -h, --help              Mostrar ayuda
```

## 💡 Ejemplos Prácticos

### Distribuir una aplicación Python

```bash
# Compilar y generar distribución limpia
sincpro-compile ./mi_app -o ./dist -t basic
```

### Preparar addon Odoo para cliente

```bash
# Compilar addon excluyendo manifests y archivos de datos
sincpro-compile ./mi_addon -t odoo -o ./cliente_dist
```

### Proyecto Django para producción

```bash
# Compilar excluyendo migraciones y archivos estáticos
sincpro-compile ./mi_web -t django -o ./produccion
```

## 🛠 Uso Programático

```python
from sincpro_py_compiler.infrastructure.python_compiler import PythonCompiler

# Crear instancia del compilador
compiler = PythonCompiler()

# Compilar proyecto
success = compiler.compile_project(
    source_dir="./mi_proyecto",
    output_dir="./compilado",
    template="basic"
)

if success:
    print("¡Compilación exitosa!")
```

## 📁 Estructura de Salida

El compilador mantiene la estructura original del proyecto:

```
mi_proyecto/
├── app.py
├── utils.py
├── config.xml
└── static/
    └── style.css

# Después de compilar:
compilado/
├── app.pyc          # Compilado
├── utils.pyc        # Compilado  
├── config.xml       # Copiado tal como está
└── static/
    └── style.css    # Copiado tal como está
```

## ⚠️ Limitaciones

- Solo compila archivos `.py` a `.pyc`
- No es cifrado ni ofuscación avanzada
- Los archivos `.pyc` pueden ser descompilados
- Para protección avanzada considerar PyArmor

## 🤝 Contribuir

1. Fork el repositorio
2. Crea una rama para tu feature
3. Realiza tus cambios
4. Envía un Pull Request

## � Documentación

- **[Arquitectura del Sistema](docs/ARCHITECTURE.md)** - Detalles técnicos y diseño
- **[Guía de Deployment](docs/DEPLOYMENT.md)** - Instrucciones de lanzamiento e instalación
- **[Tests](tests/)** - Suite de tests completa con casos de uso reales

## �📄 Licencia

MIT License - ver archivo LICENSE para detalles.

## 🏢 Empresa

Desarrollado por **Sincpro SRL** para distribución segura de código Python.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Sincpro-SRL/sincpro_py_compiler",
    "name": "sincpro-py-compiler",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.10",
    "maintainer_email": null,
    "keywords": "python, compiler, pyc, build, packaging, distribution, security, encryption, password-protection",
    "author": "Sincpro SRL",
    "author_email": "dev@sincpro.com",
    "download_url": "https://files.pythonhosted.org/packages/16/9a/0c39926be4da2cf8ba07d29dbbefde067918381535b3eb7fd939610b4fc0/sincpro_py_compiler-0.2.1.tar.gz",
    "platform": null,
    "description": "# SincPro Python Compiler\n\nUna herramienta simple y efectiva para compilar proyectos Python (.py \u2192 .pyc) y distribuir c\u00f3digo compilado de forma segura.\n\n## \ud83c\udfaf Prop\u00f3sito\n\n- **Compilar archivos .py a .pyc** para distribuci\u00f3n segura del c\u00f3digo\n- **Copiar archivos no-Python tal como est\u00e1n** (XML, JS, TXT, etc.)\n- **Excluir archivos espec\u00edficos** seg\u00fan el tipo de proyecto\n- **Ocultar c\u00f3digo fuente** para distribuci\u00f3n a clientes\n\n## \u26a1 Instalaci\u00f3n\n\n```bash\npip install sincpro-py-compiler\n```\n\nO desde el c\u00f3digo fuente:\n\n```bash\ngit clone https://github.com/Sincpro-SRL/sincpro_py_compiler.git\ncd sincpro_py_compiler\npoetry install\n```\n\n## \ud83d\ude80 Uso R\u00e1pido\n\n### Comandos b\u00e1sicos\n\n```bash\n# Compilar proyecto b\u00e1sico\nsincpro-compile ./mi_proyecto\n\n# Especificar directorio de salida\nsincpro-compile ./mi_proyecto -o ./compilado\n\n# Usar template para Django\nsincpro-compile ./mi_django_app -t django\n\n# Usar template para Odoo\nsincpro-compile ./mi_addon_odoo -t odoo\n\n# Ver templates disponibles\nsincpro-compile --list-templates\n```\n\n### \ud83d\udd12 Protecci\u00f3n del C\u00f3digo Compilado (Nuevo Feature)\n\n**SincPro Python Compiler** ahora incluye funcionalidades de seguridad para proteger tu c\u00f3digo compilado mediante compresi\u00f3n con contrase\u00f1a o encriptaci\u00f3n simple. Esto es especialmente \u00fatil para la distribuci\u00f3n comercial donde necesitas una licencia/contrase\u00f1a para acceder al c\u00f3digo.\n\n#### Compresi\u00f3n con Contrase\u00f1a\n\n```bash\n# Compilar y comprimir con contrase\u00f1a\nsincpro-compile ./mi_proyecto --compress --password \"mi_licencia_comercial\"\n\n# Resultado: mi_proyecto_compilado.zip (protegido)\n```\n\n#### Encriptaci\u00f3n Simple\n\n```bash\n# Compilar y encriptar con contrase\u00f1a\nsincpro-compile ./mi_proyecto --encrypt --password \"clave_secreta\"\n\n# Resultado: mi_proyecto_compilado.enc (encriptado)\n```\n\n#### Desproteger C\u00f3digo\n\nPara usar c\u00f3digo protegido, utiliza el comando de desprotecci\u00f3n:\n\n```bash\n# Descomprimir c\u00f3digo protegido\nsincpro-decrypt ./codigo_protegido.zip --password \"mi_licencia_comercial\" -o ./codigo_desprotegido\n\n# Desencriptar c\u00f3digo protegido  \nsincpro-decrypt ./codigo_protegido.enc --password \"clave_secreta\" -o ./codigo_desprotegido\n```\n\n#### Ventajas de la Protecci\u00f3n\n\n- **Distribuci\u00f3n Segura**: El c\u00f3digo compilado no puede ser accedido sin la contrase\u00f1a/licencia\n- **Control de Licencias**: Cada cliente necesita su propia contrase\u00f1a para ejecutar el c\u00f3digo\n- **Protecci\u00f3n Comercial**: Impide el acceso casual al c\u00f3digo .pyc\n- **Flexibilidad**: Elige entre compresi\u00f3n (m\u00e1s compatible) o encriptaci\u00f3n (m\u00e1s segura)\n\n### \ud83d\udce6 Copias fieles por template (Nuevo Feature)\n\nA partir de la versi\u00f3n actual, SincPro Python Compiler permite definir archivos y carpetas que ser\u00e1n **copiados fielmente** (sin compilar ni excluir) seg\u00fan el template seleccionado.\n\nPor ejemplo, en el template `odoo`, los siguientes archivos y carpetas se copian tal cual al directorio de salida:\n\n- `__manifest__.py`\n- `__openerp__.py`\n- `static/`\n- `data/`\n- `demo/`\n- `security/`\n\nEsto es \u00fatil para mantener la integridad de archivos requeridos por Odoo y otros frameworks, evitando su compilaci\u00f3n o exclusi\u00f3n.\n\n### Opciones avanzadas de copia fiel\n\nPuedes definir archivos y carpetas adicionales para copiar fielmente usando la opci\u00f3n:\n\n```bash\nsincpro-compile ./mi_proyecto --copy-faithful-file mi_copias_fieles.txt\n```\n\nEl archivo debe contener un patr\u00f3n por l\u00ednea, por ejemplo:\n\n```\n# Copias fieles personalizadas\nconfig.json\nassets/\nlogo.png\n```\n\nEstos patrones se suman a los definidos por el template seleccionado.\n\n### Copia fiel usando patrones directos\n\nAdem\u00e1s de usar archivos de patrones, puedes pasar patrones directos o una lista separada por comas con la opci\u00f3n:\n\n```bash\nsincpro-compile ./mi_addon_odoo --copy-faithful-file __manifest__.py -o ./dist\n```\n\nO m\u00faltiples patrones:\n\n```bash\nsincpro-compile ./mi_addon_odoo --copy-faithful-file \"__manifest__.py,config.json,logo.png\" -o ./dist\n```\n\nEsto copiar\u00e1 fielmente los archivos y carpetas indicados, sin necesidad de crear un archivo de patrones.\n\nTambi\u00e9n puedes seguir usando archivos de texto o archivos Python (.py) con la variable `COPY_FAITHFUL_PATTERNS` para definir m\u00faltiples patrones.\n\n### Ejemplo de uso\n\n```bash\nsincpro-compile ./mi_addon_odoo -t odoo\n```\n\nEn este caso, los archivos `.py` se compilan a `.pyc`, los archivos definidos como \"copias fieles\" se copian tal cual, y el resto se excluye seg\u00fan el template.\n\nPuedes personalizar los templates o agregar tus propios patrones en la carpeta `resources/exclude_patterns/`.\n\n### Uso con diferentes tipos de proyecto\n\n#### Proyecto Python b\u00e1sico\n\n```bash\nsincpro-compile ./mi_app -t basic\n```\n\n#### Proyecto Django\n\n```bash\nsincpro-compile ./mi_django_project -t django -o ./dist\n```\n\n#### Addon Odoo\n\n```bash\nsincpro-compile ./mi_addon -t odoo -o ./compilado\n```\n\n## \ud83d\udccb Templates Disponibles\n\n### `basic` - Proyecto Python b\u00e1sico\n\nExcluye:\n\n- `__pycache__/`, `*.pyc`\n- `.git/`, `.venv/`, `venv/`, `env/`\n- Archivos de log y temporales\n- Archivos de configuraci\u00f3n de IDEs\n\n### `django` - Proyecto Django\n\nIncluye exclusiones b\u00e1sicas m\u00e1s:\n\n- `migrations/`\n- `static/`, `media/`\n- `db.sqlite3`\n\n### `odoo` - Addon Odoo\n\nIncluye exclusiones b\u00e1sicas m\u00e1s:\n\n- `__manifest__.py`, `__openerp__.py`\n- `static/`, `data/`, `demo/`\n- `security/`\n\n## \ud83d\udd27 Opciones Avanzadas\n\n### Archivo de exclusiones personalizado\n\nCrea un archivo con patrones de exclusi\u00f3n (uno por l\u00ednea):\n\n```text\n# Mi archivo de exclusiones personalizadas\n*.log\ntemp/\nconfig/secret.py\ndocs/\n```\n\n\u00dasalo con:\n\n```bash\nsincpro-compile ./proyecto -e mi_exclusiones.txt\n```\n\n### Opciones del CLI\n\n```bash\nsincpro-compile [directorio] [opciones]\n\nOpciones:\n  -o, --output DIR          Directorio de salida (default: ./compiled)\n  -t, --template TEMPLATE   Template: basic, django, odoo (default: basic)\n  -e, --exclude-file FILE   Archivo personalizado de exclusiones\n  --list-templates         Mostrar templates disponibles\n  -v, --verbose           Mostrar informaci\u00f3n detallada\n  -h, --help              Mostrar ayuda\n```\n\n## \ud83d\udca1 Ejemplos Pr\u00e1cticos\n\n### Distribuir una aplicaci\u00f3n Python\n\n```bash\n# Compilar y generar distribuci\u00f3n limpia\nsincpro-compile ./mi_app -o ./dist -t basic\n```\n\n### Preparar addon Odoo para cliente\n\n```bash\n# Compilar addon excluyendo manifests y archivos de datos\nsincpro-compile ./mi_addon -t odoo -o ./cliente_dist\n```\n\n### Proyecto Django para producci\u00f3n\n\n```bash\n# Compilar excluyendo migraciones y archivos est\u00e1ticos\nsincpro-compile ./mi_web -t django -o ./produccion\n```\n\n## \ud83d\udee0 Uso Program\u00e1tico\n\n```python\nfrom sincpro_py_compiler.infrastructure.python_compiler import PythonCompiler\n\n# Crear instancia del compilador\ncompiler = PythonCompiler()\n\n# Compilar proyecto\nsuccess = compiler.compile_project(\n    source_dir=\"./mi_proyecto\",\n    output_dir=\"./compilado\",\n    template=\"basic\"\n)\n\nif success:\n    print(\"\u00a1Compilaci\u00f3n exitosa!\")\n```\n\n## \ud83d\udcc1 Estructura de Salida\n\nEl compilador mantiene la estructura original del proyecto:\n\n```\nmi_proyecto/\n\u251c\u2500\u2500 app.py\n\u251c\u2500\u2500 utils.py\n\u251c\u2500\u2500 config.xml\n\u2514\u2500\u2500 static/\n    \u2514\u2500\u2500 style.css\n\n# Despu\u00e9s de compilar:\ncompilado/\n\u251c\u2500\u2500 app.pyc          # Compilado\n\u251c\u2500\u2500 utils.pyc        # Compilado  \n\u251c\u2500\u2500 config.xml       # Copiado tal como est\u00e1\n\u2514\u2500\u2500 static/\n    \u2514\u2500\u2500 style.css    # Copiado tal como est\u00e1\n```\n\n## \u26a0\ufe0f Limitaciones\n\n- Solo compila archivos `.py` a `.pyc`\n- No es cifrado ni ofuscaci\u00f3n avanzada\n- Los archivos `.pyc` pueden ser descompilados\n- Para protecci\u00f3n avanzada considerar PyArmor\n\n## \ud83e\udd1d Contribuir\n\n1. Fork el repositorio\n2. Crea una rama para tu feature\n3. Realiza tus cambios\n4. Env\u00eda un Pull Request\n\n## \ufffd Documentaci\u00f3n\n\n- **[Arquitectura del Sistema](docs/ARCHITECTURE.md)** - Detalles t\u00e9cnicos y dise\u00f1o\n- **[Gu\u00eda de Deployment](docs/DEPLOYMENT.md)** - Instrucciones de lanzamiento e instalaci\u00f3n\n- **[Tests](tests/)** - Suite de tests completa con casos de uso reales\n\n## \ufffd\ud83d\udcc4 Licencia\n\nMIT License - ver archivo LICENSE para detalles.\n\n## \ud83c\udfe2 Empresa\n\nDesarrollado por **Sincpro SRL** para distribuci\u00f3n segura de c\u00f3digo Python.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Herramienta simple para compilar proyectos Python (.py \u2192 .pyc) y distribuir c\u00f3digo compilado con protecci\u00f3n por contrase\u00f1a",
    "version": "0.2.1",
    "project_urls": {
        "Documentation": "https://github.com/Sincpro-SRL/sincpro_py_compiler/tree/main/docs",
        "Homepage": "https://github.com/Sincpro-SRL/sincpro_py_compiler",
        "Repository": "https://github.com/Sincpro-SRL/sincpro_py_compiler"
    },
    "split_keywords": [
        "python",
        " compiler",
        " pyc",
        " build",
        " packaging",
        " distribution",
        " security",
        " encryption",
        " password-protection"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "5d9e3c0659dfcec8101dbc85f7a5f0e6cf06e07ff5c5f2c9e00b59b3aea6063e",
                "md5": "f5f5cdfb7bf76c6135f90426529af741",
                "sha256": "be01e34ce5a67c67a06fc4455d74962488432eb4dd3c327eac61faea54a99f83"
            },
            "downloads": -1,
            "filename": "sincpro_py_compiler-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f5f5cdfb7bf76c6135f90426529af741",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<4.0,>=3.10",
            "size": 25171,
            "upload_time": "2025-08-31T05:26:05",
            "upload_time_iso_8601": "2025-08-31T05:26:05.815785Z",
            "url": "https://files.pythonhosted.org/packages/5d/9e/3c0659dfcec8101dbc85f7a5f0e6cf06e07ff5c5f2c9e00b59b3aea6063e/sincpro_py_compiler-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "169a0c39926be4da2cf8ba07d29dbbefde067918381535b3eb7fd939610b4fc0",
                "md5": "9a775720cc3dcf40d4fbd94ef01fcb46",
                "sha256": "aeb50c0503373e814fcf283461c7b9f43bf7bac69e12f5fced3228afdca8613a"
            },
            "downloads": -1,
            "filename": "sincpro_py_compiler-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "9a775720cc3dcf40d4fbd94ef01fcb46",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.10",
            "size": 18848,
            "upload_time": "2025-08-31T05:26:06",
            "upload_time_iso_8601": "2025-08-31T05:26:06.920618Z",
            "url": "https://files.pythonhosted.org/packages/16/9a/0c39926be4da2cf8ba07d29dbbefde067918381535b3eb7fd939610b4fc0/sincpro_py_compiler-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-31 05:26:06",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Sincpro-SRL",
    "github_project": "sincpro_py_compiler",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "sincpro-py-compiler"
}
        
Elapsed time: 2.26843s