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.
- bormeparserv2-1.0.0/AUTHORS +16 -0
- bormeparserv2-1.0.0/CHANGES.rst +259 -0
- bormeparserv2-1.0.0/LICENSE.txt +674 -0
- bormeparserv2-1.0.0/PKG-INFO +415 -0
- bormeparserv2-1.0.0/README.md +372 -0
- bormeparserv2-1.0.0/bormeparserv2/__init__.py +49 -0
- bormeparserv2-1.0.0/bormeparserv2/_security.py +80 -0
- bormeparserv2-1.0.0/bormeparserv2/_serialization.py +175 -0
- bormeparserv2-1.0.0/bormeparserv2/acto.py +165 -0
- bormeparserv2-1.0.0/bormeparserv2/backends/__init__.py +7 -0
- bormeparserv2-1.0.0/bormeparserv2/backends/base.py +96 -0
- bormeparserv2-1.0.0/bormeparserv2/backends/pypdf/__init__.py +3 -0
- bormeparserv2-1.0.0/bormeparserv2/backends/pypdf/parser.py +659 -0
- bormeparserv2-1.0.0/bormeparserv2/backends/seccion_c/__init__.py +3 -0
- bormeparserv2-1.0.0/bormeparserv2/backends/seccion_c/lxml/__init__.py +3 -0
- bormeparserv2-1.0.0/bormeparserv2/backends/seccion_c/lxml/parser.py +172 -0
- bormeparserv2-1.0.0/bormeparserv2/borme.py +346 -0
- bormeparserv2-1.0.0/bormeparserv2/cargo.py +1028 -0
- bormeparserv2-1.0.0/bormeparserv2/clean.py +93 -0
- bormeparserv2-1.0.0/bormeparserv2/config.py +85 -0
- bormeparserv2-1.0.0/bormeparserv2/download.py +588 -0
- bormeparserv2-1.0.0/bormeparserv2/emisor.py +38 -0
- bormeparserv2-1.0.0/bormeparserv2/examples/BORME-A-2015-27-10.pdf +1055 -3
- bormeparserv2-1.0.0/bormeparserv2/examples/BORME-A-2015-27-28.pdf +16326 -4
- bormeparserv2-1.0.0/bormeparserv2/examples/BORME-C-2011-20488.html +237 -0
- bormeparserv2-1.0.0/bormeparserv2/examples/BORME-C-2011-20488.xml +102 -0
- bormeparserv2-1.0.0/bormeparserv2/examples/BORME-S-20150924.xml +470 -0
- bormeparserv2-1.0.0/bormeparserv2/examples/__init__.py +4 -0
- bormeparserv2-1.0.0/bormeparserv2/exceptions.py +56 -0
- bormeparserv2-1.0.0/bormeparserv2/index.py +779 -0
- bormeparserv2-1.0.0/bormeparserv2/parser.py +52 -0
- bormeparserv2-1.0.0/bormeparserv2/provincia.py +180 -0
- bormeparserv2-1.0.0/bormeparserv2/regex.py +447 -0
- bormeparserv2-1.0.0/bormeparserv2/registro.py +39 -0
- bormeparserv2-1.0.0/bormeparserv2/seccion.py +45 -0
- bormeparserv2-1.0.0/bormeparserv2/sociedad.py +70 -0
- bormeparserv2-1.0.0/bormeparserv2/sumario.py +326 -0
- bormeparserv2-1.0.0/bormeparserv2/utils.py +91 -0
- bormeparserv2-1.0.0/bormeparserv2.egg-info/PKG-INFO +415 -0
- bormeparserv2-1.0.0/bormeparserv2.egg-info/SOURCES.txt +47 -0
- bormeparserv2-1.0.0/bormeparserv2.egg-info/dependency_links.txt +1 -0
- bormeparserv2-1.0.0/bormeparserv2.egg-info/not-zip-safe +1 -0
- bormeparserv2-1.0.0/bormeparserv2.egg-info/requires.txt +5 -0
- bormeparserv2-1.0.0/bormeparserv2.egg-info/top_level.txt +1 -0
- bormeparserv2-1.0.0/pyproject.toml +6 -0
- bormeparserv2-1.0.0/requirements.txt +20 -0
- bormeparserv2-1.0.0/setup.cfg +16 -0
- 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
|