bormeparserv2 1.0.0__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 (48) hide show
  1. bormeparserv2-1.0.0/AUTHORS +16 -0
  2. bormeparserv2-1.0.0/CHANGES.rst +259 -0
  3. bormeparserv2-1.0.0/LICENSE.txt +674 -0
  4. bormeparserv2-1.0.0/PKG-INFO +415 -0
  5. bormeparserv2-1.0.0/README.md +372 -0
  6. bormeparserv2-1.0.0/bormeparserv2/__init__.py +49 -0
  7. bormeparserv2-1.0.0/bormeparserv2/_security.py +80 -0
  8. bormeparserv2-1.0.0/bormeparserv2/_serialization.py +175 -0
  9. bormeparserv2-1.0.0/bormeparserv2/acto.py +165 -0
  10. bormeparserv2-1.0.0/bormeparserv2/backends/__init__.py +7 -0
  11. bormeparserv2-1.0.0/bormeparserv2/backends/base.py +96 -0
  12. bormeparserv2-1.0.0/bormeparserv2/backends/pypdf/__init__.py +3 -0
  13. bormeparserv2-1.0.0/bormeparserv2/backends/pypdf/parser.py +659 -0
  14. bormeparserv2-1.0.0/bormeparserv2/backends/seccion_c/__init__.py +3 -0
  15. bormeparserv2-1.0.0/bormeparserv2/backends/seccion_c/lxml/__init__.py +3 -0
  16. bormeparserv2-1.0.0/bormeparserv2/backends/seccion_c/lxml/parser.py +172 -0
  17. bormeparserv2-1.0.0/bormeparserv2/borme.py +346 -0
  18. bormeparserv2-1.0.0/bormeparserv2/cargo.py +1028 -0
  19. bormeparserv2-1.0.0/bormeparserv2/clean.py +93 -0
  20. bormeparserv2-1.0.0/bormeparserv2/config.py +85 -0
  21. bormeparserv2-1.0.0/bormeparserv2/download.py +588 -0
  22. bormeparserv2-1.0.0/bormeparserv2/emisor.py +38 -0
  23. bormeparserv2-1.0.0/bormeparserv2/examples/BORME-A-2015-27-10.pdf +1055 -3
  24. bormeparserv2-1.0.0/bormeparserv2/examples/BORME-A-2015-27-28.pdf +16326 -4
  25. bormeparserv2-1.0.0/bormeparserv2/examples/BORME-C-2011-20488.html +237 -0
  26. bormeparserv2-1.0.0/bormeparserv2/examples/BORME-C-2011-20488.xml +102 -0
  27. bormeparserv2-1.0.0/bormeparserv2/examples/BORME-S-20150924.xml +470 -0
  28. bormeparserv2-1.0.0/bormeparserv2/examples/__init__.py +4 -0
  29. bormeparserv2-1.0.0/bormeparserv2/exceptions.py +56 -0
  30. bormeparserv2-1.0.0/bormeparserv2/index.py +779 -0
  31. bormeparserv2-1.0.0/bormeparserv2/parser.py +52 -0
  32. bormeparserv2-1.0.0/bormeparserv2/provincia.py +180 -0
  33. bormeparserv2-1.0.0/bormeparserv2/regex.py +447 -0
  34. bormeparserv2-1.0.0/bormeparserv2/registro.py +39 -0
  35. bormeparserv2-1.0.0/bormeparserv2/seccion.py +45 -0
  36. bormeparserv2-1.0.0/bormeparserv2/sociedad.py +70 -0
  37. bormeparserv2-1.0.0/bormeparserv2/sumario.py +326 -0
  38. bormeparserv2-1.0.0/bormeparserv2/utils.py +91 -0
  39. bormeparserv2-1.0.0/bormeparserv2.egg-info/PKG-INFO +415 -0
  40. bormeparserv2-1.0.0/bormeparserv2.egg-info/SOURCES.txt +47 -0
  41. bormeparserv2-1.0.0/bormeparserv2.egg-info/dependency_links.txt +1 -0
  42. bormeparserv2-1.0.0/bormeparserv2.egg-info/not-zip-safe +1 -0
  43. bormeparserv2-1.0.0/bormeparserv2.egg-info/requires.txt +5 -0
  44. bormeparserv2-1.0.0/bormeparserv2.egg-info/top_level.txt +1 -0
  45. bormeparserv2-1.0.0/pyproject.toml +6 -0
  46. bormeparserv2-1.0.0/requirements.txt +20 -0
  47. bormeparserv2-1.0.0/setup.cfg +16 -0
  48. bormeparserv2-1.0.0/setup.py +85 -0
@@ -0,0 +1,16 @@
1
+ bormeparserv2 — fork mantenido por:
2
+
3
+ Marc Rivero López <mriverolopez@gmail.com>
4
+
5
+ Autor original de bormeparser, sobre el que está construido este
6
+ proyecto:
7
+
8
+ Pablo Castellano <pablo@anche.no>
9
+ https://github.com/PabloCastellano/bormeparser
10
+
11
+ Política de licencia del fork:
12
+
13
+ El paquete completo se distribuye bajo GPL-3.0-or-later.
14
+ Los ficheros Python usan cabeceras SPDX para distinguir código
15
+ heredado, cambios del fork y código nuevo sin relicenciar el
16
+ conjunto fuera de GPL.
@@ -0,0 +1,259 @@
1
+ Changelog for bormeparserv2
2
+ ===========================
3
+
4
+ 1.0.0 (2026-05-24)
5
+ ------------------
6
+
7
+ - **Fork bormeparserv2.** El paquete pasa a llamarse ``bormeparserv2``,
8
+ tanto el nombre de distribución (``pip install bormeparserv2``) como
9
+ el de importación (``import bormeparserv2``). El repositorio nuevo es
10
+ `github.com/seifreed/bormeparserv2
11
+ <https://github.com/seifreed/bormeparserv2>`_, mantenido por Marc
12
+ Rivero López. El proyecto original sigue siendo
13
+ `github.com/PabloCastellano/bormeparser
14
+ <https://github.com/PabloCastellano/bormeparser>`_, de Pablo Castellano
15
+ (`@_pablog <https://x.com/_pablog>`_); todo el crédito de la
16
+ arquitectura y del trabajo previo a la versión 0.5.0 es suyo. La
17
+ variable de entorno para los tests live cambia de ``BORMEPARSER_LIVE``
18
+ a ``BORMEPARSERV2_LIVE``.
19
+ - docs(licensing): añadidas cabeceras SPDX en el código Python,
20
+ atribución explícita de ficheros heredados/nuevos y política clara de
21
+ mantener todo el fork integrado bajo ``GPL-3.0-or-later``.
22
+ - ci(release): añadido workflow de releases por tags ``v*``. Construye
23
+ wheel, sdist, SBOM CycloneDX, informe de calidad y ``SHA256SUMS``, valida
24
+ tests/cobertura/SBOM, publica esos assets en la GitHub Release y sube
25
+ wheel/sdist a PyPI desde el environment ``pypi`` usando
26
+ ``PYPI_API_TOKEN``.
27
+ - build: añadido ``pyproject.toml`` con ``setuptools.build_meta`` como
28
+ backend PEP 517 explícito.
29
+ - fix(docker): pin ``wheel==0.47.0`` y ``--no-cache-dir`` en ambos ``pip
30
+ install`` para cerrar los avisos ``DL3013``/``DL3042`` de hadolint.
31
+ - fix(scripts): los scripts CLI ahora exponen ``main(argv=None) -> int``
32
+ y son testables sin ``subprocess`` (los tests de regresión nuevos
33
+ viven en ``bormeparserv2/tests/test_scripts.py`` y ejercitan cada
34
+ script contra fixtures reales sin mocks).
35
+ - fix(scripts/borme_info): ``-n`` pasa a ``action='append'``; antes
36
+ ``nargs='*'`` se comía el positional ``filename``.
37
+ - fix(scripts/debug_content_pdf): el bucle de páginas se ejecuta dentro
38
+ del ``with open(...)``; pypdf reabre el stream para resolver objetos
39
+ indirectos y la versión anterior fallaba con ``ValueError: seek of
40
+ closed file``.
41
+ - fix(scripts/borme_json_all): ``walk_borme_root`` deja de usar
42
+ ``next(os.walk(...))`` (que disparaba ``StopIteration`` →
43
+ ``RuntimeError`` por PEP 479 cuando faltaba ``pdf/``) y emite ahora
44
+ un ``FileNotFoundError`` con la estructura esperada.
45
+ - fix(scripts/borme_poller): añadido ``argparse`` con ``--help``,
46
+ ``--once``, ``--url``, ``--delay`` y ``--logfile``. Antes ``--help``
47
+ iniciaba el bucle de polling silenciosamente.
48
+ - fix(sumario): ``BormeXML._iter_items`` normaliza acentos y
49
+ mayúsculas al comparar ``provincia``. Antes ``download_borme_pdfs.py
50
+ -p CACERES`` no descargaba nada porque ``"CACERES" != "CÁCERES"``
51
+ (el sumario emite la forma acentuada). Acepta también instancias de
52
+ :class:`Provincia` directamente.
53
+ - fix(config): ``get_config`` reventaba con
54
+ ``configparser.MissingSectionHeaderError`` si ``~/.bormecfg`` estaba
55
+ malformado (cualquier ``import bormeparserv2`` consciente del usuario
56
+ trazaba). Ahora se loguea un warning y se cae a los defaults. Tests
57
+ nuevos en ``ConfigTestCase`` cubren fichero vacío, fichero con
58
+ ``[general]`` que sobreescribe ``borme_root``, y ``CONFIG_FILE`` que
59
+ apunta a un directorio.
60
+ - fix(sumario): ``BormeXML.from_file`` traduce
61
+ ``lxml.etree.XMLSyntaxError`` (fichero vacío, truncado, no XML) a
62
+ ``BormeDoesntExistException`` con un mensaje que apunta al fichero
63
+ problemático. Antes se filtraba el error de ``lxml`` directamente.
64
+ Cubierto en ``test_sumario_edges``.
65
+ - fix(packaging): el sdist no incluía ``requirements.txt``, pero
66
+ ``setup.py:get_install_requires`` lo lee en build-time. Resultado:
67
+ ``pip install bormeparserv2-X.tar.gz`` reventaba con
68
+ ``FileNotFoundError: requirements.txt`` antes de instalar nada.
69
+ ``MANIFEST.in`` ahora lo incluye explícitamente. Cubierto por
70
+ ``test_packaging.SdistShipsAllBuildtimeRequirementsTestCase``.
71
+ - fix(ci): la pipeline de tests usaba ``coverage run --source=bormeparser
72
+ setup.py test``, pero setuptools 72+ eliminó el comando ``test``. Se
73
+ cambia a ``coverage run --source=bormeparserv2 -m unittest discover
74
+ bormeparserv2.tests`` y se elimina ``test_suite="bormeparserv2.tests"``
75
+ de ``setup.py`` (emitía ``UserWarning: Unknown distribution option``).
76
+ El paso de instalación usa ``pip install -e .`` en lugar de
77
+ ``./setup.py develop``.
78
+ - fix(api): la API pública (``get_url_pdf``, ``get_url_pdfs``,
79
+ ``download_pdf``, ``download_pdfs``, ``BormeXML._iter_items``)
80
+ normaliza el parámetro ``provincia`` a través del nuevo
81
+ :meth:`PROVINCIA.coerce`. Antes, pasar el string ASCII ``"CACERES"``
82
+ a ``get_url_pdf`` reventaba con ``AttributeError`` y pasarlo a
83
+ ``get_url_pdfs`` devolvía ``{}`` silenciosamente. ``coerce`` acepta
84
+ instancia, atributo ASCII, nombre con o sin acentos y forma
85
+ bilingüe del sumario (``"VALENCIA/VALÈNCIA"``), y lanza
86
+ ``ValueError`` claro si el nombre es desconocido.
87
+
88
+
89
+ 0.5.0 (2022-09-27)
90
+ ------------------
91
+
92
+ - Actualizadas las dependencias
93
+ - Bormeparser requiere Python 3.6+ ahora
94
+ - Añadido Dockerfile
95
+
96
+
97
+ 0.4.2 (2021-03-01)
98
+ ------------------
99
+
100
+ - Actualizadas las dependencias
101
+
102
+
103
+ 0.4.1 (2021-02-15)
104
+ ------------------
105
+
106
+ - No generar universal wheel (py2 ya no está soportado)
107
+ - Detectar cargo "AUDIT.INDIV."
108
+ - Pequeñas mejoras en scripts check_bormes.py y download_borme_pdf.py
109
+ - Actualizada dependencia lxml (CVE-2020-27783)
110
+
111
+ 0.4.0 (2019-09-18)
112
+ ------------------
113
+
114
+ - Bump requirements
115
+ - Require python 3.5
116
+
117
+
118
+ 0.3.5 (2019-02-18)
119
+ ------------------
120
+
121
+ - Mejora en la detección del encoding de BORME-XML
122
+ - No fallar cuando la cabecera Content-Length no esté presente
123
+ - Pequeños cambios en los niveles de logging
124
+ - download: ajustados los valores por defecto de sleep y threads
125
+ - Borrados los checks de python2
126
+
127
+
128
+ 0.3.4 (2018-09-24)
129
+ ------------------
130
+
131
+ - Nuevo método BormeXML.get_cve_url()
132
+
133
+
134
+ 0.3.3 (2018-09-23)
135
+ ------------------
136
+
137
+ - is_company(): llama a clean_empresa() y comprueba si contiene la palabra "SOCIEDAD"
138
+
139
+
140
+ 0.3.2 (2018-09-23)
141
+ ------------------
142
+
143
+ - Actualización de las dependencias
144
+ - Tests arreglados
145
+ - Nuevo acto mercantil: Adaptación Ley 44/2015
146
+ - download_url() ahora reintenta la descarga si hubo un error
147
+ - BormeXML.save_to_file() crea el directorio si no existe
148
+ - clean_empresa(): quita "EN LIQUIDACION" y "SUCURSAL EN ESPAÑA" del nombre
149
+
150
+
151
+ 0.3.1 (2018-05-29)
152
+ ------------------
153
+
154
+ - Añadidos más tipos de sociedad
155
+ - Borme.from_json: permitir un objeto file como argumento filename
156
+
157
+
158
+ 0.3.0 (2018-03-12)
159
+ ------------------
160
+
161
+ - Eliminado soporte de Python 2
162
+ - Cambios en el formato BORME-JSON
163
+ - Nombres de actos repetidos en el mismo anuncio (issue #3)
164
+ - Usar requests en lugar de urllib
165
+ - Archivo de configuración ~/.bormecfg
166
+ - Mejoras en el parser
167
+ - Añadidos 4 nuevos actos y 41 cargos directivos
168
+ - Borme.to_json ahora permite especificar un path (archivo o directorio) en lugar de solo archivo
169
+ - Borme._set_url evita conexión a Internet si existe BORME-XML
170
+ - Sociedades y registros tienen su propio módulo
171
+ - Funciones de limpieza de datos en bormeparser.clean
172
+ - Incluye nombre del R.M. en BORME-JSON
173
+ - Cambios menores en los scripts
174
+ - Borme.XML devuelve str en lugar de list si solo hay un elemento
175
+ - BormeXML.get_provincias
176
+
177
+ 0.2.4 (2016-09-21)
178
+ ------------------
179
+
180
+ - BormeXML: get_url_pdfs, get_cves y get_sizes ahora permiten especificar sección y provincia
181
+ - Nueva constante ALL_PROVINCIAS en bormeparser.provincia
182
+ - Detección de nuevos tipos de sociedades
183
+ - Scripts: limpieza, uso de argparse en los scripts, unificación de parámetros
184
+ - Mejoras menores en la documentación
185
+ - Nuevos campos "version" y "raw_version" en el formato JSON de BORME
186
+
187
+ 0.2.3 (2016-04-26)
188
+ ------------------
189
+
190
+ - Mejora en el parser de BORME C
191
+
192
+ 0.2.2 (2016-04-26)
193
+ ------------------
194
+
195
+ - Mejoras en el parser de BORME C
196
+
197
+ 0.2.1 (2016-04-25)
198
+ ------------------
199
+
200
+ - Corregidos fallos de compatibilidad con Python 2
201
+
202
+ 0.2 (2016-04-25)
203
+ ----------------
204
+
205
+ - Eliminado primer argumento "date" de BormeXML.get_url_pdfs()
206
+ - Nuevo método: BormeXML.get_urls_cve()
207
+ - Arregladas algunas incompatibilidades con Python 2
208
+ - Nuevas funciones: get_borme_website(), get_url_seccion_c()
209
+ - Se incorpora parser para BORME C
210
+ - Añadido el acto "(Primera inscripcion O.M. 10/6/1.997)"
211
+ - Renombradas constantes y funciones
212
+ - BormeXML: BORME C
213
+ - script download_borme_pdfs_C.py
214
+ - Mejora parsing de cargos repetidos en el mismo acto (issue #4)
215
+
216
+ 0.1.5 (2015-09-25)
217
+ ------------------
218
+
219
+ - Añadidos nuevos cargos
220
+ - Mejoras en setuptools
221
+
222
+ 0.1.4 (2015-09-24)
223
+ ------------------
224
+
225
+ - Grandes mejoras en el parser en general
226
+ - Añadidos cargos y actos nuevos
227
+ - Mejoras en las expresiones regulares
228
+ - Los objetos Provincia ahora son comparables
229
+ - download_pdfs() ahora admite los parámetros seccion y provincia
230
+ - Nuevos scripts: borme_to_json, download_borme_pdfs_A, borme_sort, xml_poller
231
+ - Uso de OrderedDict en lugar de dict
232
+ - Uso de OrderedDict en lugar de dict
233
+ - Usar la librería logging
234
+ - Más tests
235
+ - Actualización de los requisitos
236
+
237
+ 0.1.3 (2015-08-08)
238
+ ------------------
239
+
240
+ - Fixed missing packages that weren't distributed
241
+
242
+ 0.1.2 (2015-08-07)
243
+ ------------------
244
+
245
+ - Fixed UnicodeWarning that caused tests to fail in Python 2
246
+
247
+ 0.1.1 (2015-08-07)
248
+ ------------------
249
+
250
+ - setup.py install now installs requirements
251
+
252
+ 0.1 (2015-08-07)
253
+ ----------------
254
+
255
+ - First release
256
+ - Download and parse BORME PDF files
257
+ - Main parser is PyPDF2
258
+ - Python 2 and 3 support
259
+ - Tests suite