| Name | smooth-criminal JSON |
| Version |
0.8.0
JSON |
| download |
| home_page | None |
| Summary | Dashboard de análisis de rendimiento con decoradores inteligentes |
| upload_time | 2025-10-26 18:48:01 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.9 |
| license | None |
| keywords |
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# 🎩 Smooth Criminal
**A Python performance acceleration toolkit with the soul of Michael Jackson.**
[](https://www.python.org/)
[](LICENSE)
[](https://mybinder.org/v2/gh/Alphonsus411/smooth_criminal/HEAD?urlpath=streamlit/examples/benchmark_streamlit.py)
[](https://smooth-criminal-demo.streamlit.app)
---
## 🚀 ¿Qué es esto?
**Smooth Criminal** es una librería de Python para acelerar funciones y scripts automáticamente usando:
- 🧠 [Numba](https://numba.pydata.org/)
- ⚡ Asyncio y threading
- 📊 Dashboard visual con [Flet](https://flet.dev)
- 🧪 Benchmarks y profiling
- 🎶 Estilo, carisma y mensajes inspirados en MJ
---
## 💡 Características principales
| Decorador / Función | Descripción |
|-------------------------|--------------------------------------------------------|
| `@smooth` | Aceleración con Numba (modo sigiloso y rápido) |
| `@vectorized` | Vectoriza funciones estilo NumPy con *fallback* |
| `@guvectorized` | Generaliza ufuncs con *fallback* seguro |
| `@moonwalk` | Convierte funciones en corutinas `async` sin esfuerzo |
| `@thriller` | Benchmark antes y después (con ritmo) |
| `@jam(workers=n, backend="thread|process|async")` | Paralelismo con hilos, procesos o asyncio (cola dinámica) |
| `@black_or_white(mode)` | Optimiza tipos numéricos (`float32` vs `float64`) |
| `@bad` | Modo de optimización agresiva (`fastmath`) |
| `@beat_it` | Fallback automático si algo falla |
| `@mj_mode` | Aplica un decorador aleatorio con mensaje de MJ |
| `dangerous(func)` | Mezcla poderosa de decoradores (`@bad + @thriller`) |
| `@bad_and_dangerous` | Optimiza, perfila y maneja errores automáticamente |
| `profile_it(func)` | Estadísticas detalladas de rendimiento |
| `analyze_ast(func)` | Análisis estático para detectar código optimizable |
---
## 🧠 Dashboard visual
Ejecuta el panel interactivo para ver métricas de tus funciones decoradas:
```bash
python -m smooth_criminal.dashboard
```
O bien:
````bash
python scripts/example_flet_dashboard.py
````
- Tabla con tiempos, decoradores y puntuaciones
- Botones para exportar CSV/JSON/XLSX/MD, limpiar historial o ver gráfico
- Interfaz elegante con Flet (modo oscuro)
### 🕺 Animación Moonwalk
Activa el interruptor **Moonwalk** para ver cómo un ícono de MJ cruza la
pantalla y desaparece al finalizar.
Prueba manual:
1. Ejecuta `python -m smooth_criminal.dashboard` o `python scripts/example_flet_dashboard.py`.
2. Pulsa el interruptor **Moonwalk** en la fila de botones.
3. Observa al bailarín deslizarse y liberarse automáticamente.
### 🎬 Nuevas animaciones
El dashboard incorpora efectos como "Spin" y "Toe Stand" para dar más ritmo a tus métricas.
Actívalos desde la línea de comandos:
```bash
python -m smooth_criminal.dashboard --animation spin
```
## ⚙️ Instalación
````bash
pip install smooth-criminal
````
O para desarrollo local:
````bash
git clone https://github.com/Alphonsus411/smooth_criminal.git
cd smooth_criminal
pip install -e .
````
## 🛠️ Configuración de entorno
Antes de ejecutar la librería copia el archivo de ejemplo y ajusta las variables:
````bash
cp .env.example .env
````
Dentro de `.env` puedes definir:
```
# Ruta donde se guardan las métricas
LOG_PATH=.smooth_criminal_log.json
# Backend de almacenamiento: json (por defecto), sqlite o tinydb
SMOOTH_CRIMINAL_STORAGE=json
```
Para backend `tinydb` instala la dependencia opcional `tinydb` y para exportar a
`xlsx` instala `openpyxl`.
## 💃 Ejemplo rápido
````python
from smooth_criminal import smooth, thriller
@thriller
@smooth
def square(n):
return [i * i for i in range(n)]
print(square(10))
````
### 🎷 Paralelismo con `jam`
```python
from smooth_criminal.core import jam
@jam(workers=4, backend="process")
def cube(x):
return x ** 3
print(cube([1, 2, 3]))
# También disponible backend="thread" (por defecto) o backend="async"
```
### ⏱️ Benchmark de backends con `benchmark_jam`
```python
from smooth_criminal.benchmark import benchmark_jam, detect_fastest_backend
def cube(x):
return x ** 3
data = benchmark_jam(cube, [1, 2, 3], ["thread", "process", "async"])
print(data["fastest"]) # backend más veloz
best = detect_fastest_backend(cube, [1, 2, 3], ["thread", "process", "async"])
print(best)
```
### 🎲 Decorador aleatorio `mj_mode`
```python
import random
from smooth_criminal import mj_mode
random.seed(0)
@mj_mode
def identidad(x):
return x
print(identidad([1, 2, 3]))
# Posible salida: "🥁 Jam session with 4 workers!"
```
Mensajes posibles:
- 🕺 Hee-Hee! You're now smooth.
- 😎 Who's bad? You're bad!
- 🎬 It's Thriller time!
- 🥁 Jam session with 4 workers!
## 🚧 Modo bad_and_dangerous
````python
from smooth_criminal import bad_and_dangerous
def fallback(_):
return -1
@bad_and_dangerous(fallback=fallback)
def risky(n):
total = 0
for i in range(n):
total += i
return total
print(risky(5))
````
## 🧮 Vectorización segura
````python
import numpy as np
from smooth_criminal import vectorized, guvectorized
@vectorized(["float64(float64)"])
def doble(x):
return x * 2
@guvectorized(["void(float64[:], float64[:], float64[:])"], "(n),(n)->(n)")
def suma(a, b, res):
for i in range(a.shape[0]):
res[i] = a[i] + b[i]
print(doble(np.array([1.0, 2.0])))
print(suma(np.array([1.0, 2.0]), np.array([3.0, 4.0])))
````
## 🧪 CLI interactiva
````bash
smooth-criminal analyze my_script.py
````
Esto analizará tu código buscando funciones lentas, bucles, range(), etc.
Para exportar el historial en distintos formatos:
````bash
smooth-criminal export history.xlsx --format xlsx
smooth-criminal export history.md --format md
smooth-criminal export history.json --format json
````
También puedes comparar rápidamente los backends de `jam` desde la línea de comandos:
````bash
smooth-criminal jam-test paquete.modulo:funcion --workers 4 --reps 3
````
Si prefieres un resultado en JSON sin mensajes adicionales, añade `--silent`:
````bash
smooth-criminal jam-test paquete.modulo:funcion --workers 4 --reps 3 --silent
````
Esto mostrará una tabla comparativa de tiempos y, al finalizar sin errores, el mensaje especial:
```
🎶 Just jammin' through those CPU cores! 🧠🕺
```
### 🕺 Flag --mj-mode
Activa efectos especiales al detectar mejoras de rendimiento:
```bash
smooth-criminal jam-test paquete.modulo:funcion --workers 4 --mj-mode
```
Cuando el modo está activo y el rendimiento mejora al menos un 10 %, se
reproducirá un pequeño efecto de Michael Jackson. Si la dependencia
`playsound` no está disponible, se mostrará un mensaje o GIF/ASCII mediante
`rich`. En ausencia de estas dependencias, solo se emitirá una advertencia.
## 🌐 API
Lanza una API HTTP para consultar las estadísticas desde otras aplicaciones:
```bash
smooth-criminal api --host 127.0.0.1 --port 8000
```
Después puedes obtener los datos con:
```bash
curl http://127.0.0.1:8000/history
```
## 🔌 Plugin
El directorio `vscode-extension` contiene un plugin para VS Code que integra los comandos de Smooth Criminal.
Instálalo con:
```bash
cd vscode-extension
npm install
npm run build
```
En VS Code, carga la extensión desde esta carpeta y podrás ejecutar análisis desde el editor.
## 💾 Backends de almacenamiento
El historial de ejecuciones se guarda usando un backend configurable.
Selecciona el backend con la variable de entorno `SMOOTH_CRIMINAL_STORAGE`:
````bash
export SMOOTH_CRIMINAL_STORAGE=sqlite # json | sqlite | tinydb
smooth-criminal analyze my_script.py
````
El backend `sqlite` no requiere extras. Para `tinydb` instala `tinydb` y para
exportar a `xlsx` instala `openpyxl`.
## 📚 Documentación
Próximamente en ReadTheDocs…
Consulta el [changelog](CHANGELOG.md) para conocer el historial completo de versiones.
## 📦 Empaquetado
Para crear una distribución local y verificar sus metadatos:
```bash
python -m build
twine check dist/*
```
## 📝 Licencia
MIT © Adolfo González
Este proyecto incluye bibliotecas de terceros con licencias permisivas, como
Flet (Apache 2.0), Numba y NumPy (BSD-3-Clause) o Rich (MIT). Consulta
[THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md) para el listado completo.
## 🙏 Agradecimientos
| Colaborador / Tecnología | Rol / Licencia |
|--------------------------|----------------|
| [Adolfo González](https://github.com/Alphonsus411) | Autor principal |
| Michael Jackson | Inspiración musical |
| [Flet](https://flet.dev) (Apache 2.0) | Dashboard visual |
| [Numba](https://numba.pydata.org) (BSD-3-Clause) | Aceleración JIT |
| [NumPy](https://numpy.org) (BSD-3-Clause) | Operaciones vectoriales |
| [Rich](https://rich.readthedocs.io) (MIT) | Salida de consola |
Raw data
{
"_id": null,
"home_page": null,
"name": "smooth-criminal",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Adolfo Gonz\u00e1lez <tucorreo@example.com>",
"download_url": "https://files.pythonhosted.org/packages/33/94/8bbcf2820a6ecc5b9685f735a5fc85e51996b9a3ca0ae17a448e802b2f88/smooth_criminal-0.8.0.tar.gz",
"platform": null,
"description": "# \ud83c\udfa9 Smooth Criminal\r\n\r\n**A Python performance acceleration toolkit with the soul of Michael Jackson.**\r\n\r\n[](https://www.python.org/)\r\n[](LICENSE)\r\n[](https://mybinder.org/v2/gh/Alphonsus411/smooth_criminal/HEAD?urlpath=streamlit/examples/benchmark_streamlit.py)\r\n[](https://smooth-criminal-demo.streamlit.app)\r\n\r\n---\r\n\r\n## \ud83d\ude80 \u00bfQu\u00e9 es esto?\r\n\r\n**Smooth Criminal** es una librer\u00eda de Python para acelerar funciones y scripts autom\u00e1ticamente usando:\r\n- \ud83e\udde0 [Numba](https://numba.pydata.org/)\r\n- \u26a1 Asyncio y threading\r\n- \ud83d\udcca Dashboard visual con [Flet](https://flet.dev)\r\n- \ud83e\uddea Benchmarks y profiling\r\n- \ud83c\udfb6 Estilo, carisma y mensajes inspirados en MJ\r\n\r\n---\r\n\r\n## \ud83d\udca1 Caracter\u00edsticas principales\r\n\r\n| Decorador / Funci\u00f3n | Descripci\u00f3n |\r\n|-------------------------|--------------------------------------------------------|\r\n| `@smooth` | Aceleraci\u00f3n con Numba (modo sigiloso y r\u00e1pido) |\r\n| `@vectorized` | Vectoriza funciones estilo NumPy con *fallback* |\r\n| `@guvectorized` | Generaliza ufuncs con *fallback* seguro |\r\n| `@moonwalk` | Convierte funciones en corutinas `async` sin esfuerzo |\r\n| `@thriller` | Benchmark antes y despu\u00e9s (con ritmo) |\r\n| `@jam(workers=n, backend=\"thread|process|async\")` | Paralelismo con hilos, procesos o asyncio (cola din\u00e1mica) |\r\n| `@black_or_white(mode)` | Optimiza tipos num\u00e9ricos (`float32` vs `float64`) |\r\n| `@bad` | Modo de optimizaci\u00f3n agresiva (`fastmath`) |\r\n| `@beat_it` | Fallback autom\u00e1tico si algo falla |\r\n| `@mj_mode` | Aplica un decorador aleatorio con mensaje de MJ |\r\n| `dangerous(func)` | Mezcla poderosa de decoradores (`@bad + @thriller`) |\r\n| `@bad_and_dangerous` | Optimiza, perfila y maneja errores autom\u00e1ticamente |\r\n| `profile_it(func)` | Estad\u00edsticas detalladas de rendimiento |\r\n| `analyze_ast(func)` | An\u00e1lisis est\u00e1tico para detectar c\u00f3digo optimizable |\r\n\r\n---\r\n\r\n## \ud83e\udde0 Dashboard visual\r\n\r\nEjecuta el panel interactivo para ver m\u00e9tricas de tus funciones decoradas:\r\n\r\n```bash\r\npython -m smooth_criminal.dashboard\r\n```\r\nO bien:\r\n\r\n````bash\r\npython scripts/example_flet_dashboard.py\r\n````\r\n\r\n- Tabla con tiempos, decoradores y puntuaciones\r\n\r\n- Botones para exportar CSV/JSON/XLSX/MD, limpiar historial o ver gr\u00e1fico\r\n\r\n- Interfaz elegante con Flet (modo oscuro)\r\n\r\n### \ud83d\udd7a Animaci\u00f3n Moonwalk\r\n\r\nActiva el interruptor **Moonwalk** para ver c\u00f3mo un \u00edcono de MJ cruza la\r\npantalla y desaparece al finalizar.\r\n\r\nPrueba manual:\r\n\r\n1. Ejecuta `python -m smooth_criminal.dashboard` o `python scripts/example_flet_dashboard.py`.\r\n2. Pulsa el interruptor **Moonwalk** en la fila de botones.\r\n3. Observa al bailar\u00edn deslizarse y liberarse autom\u00e1ticamente.\r\n\r\n### \ud83c\udfac Nuevas animaciones\r\n\r\nEl dashboard incorpora efectos como \"Spin\" y \"Toe Stand\" para dar m\u00e1s ritmo a tus m\u00e9tricas.\r\nAct\u00edvalos desde la l\u00ednea de comandos:\r\n\r\n```bash\r\npython -m smooth_criminal.dashboard --animation spin\r\n```\r\n\r\n## \u2699\ufe0f Instalaci\u00f3n\r\n\r\n````bash\r\npip install smooth-criminal\r\n````\r\n\r\nO para desarrollo local:\r\n\r\n````bash\r\ngit clone https://github.com/Alphonsus411/smooth_criminal.git\r\ncd smooth_criminal\r\npip install -e .\r\n````\r\n\r\n\r\n## \ud83d\udee0\ufe0f Configuraci\u00f3n de entorno\r\n\r\nAntes de ejecutar la librer\u00eda copia el archivo de ejemplo y ajusta las variables:\r\n\r\n````bash\r\ncp .env.example .env\r\n````\r\n\r\nDentro de `.env` puedes definir:\r\n\r\n```\r\n# Ruta donde se guardan las m\u00e9tricas\r\nLOG_PATH=.smooth_criminal_log.json\r\n\r\n# Backend de almacenamiento: json (por defecto), sqlite o tinydb\r\nSMOOTH_CRIMINAL_STORAGE=json\r\n```\r\n\r\nPara backend `tinydb` instala la dependencia opcional `tinydb` y para exportar a\r\n`xlsx` instala `openpyxl`.\r\n\r\n\r\n## \ud83d\udc83 Ejemplo r\u00e1pido\r\n\r\n````python\r\nfrom smooth_criminal import smooth, thriller\r\n\r\n@thriller\r\n@smooth\r\ndef square(n):\r\n return [i * i for i in range(n)]\r\n\r\nprint(square(10))\r\n````\r\n\r\n### \ud83c\udfb7 Paralelismo con `jam`\r\n\r\n```python\r\nfrom smooth_criminal.core import jam\r\n\r\n@jam(workers=4, backend=\"process\")\r\ndef cube(x):\r\n return x ** 3\r\n\r\nprint(cube([1, 2, 3]))\r\n\r\n# Tambi\u00e9n disponible backend=\"thread\" (por defecto) o backend=\"async\"\r\n```\r\n\r\n### \u23f1\ufe0f Benchmark de backends con `benchmark_jam`\r\n\r\n```python\r\nfrom smooth_criminal.benchmark import benchmark_jam, detect_fastest_backend\r\n\r\ndef cube(x):\r\n return x ** 3\r\n\r\ndata = benchmark_jam(cube, [1, 2, 3], [\"thread\", \"process\", \"async\"])\r\nprint(data[\"fastest\"]) # backend m\u00e1s veloz\r\n\r\nbest = detect_fastest_backend(cube, [1, 2, 3], [\"thread\", \"process\", \"async\"])\r\nprint(best)\r\n```\r\n\r\n### \ud83c\udfb2 Decorador aleatorio `mj_mode`\r\n\r\n```python\r\nimport random\r\nfrom smooth_criminal import mj_mode\r\n\r\nrandom.seed(0)\r\n\r\n@mj_mode\r\ndef identidad(x):\r\n return x\r\n\r\nprint(identidad([1, 2, 3]))\r\n# Posible salida: \"\ud83e\udd41 Jam session with 4 workers!\"\r\n```\r\n\r\nMensajes posibles:\r\n\r\n- \ud83d\udd7a Hee-Hee! You're now smooth.\r\n- \ud83d\ude0e Who's bad? You're bad!\r\n- \ud83c\udfac It's Thriller time!\r\n- \ud83e\udd41 Jam session with 4 workers!\r\n\r\n## \ud83d\udea7 Modo bad_and_dangerous\r\n\r\n````python\r\nfrom smooth_criminal import bad_and_dangerous\r\n\r\ndef fallback(_):\r\n return -1\r\n\r\n@bad_and_dangerous(fallback=fallback)\r\ndef risky(n):\r\n total = 0\r\n for i in range(n):\r\n total += i\r\n return total\r\n\r\nprint(risky(5))\r\n````\r\n\r\n## \ud83e\uddee Vectorizaci\u00f3n segura\r\n\r\n````python\r\nimport numpy as np\r\nfrom smooth_criminal import vectorized, guvectorized\r\n\r\n\r\n@vectorized([\"float64(float64)\"])\r\ndef doble(x):\r\n return x * 2\r\n\r\n\r\n@guvectorized([\"void(float64[:], float64[:], float64[:])\"], \"(n),(n)->(n)\")\r\ndef suma(a, b, res):\r\n for i in range(a.shape[0]):\r\n res[i] = a[i] + b[i]\r\n\r\n\r\nprint(doble(np.array([1.0, 2.0])))\r\nprint(suma(np.array([1.0, 2.0]), np.array([3.0, 4.0])))\r\n````\r\n\r\n## \ud83e\uddea CLI interactiva\r\n\r\n````bash\r\nsmooth-criminal analyze my_script.py\r\n````\r\n\r\nEsto analizar\u00e1 tu c\u00f3digo buscando funciones lentas, bucles, range(), etc.\r\n\r\nPara exportar el historial en distintos formatos:\r\n\r\n````bash\r\nsmooth-criminal export history.xlsx --format xlsx\r\nsmooth-criminal export history.md --format md\r\nsmooth-criminal export history.json --format json\r\n````\r\n\r\nTambi\u00e9n puedes comparar r\u00e1pidamente los backends de `jam` desde la l\u00ednea de comandos:\r\n\r\n````bash\r\nsmooth-criminal jam-test paquete.modulo:funcion --workers 4 --reps 3\r\n````\r\n\r\nSi prefieres un resultado en JSON sin mensajes adicionales, a\u00f1ade `--silent`:\r\n\r\n````bash\r\nsmooth-criminal jam-test paquete.modulo:funcion --workers 4 --reps 3 --silent\r\n````\r\n\r\nEsto mostrar\u00e1 una tabla comparativa de tiempos y, al finalizar sin errores, el mensaje especial:\r\n\r\n```\r\n\ud83c\udfb6 Just jammin' through those CPU cores! \ud83e\udde0\ud83d\udd7a\r\n```\r\n\r\n### \ud83d\udd7a Flag --mj-mode\r\n\r\nActiva efectos especiales al detectar mejoras de rendimiento:\r\n\r\n```bash\r\nsmooth-criminal jam-test paquete.modulo:funcion --workers 4 --mj-mode\r\n```\r\n\r\nCuando el modo est\u00e1 activo y el rendimiento mejora al menos un 10\u00a0%, se\r\nreproducir\u00e1 un peque\u00f1o efecto de Michael Jackson. Si la dependencia\r\n`playsound` no est\u00e1 disponible, se mostrar\u00e1 un mensaje o GIF/ASCII mediante\r\n`rich`. En ausencia de estas dependencias, solo se emitir\u00e1 una advertencia.\r\n\r\n## \ud83c\udf10 API\r\n\r\nLanza una API HTTP para consultar las estad\u00edsticas desde otras aplicaciones:\r\n\r\n```bash\r\nsmooth-criminal api --host 127.0.0.1 --port 8000\r\n```\r\n\r\nDespu\u00e9s puedes obtener los datos con:\r\n\r\n```bash\r\ncurl http://127.0.0.1:8000/history\r\n```\r\n\r\n## \ud83d\udd0c Plugin\r\n\r\nEl directorio `vscode-extension` contiene un plugin para VS Code que integra los comandos de Smooth Criminal.\r\nInst\u00e1lalo con:\r\n\r\n```bash\r\ncd vscode-extension\r\nnpm install\r\nnpm run build\r\n```\r\n\r\nEn VS Code, carga la extensi\u00f3n desde esta carpeta y podr\u00e1s ejecutar an\u00e1lisis desde el editor.\r\n\r\n## \ud83d\udcbe Backends de almacenamiento\r\n\r\nEl historial de ejecuciones se guarda usando un backend configurable.\r\nSelecciona el backend con la variable de entorno `SMOOTH_CRIMINAL_STORAGE`:\r\n\r\n````bash\r\nexport SMOOTH_CRIMINAL_STORAGE=sqlite # json | sqlite | tinydb\r\nsmooth-criminal analyze my_script.py\r\n````\r\n\r\nEl backend `sqlite` no requiere extras. Para `tinydb` instala `tinydb` y para\r\nexportar a `xlsx` instala `openpyxl`.\r\n\r\n## \ud83d\udcda Documentaci\u00f3n\r\n\r\nPr\u00f3ximamente en ReadTheDocs\u2026\r\n\r\nConsulta el [changelog](CHANGELOG.md) para conocer el historial completo de versiones.\r\n\r\n## \ud83d\udce6 Empaquetado\r\n\r\nPara crear una distribuci\u00f3n local y verificar sus metadatos:\r\n\r\n```bash\r\npython -m build\r\ntwine check dist/*\r\n```\r\n\r\n## \ud83d\udcdd Licencia\r\n\r\nMIT \u00a9 Adolfo Gonz\u00e1lez\r\n\r\nEste proyecto incluye bibliotecas de terceros con licencias permisivas, como\r\nFlet (Apache 2.0), Numba y NumPy (BSD-3-Clause) o Rich (MIT). Consulta\r\n[THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md) para el listado completo.\r\n\r\n## \ud83d\ude4f Agradecimientos\r\n\r\n| Colaborador / Tecnolog\u00eda | Rol / Licencia |\r\n|--------------------------|----------------|\r\n| [Adolfo Gonz\u00e1lez](https://github.com/Alphonsus411) | Autor principal |\r\n| Michael Jackson | Inspiraci\u00f3n musical |\r\n| [Flet](https://flet.dev) (Apache 2.0) | Dashboard visual |\r\n| [Numba](https://numba.pydata.org) (BSD-3-Clause) | Aceleraci\u00f3n JIT |\r\n| [NumPy](https://numpy.org) (BSD-3-Clause) | Operaciones vectoriales |\r\n| [Rich](https://rich.readthedocs.io) (MIT) | Salida de consola |\r\n\r\n",
"bugtrack_url": null,
"license": null,
"summary": "Dashboard de an\u00e1lisis de rendimiento con decoradores inteligentes",
"version": "0.8.0",
"project_urls": {
"Documentation": "https://smooth-criminal.readthedocs.io/en/latest/",
"Homepage": "https://github.com/Alphonsus411/smooth_criminal"
},
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "f2683240b48610e71bf8da53b412a326b7961e22c629da4630a196789fcd329b",
"md5": "b208c0846c14b00a06d68a795c79b9b8",
"sha256": "055838cfa4697278fcdf2bbd28cd4f934ffc839c494ac693f655e18548cbedf2"
},
"downloads": -1,
"filename": "smooth_criminal-0.8.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b208c0846c14b00a06d68a795c79b9b8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 31504,
"upload_time": "2025-10-26T18:48:00",
"upload_time_iso_8601": "2025-10-26T18:48:00.614084Z",
"url": "https://files.pythonhosted.org/packages/f2/68/3240b48610e71bf8da53b412a326b7961e22c629da4630a196789fcd329b/smooth_criminal-0.8.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "33948bbcf2820a6ecc5b9685f735a5fc85e51996b9a3ca0ae17a448e802b2f88",
"md5": "f323ec0f824c25e4806c2965bd6838e3",
"sha256": "d206991eca00cafa0df8d24c4b79e42ab84fd23fbdbe8a3e0265073b6c5efd6d"
},
"downloads": -1,
"filename": "smooth_criminal-0.8.0.tar.gz",
"has_sig": false,
"md5_digest": "f323ec0f824c25e4806c2965bd6838e3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 41735,
"upload_time": "2025-10-26T18:48:01",
"upload_time_iso_8601": "2025-10-26T18:48:01.860809Z",
"url": "https://files.pythonhosted.org/packages/33/94/8bbcf2820a6ecc5b9685f735a5fc85e51996b9a3ca0ae17a448e802b2f88/smooth_criminal-0.8.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-26 18:48:01",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Alphonsus411",
"github_project": "smooth_criminal",
"github_not_found": true,
"lcname": "smooth-criminal"
}