eco-back 0.1.0__tar.gz → 0.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. {eco_back-0.1.0/src/eco_back.egg-info → eco_back-0.2.1}/PKG-INFO +14 -6
  2. {eco_back-0.1.0 → eco_back-0.2.1}/README.md +161 -155
  3. {eco_back-0.1.0 → eco_back-0.2.1}/pyproject.toml +3 -1
  4. eco_back-0.2.1/src/eco_back/__init__.py +13 -0
  5. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/api/registro.py +3 -0
  6. eco_back-0.2.1/src/eco_back/documento/__init__.py +6 -0
  7. eco_back-0.2.1/src/eco_back/documento/anexos.py +481 -0
  8. eco_back-0.2.1/src/eco_back/registro/__init__.py +7 -0
  9. eco_back-0.2.1/src/eco_back/registro/trazabilidad.py +27 -0
  10. {eco_back-0.1.0 → eco_back-0.2.1/src/eco_back.egg-info}/PKG-INFO +14 -6
  11. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back.egg-info/SOURCES.txt +5 -0
  12. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back.egg-info/requires.txt +2 -0
  13. eco_back-0.2.1/tests/test_anexos.py +277 -0
  14. eco_back-0.1.0/src/eco_back/__init__.py +0 -11
  15. {eco_back-0.1.0 → eco_back-0.2.1}/LICENSE +0 -0
  16. {eco_back-0.1.0 → eco_back-0.2.1}/MANIFEST.in +0 -0
  17. {eco_back-0.1.0 → eco_back-0.2.1}/setup.cfg +0 -0
  18. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/api/__init__.py +0 -0
  19. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/api/client.py +0 -0
  20. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/api/config.py +0 -0
  21. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/database/__init__.py +0 -0
  22. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/database/config.py +0 -0
  23. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/database/connection.py +0 -0
  24. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/database/models.py +0 -0
  25. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/database/postgis.py +0 -0
  26. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back/database/repository.py +0 -0
  27. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back.egg-info/dependency_links.txt +0 -0
  28. {eco_back-0.1.0 → eco_back-0.2.1}/src/eco_back.egg-info/top_level.txt +0 -0
  29. {eco_back-0.1.0 → eco_back-0.2.1}/tests/test_api.py +0 -0
  30. {eco_back-0.1.0 → eco_back-0.2.1}/tests/test_database.py +0 -0
  31. {eco_back-0.1.0 → eco_back-0.2.1}/tests/test_example.py +0 -0
  32. {eco_back-0.1.0 → eco_back-0.2.1}/tests/test_postgis.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: eco-back
3
- Version: 0.1.0
3
+ Version: 0.2.1
4
4
  Summary: Librería Python eco-back
5
5
  Author-email: EI UNP <ecosistema@unp.gov.co>
6
6
  License: MIT
@@ -22,6 +22,8 @@ License-File: LICENSE
22
22
  Requires-Dist: psycopg2-binary>=2.9.0
23
23
  Requires-Dist: geoalchemy2>=0.14.0
24
24
  Requires-Dist: requests>=2.31.0
25
+ Requires-Dist: djangorestframework>=3.14.0
26
+ Requires-Dist: django>=4.0.0
25
27
  Provides-Extra: dev
26
28
  Requires-Dist: pytest>=7.0; extra == "dev"
27
29
  Requires-Dist: pytest-cov>=4.0; extra == "dev"
@@ -34,16 +36,16 @@ Requires-Dist: shapely>=2.0.0; extra == "geo"
34
36
  Requires-Dist: geojson>=3.0.0; extra == "geo"
35
37
  Dynamic: license-file
36
38
 
37
- # eco-back
39
+ # eco-back
38
40
 
39
41
  Librería Python para backend con soporte para PostgreSQL/PostGIS y clientes API
40
42
 
41
43
  ## Características
42
44
 
43
- -**Base de datos**: Conexión y operaciones con PostgreSQL
44
- -**PostGIS**: Operaciones geoespaciales (puntos, polígonos, búsquedas por proximidad)
45
- -**Cliente API**: Cliente HTTP genérico y cliente específico UNP
46
- -**Patrón Repository**: Implementación de patrones de diseño para acceso a datos
45
+ - **Base de datos**: Conexión y operaciones con PostgreSQL
46
+ - **PostGIS**: Operaciones geoespaciales (puntos, polígonos, búsquedas por proximidad)
47
+ - **Cliente API**: Cliente HTTP genérico y cliente específico UNP
48
+ - **Patrón Repository**: Implementación de patrones de diseño para acceso a datos
47
49
 
48
50
  ## Descripción
49
51
 
@@ -51,6 +53,12 @@ eco-back es una librería modular que facilita el desarrollo de aplicaciones bac
51
53
 
52
54
  ## Instalación
53
55
 
56
+ ### Desde PyPI
57
+
58
+ ```bash
59
+ pip install eco-back
60
+ ```
61
+
54
62
  ### Desde el código fuente
55
63
 
56
64
  ```bash
@@ -1,155 +1,161 @@
1
- # eco-back
2
-
3
- Librería Python para backend con soporte para PostgreSQL/PostGIS y clientes API
4
-
5
- ## Características
6
-
7
- -**Base de datos**: Conexión y operaciones con PostgreSQL
8
- -**PostGIS**: Operaciones geoespaciales (puntos, polígonos, búsquedas por proximidad)
9
- -**Cliente API**: Cliente HTTP genérico y cliente específico UNP
10
- -**Patrón Repository**: Implementación de patrones de diseño para acceso a datos
11
-
12
- ## Descripción
13
-
14
- eco-back es una librería modular que facilita el desarrollo de aplicaciones backend, proporcionando abstracciones para bases de datos geoespaciales y consumo de APIs REST.
15
-
16
- ## Instalación
17
-
18
- ### Desde el código fuente
19
-
20
- ```bash
21
- pip install -e .
22
- ```
23
-
24
- ### Para desarrollo
25
-
26
- ```bash
27
- pip install -e ".[dev]"
28
- ```
29
-
30
- ## Uso
31
-
32
- ### Cliente de Consecutivos (UNP)
33
-
34
- ```python
35
- from eco_back.api import Consecutivo
36
-
37
- # Crear cliente
38
- client = Consecutivo(base_url="https://api.unp.example.com")
39
-
40
- # Obtener consecutivo
41
- consecutivo = client.obtener(origen=1)
42
- if consecutivo:
43
- print(f"Consecutivo: {consecutivo}")
44
-
45
- client.close()
46
-
47
- # Forma recomendada: usar context manager
48
- with Consecutivo(base_url="https://api.unp.example.com") as client:
49
- consecutivo = client.obtener(origen=1)
50
- # Usar el consecutivo...
51
- ```
52
-
53
- ### Cliente API Genérico
54
-
55
- ```python
56
- from eco_back.api import APIConfig, APIClient
57
-
58
- config = APIConfig(
59
- base_url="https://api.example.com",
60
- timeout=30,
61
- headers={"Authorization": "Bearer token"}
62
- )
63
-
64
- with APIClient(config) as client:
65
- # GET request
66
- data = client.get("/endpoint")
67
-
68
- # POST request
69
- result = client.post("/endpoint", json={"key": "value"})
70
- ```
71
-
72
- ### Conexión básica a PostgreSQL
73
-
74
- ```python
75
- from eco_back.database import DatabaseConfig, DatabaseConnection
76
-
77
- config = DatabaseConfig(
78
- host="localhost",
79
- port=5432,
80
- database="mi_base_datos",
81
- user="usuario",
82
- password="password"
83
- )
84
-
85
- with DatabaseConnection(config) as db:
86
- resultados = db.execute_query("SELECT * FROM tabla")
87
- for row in resultados:
88
- print(row)
89
- ```
90
-
91
- ### Uso de PostGIS
92
-
93
- ```python
94
- from eco_back.database import DatabaseConfig, DatabaseConnection, PostGISHelper
95
-
96
- config = DatabaseConfig(
97
- host="localhost",
98
- port=5432,
99
- database="mi_db_geo",
100
- user="postgres",
101
- password="password"
102
- )
103
-
104
- with DatabaseConnection(config) as db:
105
- postgis = PostGISHelper(db)
106
-
107
- # Habilitar PostGIS
108
- postgis.enable_postgis()
109
-
110
- # Insertar un punto geográfico
111
- punto_id = postgis.insert_point(
112
- table_name="ubicaciones",
113
- lat=40.4168,
114
- lon=-3.7038,
115
- data={"nombre": "Madrid", "tipo": "ciudad"}
116
- )
117
-
118
- # Buscar puntos cercanos (5km)
119
- cercanos = postgis.find_within_distance(
120
- table_name="ubicaciones",
121
- lat=40.4168,
122
- lon=-3.7038,
123
- distance_meters=5000
124
- )
125
- ```
126
-
127
- ## Desarrollo
128
-
129
- ### Ejecutar tests
130
-
131
- ```bash
132
- pytest
133
- ```
134
-
135
- ### Formatear código
136
-
137
- ```bash
138
- black src/ tests/
139
- ```
140
-
141
- ### Linting
142
-
143
- ```bash
144
- flake8 src/ tests/
145
- ```
146
-
147
- ### Type checking
148
-
149
- ```bash
150
- mypy src/
151
- ```
152
-
153
- ## Licencia
154
-
155
- MIT
1
+ # eco-back
2
+
3
+ Librería Python para backend con soporte para PostgreSQL/PostGIS y clientes API
4
+
5
+ ## Características
6
+
7
+ - **Base de datos**: Conexión y operaciones con PostgreSQL
8
+ - **PostGIS**: Operaciones geoespaciales (puntos, polígonos, búsquedas por proximidad)
9
+ - **Cliente API**: Cliente HTTP genérico y cliente específico UNP
10
+ - **Patrón Repository**: Implementación de patrones de diseño para acceso a datos
11
+
12
+ ## Descripción
13
+
14
+ eco-back es una librería modular que facilita el desarrollo de aplicaciones backend, proporcionando abstracciones para bases de datos geoespaciales y consumo de APIs REST.
15
+
16
+ ## Instalación
17
+
18
+ ### Desde PyPI
19
+
20
+ ```bash
21
+ pip install eco-back
22
+ ```
23
+
24
+ ### Desde el código fuente
25
+
26
+ ```bash
27
+ pip install -e .
28
+ ```
29
+
30
+ ### Para desarrollo
31
+
32
+ ```bash
33
+ pip install -e ".[dev]"
34
+ ```
35
+
36
+ ## Uso
37
+
38
+ ### Cliente de Consecutivos (UNP)
39
+
40
+ ```python
41
+ from eco_back.api import Consecutivo
42
+
43
+ # Crear cliente
44
+ client = Consecutivo(base_url="https://api.unp.example.com")
45
+
46
+ # Obtener consecutivo
47
+ consecutivo = client.obtener(origen=1)
48
+ if consecutivo:
49
+ print(f"Consecutivo: {consecutivo}")
50
+
51
+ client.close()
52
+
53
+ # Forma recomendada: usar context manager
54
+ with Consecutivo(base_url="https://api.unp.example.com") as client:
55
+ consecutivo = client.obtener(origen=1)
56
+ # Usar el consecutivo...
57
+ ```
58
+
59
+ ### Cliente API Genérico
60
+
61
+ ```python
62
+ from eco_back.api import APIConfig, APIClient
63
+
64
+ config = APIConfig(
65
+ base_url="https://api.example.com",
66
+ timeout=30,
67
+ headers={"Authorization": "Bearer token"}
68
+ )
69
+
70
+ with APIClient(config) as client:
71
+ # GET request
72
+ data = client.get("/endpoint")
73
+
74
+ # POST request
75
+ result = client.post("/endpoint", json={"key": "value"})
76
+ ```
77
+
78
+ ### Conexión básica a PostgreSQL
79
+
80
+ ```python
81
+ from eco_back.database import DatabaseConfig, DatabaseConnection
82
+
83
+ config = DatabaseConfig(
84
+ host="localhost",
85
+ port=5432,
86
+ database="mi_base_datos",
87
+ user="usuario",
88
+ password="password"
89
+ )
90
+
91
+ with DatabaseConnection(config) as db:
92
+ resultados = db.execute_query("SELECT * FROM tabla")
93
+ for row in resultados:
94
+ print(row)
95
+ ```
96
+
97
+ ### Uso de PostGIS
98
+
99
+ ```python
100
+ from eco_back.database import DatabaseConfig, DatabaseConnection, PostGISHelper
101
+
102
+ config = DatabaseConfig(
103
+ host="localhost",
104
+ port=5432,
105
+ database="mi_db_geo",
106
+ user="postgres",
107
+ password="password"
108
+ )
109
+
110
+ with DatabaseConnection(config) as db:
111
+ postgis = PostGISHelper(db)
112
+
113
+ # Habilitar PostGIS
114
+ postgis.enable_postgis()
115
+
116
+ # Insertar un punto geográfico
117
+ punto_id = postgis.insert_point(
118
+ table_name="ubicaciones",
119
+ lat=40.4168,
120
+ lon=-3.7038,
121
+ data={"nombre": "Madrid", "tipo": "ciudad"}
122
+ )
123
+
124
+ # Buscar puntos cercanos (5km)
125
+ cercanos = postgis.find_within_distance(
126
+ table_name="ubicaciones",
127
+ lat=40.4168,
128
+ lon=-3.7038,
129
+ distance_meters=5000
130
+ )
131
+ ```
132
+
133
+ ## Desarrollo
134
+
135
+ ### Ejecutar tests
136
+
137
+ ```bash
138
+ pytest
139
+ ```
140
+
141
+ ### Formatear código
142
+
143
+ ```bash
144
+ black src/ tests/
145
+ ```
146
+
147
+ ### Linting
148
+
149
+ ```bash
150
+ flake8 src/ tests/
151
+ ```
152
+
153
+ ### Type checking
154
+
155
+ ```bash
156
+ mypy src/
157
+ ```
158
+
159
+ ## Licencia
160
+
161
+ MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "eco-back"
7
- version = "0.1.0"
7
+ version = "0.2.1"
8
8
  description = "Librería Python eco-back"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -27,6 +27,8 @@ dependencies = [
27
27
  "psycopg2-binary>=2.9.0",
28
28
  "geoalchemy2>=0.14.0",
29
29
  "requests>=2.31.0",
30
+ "djangorestframework>=3.14.0",
31
+ "django>=4.0.0",
30
32
  ]
31
33
 
32
34
  [project.optional-dependencies]
@@ -0,0 +1,13 @@
1
+ """
2
+ eco-back - Librería Python
3
+ """
4
+
5
+ __version__ = "0.2.1"
6
+
7
+ # Módulos principales
8
+ from . import database
9
+ from . import api
10
+ from . import documento
11
+ from . import registro
12
+
13
+ __all__ = ["database", "api", "documento", "registro", "__version__"]
@@ -89,3 +89,6 @@ class Consecutivo:
89
89
  """Context manager exit"""
90
90
  self.close()
91
91
  return False
92
+
93
+
94
+
@@ -0,0 +1,6 @@
1
+ """
2
+ Módulo de gestión de documentos y anexos
3
+ """
4
+ from .anexos import AnexoManager, AnexoConfig
5
+
6
+ __all__ = ['AnexoManager', 'AnexoConfig']