# 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)
### 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/ec/5b/bdca89688e24217ca3f668586a7ba05291c7d2b333e3e71878b459e63c20/sincpro_py_compiler-0.1.0.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### 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.1.0",
"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": "94cd8de81c55399edd97711664cf664166a1d93edcd174657de05ce2eddab4dd",
"md5": "4cacb119d21f1ff7ec7eb2ac95d41e36",
"sha256": "eabc01f1cf092910023115e646184147fa052d742b4de8880fadc7f413176090"
},
"downloads": -1,
"filename": "sincpro_py_compiler-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4cacb119d21f1ff7ec7eb2ac95d41e36",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 23891,
"upload_time": "2025-07-29T00:30:23",
"upload_time_iso_8601": "2025-07-29T00:30:23.912945Z",
"url": "https://files.pythonhosted.org/packages/94/cd/8de81c55399edd97711664cf664166a1d93edcd174657de05ce2eddab4dd/sincpro_py_compiler-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ec5bbdca89688e24217ca3f668586a7ba05291c7d2b333e3e71878b459e63c20",
"md5": "89af1589351ba6296cc9d76e6bf3e26a",
"sha256": "07e57be7868bcbd763e474dd8648e2c3132402bb8a10ccb96ec765baa5f084fb"
},
"downloads": -1,
"filename": "sincpro_py_compiler-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "89af1589351ba6296cc9d76e6bf3e26a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 17142,
"upload_time": "2025-07-29T00:30:25",
"upload_time_iso_8601": "2025-07-29T00:30:25.203287Z",
"url": "https://files.pythonhosted.org/packages/ec/5b/bdca89688e24217ca3f668586a7ba05291c7d2b333e3e71878b459e63c20/sincpro_py_compiler-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-29 00:30:25",
"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"
}