jania


Namejania JSON
Version 0.3.16 PyPI version JSON
download
home_pageNone
SummaryMultipurpose python utils
upload_time2025-07-18 07:41:25
maintainerNone
docs_urlNone
authorNone
requires_pythonNone
licenseNone
keywords utils jania
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # JANIA LIB

Librería multipropósito en Python: utilidades para procesamiento de configuración, extracción de datos de PDF usando LLM y limpieza avanzada de JSON.

## Instalación

Requiere Python 3.7 o superior.

```
pip install jania
```

O bien, clona el repositorio:

```
git clone https://github.com/julianin/JANIALIB.git
cd JANIALIB
pip install .
```

## Dependencias

* toml
* PyYAML
* python-dotenv
* pymupdf
* Pillow
* openai

## Funcionalidades principales

### 1. Limpieza y formateo de JSON: `cleanJSON`

Función para extraer, limpiar y formatear el primer bloque JSON válido de un texto (útil para outputs de LLM o APIs poco estrictas).

**Uso básico:**

```python
from jania import cleanJSON
json_str = cleanJSON(raw_text)
```

**Parámetros:**

* `text`: (str) Texto de entrada donde buscar JSON.
* `indent`: (int, opcional) Espacios de indentación para el JSON de salida. Default: 2.
* `debug`: (bool, opcional) Si es True, también devuelve el fragmento corregido que se intentó parsear. Default: False.

**Devuelve:**

* Un string con el JSON limpio y formateado, o None si no se encuentra JSON válido.

**Ejemplo:**

```python
json_str = cleanJSON('output: {a:1, b:2, c:true}')
print(json_str)
# {
#   "a": 1,
#   "b": 2,
#   "c": true
# }
```

### 2. Gestión de configuración: `env` y `env_config`

Utilidades para leer configuración multi-formato y variables de entorno, con prioridad flexible.

#### `env_config(filename)`

Carga un archivo de configuración extra (acepta .py, .toml, .yaml/.yml, .json, .txt). El archivo se usará como fuente prioritaria tras el entorno.

**Uso:**

```python
from jania import env, env_config
env_config('settings.toml')
```

**Parámetro:**

* `filename`: Ruta al archivo de configuración.

#### `env(key, fallback=None)`

Busca el valor de una clave de configuración (str) siguiendo este orden:

1. Variable de entorno
2. Config cargado por `env_config()`
3. config.py
4. settings.toml
5. settings.yaml
6. `fallback` (valor por defecto)

**Uso:**

```python
valor = env('API_KEY', fallback='1234')
```

**Devuelve:**

* Valor de la clave (str) o `fallback` si no se encuentra.

### 3. Extracción y análisis de PDF con LLM: `extractPDF`

Convierte cada página de un PDF a imagen y consulta un modelo LLM Vision (por defecto: gpt-4-vision-preview) para analizarlo.

**Uso típico:**

```python
from jania import extractPDF
with open('documento.pdf', 'rb') as f:
    respuesta = extractPDF(
        prompt='Resume el documento:',
        archivo=f,
        nombre_archivo='documento.pdf',
        model='gpt-4-vision-preview',  # opcional
        max_images=10,                 # opcional
        openai_api_key=None            # opcional
    )
```

**Parámetros:**

* `prompt`: (str) Instrucción para el LLM.
* `archivo`: (BinaryIO) Archivo PDF abierto en modo binario.
* `nombre_archivo`: (str) Nombre del archivo (para almacenamiento temporal).
* `model`: (str, opcional) Modelo de OpenAI Vision a usar. Default: "gpt-4-vision-preview".
* `max_images`: (int, opcional) Número máximo de páginas/imágenes a procesar. Default: 10.
* `openai_api_key`: (str, opcional) API Key de OpenAI. Si no se da, se busca en configuración/env.

**Devuelve:**

* Diccionario con la respuesta del LLM bajo la clave `respuesta_llm`.

**Notas:**

* Requiere la librería `openai` y una API Key válida.
* Si no tienes la clave, colócala en una variable de entorno `OPENAI_API_KEY` o config compatible.

---

## Ejemplo de uso general

```python
from jania import env, env_config
from jania import cleanJSON
from jania import extractPDF

# Configuración
env_config('settings.toml')
clave = env('OPENAI_API_KEY')

# Limpieza de JSON
json_str = cleanJSON('Responde en json: {"x":1, "y":true, "z":null}')

# Análisis de PDF
with open('ejemplo.pdf', 'rb') as f:
    resultado = extractPDF('Describe cada página', f, 'ejemplo.pdf', openai_api_key=clave)
    print(resultado['respuesta_llm'])
```

---

## Licencia

MIT

## Autor

Julian Ania

## NOTES
```bash
git tag -a v0.3.1 -m "Release v0.3.1"
git push origin  v0.3.1
```
  

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "jania",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "utils, jania",
    "author": null,
    "author_email": "Julian Ania <julian.ania@zebraventures.eu>",
    "download_url": "https://files.pythonhosted.org/packages/42/37/8efacfe096dec1269a61f5f00118e034740dede563804674727d9d8c5aa7/jania-0.3.16.tar.gz",
    "platform": null,
    "description": "# JANIA LIB\n\nLibrer\u00eda multiprop\u00f3sito en Python: utilidades para procesamiento de configuraci\u00f3n, extracci\u00f3n de datos de PDF usando LLM y limpieza avanzada de JSON.\n\n## Instalaci\u00f3n\n\nRequiere Python 3.7 o superior.\n\n```\npip install jania\n```\n\nO bien, clona el repositorio:\n\n```\ngit clone https://github.com/julianin/JANIALIB.git\ncd JANIALIB\npip install .\n```\n\n## Dependencias\n\n* toml\n* PyYAML\n* python-dotenv\n* pymupdf\n* Pillow\n* openai\n\n## Funcionalidades principales\n\n### 1. Limpieza y formateo de JSON: `cleanJSON`\n\nFunci\u00f3n para extraer, limpiar y formatear el primer bloque JSON v\u00e1lido de un texto (\u00fatil para outputs de LLM o APIs poco estrictas).\n\n**Uso b\u00e1sico:**\n\n```python\nfrom jania import cleanJSON\njson_str = cleanJSON(raw_text)\n```\n\n**Par\u00e1metros:**\n\n* `text`: (str) Texto de entrada donde buscar JSON.\n* `indent`: (int, opcional) Espacios de indentaci\u00f3n para el JSON de salida. Default: 2.\n* `debug`: (bool, opcional) Si es True, tambi\u00e9n devuelve el fragmento corregido que se intent\u00f3 parsear. Default: False.\n\n**Devuelve:**\n\n* Un string con el JSON limpio y formateado, o None si no se encuentra JSON v\u00e1lido.\n\n**Ejemplo:**\n\n```python\njson_str = cleanJSON('output: {a:1, b:2, c:true}')\nprint(json_str)\n# {\n#   \"a\": 1,\n#   \"b\": 2,\n#   \"c\": true\n# }\n```\n\n### 2. Gesti\u00f3n de configuraci\u00f3n: `env` y `env_config`\n\nUtilidades para leer configuraci\u00f3n multi-formato y variables de entorno, con prioridad flexible.\n\n#### `env_config(filename)`\n\nCarga un archivo de configuraci\u00f3n extra (acepta .py, .toml, .yaml/.yml, .json, .txt). El archivo se usar\u00e1 como fuente prioritaria tras el entorno.\n\n**Uso:**\n\n```python\nfrom jania import env, env_config\nenv_config('settings.toml')\n```\n\n**Par\u00e1metro:**\n\n* `filename`: Ruta al archivo de configuraci\u00f3n.\n\n#### `env(key, fallback=None)`\n\nBusca el valor de una clave de configuraci\u00f3n (str) siguiendo este orden:\n\n1. Variable de entorno\n2. Config cargado por `env_config()`\n3. config.py\n4. settings.toml\n5. settings.yaml\n6. `fallback` (valor por defecto)\n\n**Uso:**\n\n```python\nvalor = env('API_KEY', fallback='1234')\n```\n\n**Devuelve:**\n\n* Valor de la clave (str) o `fallback` si no se encuentra.\n\n### 3. Extracci\u00f3n y an\u00e1lisis de PDF con LLM: `extractPDF`\n\nConvierte cada p\u00e1gina de un PDF a imagen y consulta un modelo LLM Vision (por defecto: gpt-4-vision-preview) para analizarlo.\n\n**Uso t\u00edpico:**\n\n```python\nfrom jania import extractPDF\nwith open('documento.pdf', 'rb') as f:\n    respuesta = extractPDF(\n        prompt='Resume el documento:',\n        archivo=f,\n        nombre_archivo='documento.pdf',\n        model='gpt-4-vision-preview',  # opcional\n        max_images=10,                 # opcional\n        openai_api_key=None            # opcional\n    )\n```\n\n**Par\u00e1metros:**\n\n* `prompt`: (str) Instrucci\u00f3n para el LLM.\n* `archivo`: (BinaryIO) Archivo PDF abierto en modo binario.\n* `nombre_archivo`: (str) Nombre del archivo (para almacenamiento temporal).\n* `model`: (str, opcional) Modelo de OpenAI Vision a usar. Default: \"gpt-4-vision-preview\".\n* `max_images`: (int, opcional) N\u00famero m\u00e1ximo de p\u00e1ginas/im\u00e1genes a procesar. Default: 10.\n* `openai_api_key`: (str, opcional) API Key de OpenAI. Si no se da, se busca en configuraci\u00f3n/env.\n\n**Devuelve:**\n\n* Diccionario con la respuesta del LLM bajo la clave `respuesta_llm`.\n\n**Notas:**\n\n* Requiere la librer\u00eda `openai` y una API Key v\u00e1lida.\n* Si no tienes la clave, col\u00f3cala en una variable de entorno `OPENAI_API_KEY` o config compatible.\n\n---\n\n## Ejemplo de uso general\n\n```python\nfrom jania import env, env_config\nfrom jania import cleanJSON\nfrom jania import extractPDF\n\n# Configuraci\u00f3n\nenv_config('settings.toml')\nclave = env('OPENAI_API_KEY')\n\n# Limpieza de JSON\njson_str = cleanJSON('Responde en json: {\"x\":1, \"y\":true, \"z\":null}')\n\n# An\u00e1lisis de PDF\nwith open('ejemplo.pdf', 'rb') as f:\n    resultado = extractPDF('Describe cada p\u00e1gina', f, 'ejemplo.pdf', openai_api_key=clave)\n    print(resultado['respuesta_llm'])\n```\n\n---\n\n## Licencia\n\nMIT\n\n## Autor\n\nJulian Ania\n\n## NOTES\n```bash\ngit tag -a v0.3.1 -m \"Release v0.3.1\"\ngit push origin  v0.3.1\n```\n  \n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Multipurpose python utils",
    "version": "0.3.16",
    "project_urls": {
        "Homepage": "https://github.com/julianin/JANIALIB"
    },
    "split_keywords": [
        "utils",
        " jania"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "47dd65f6fb26f2a3a815556660a5f527ebbccad77975f100a959c73d8c3f5807",
                "md5": "f8a8983caaaec9e6c671913c3b504e03",
                "sha256": "d81e1541a0ca62602992df0d74a7bcf49078235714c1eda8d8f7c94485ecd20e"
            },
            "downloads": -1,
            "filename": "jania-0.3.16-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f8a8983caaaec9e6c671913c3b504e03",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 6969,
            "upload_time": "2025-07-18T07:41:24",
            "upload_time_iso_8601": "2025-07-18T07:41:24.186531Z",
            "url": "https://files.pythonhosted.org/packages/47/dd/65f6fb26f2a3a815556660a5f527ebbccad77975f100a959c73d8c3f5807/jania-0.3.16-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "42378efacfe096dec1269a61f5f00118e034740dede563804674727d9d8c5aa7",
                "md5": "74077fc814e6a6b51d62f8dd04b9d368",
                "sha256": "55f9ece605b6700088b0610cdb742fb602b5a7c002f72a2938174a5e84a3b0be"
            },
            "downloads": -1,
            "filename": "jania-0.3.16.tar.gz",
            "has_sig": false,
            "md5_digest": "74077fc814e6a6b51d62f8dd04b9d368",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 6183,
            "upload_time": "2025-07-18T07:41:25",
            "upload_time_iso_8601": "2025-07-18T07:41:25.455954Z",
            "url": "https://files.pythonhosted.org/packages/42/37/8efacfe096dec1269a61f5f00118e034740dede563804674727d9d8c5aa7/jania-0.3.16.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-18 07:41:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "julianin",
    "github_project": "JANIALIB",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "jania"
}
        
Elapsed time: 1.82074s