udata 8.0.2.dev29304__py2.py3-none-any.whl → 9.0.0__py2.py3-none-any.whl
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.
Potentially problematic release.
This version of udata might be problematic. Click here for more details.
- udata/__init__.py +1 -1
- udata/core/dataset/rdf.py +18 -4
- udata/core/site/api.py +4 -1
- udata/rdf.py +4 -0
- udata/tests/dataset/test_dataset_rdf.py +17 -2
- udata/tests/site/test_site_rdf.py +16 -0
- {udata-8.0.2.dev29304.dist-info → udata-9.0.0.dist-info}/METADATA +4 -3
- {udata-8.0.2.dev29304.dist-info → udata-9.0.0.dist-info}/RECORD +12 -12
- {udata-8.0.2.dev29304.dist-info → udata-9.0.0.dist-info}/LICENSE +0 -0
- {udata-8.0.2.dev29304.dist-info → udata-9.0.0.dist-info}/WHEEL +0 -0
- {udata-8.0.2.dev29304.dist-info → udata-9.0.0.dist-info}/entry_points.txt +0 -0
- {udata-8.0.2.dev29304.dist-info → udata-9.0.0.dist-info}/top_level.txt +0 -0
udata/__init__.py
CHANGED
udata/core/dataset/rdf.py
CHANGED
|
@@ -22,9 +22,10 @@ from udata.frontend.markdown import parse_html
|
|
|
22
22
|
from udata.core.dataset.models import HarvestDatasetMetadata, HarvestResourceMetadata
|
|
23
23
|
from udata.models import db, ContactPoint
|
|
24
24
|
from udata.rdf import (
|
|
25
|
-
DCAT, DCT, FREQ, SCV, SKOS, SPDX, SCHEMA, EUFREQ, EUFORMAT, IANAFORMAT, VCARD, RDFS,
|
|
26
|
-
namespace_manager, schema_from_rdf, url_from_rdf
|
|
25
|
+
DCAT, DCATAP, DCT, FREQ, SCV, SKOS, SPDX, SCHEMA, EUFREQ, EUFORMAT, IANAFORMAT, VCARD, RDFS,
|
|
26
|
+
HVD_LEGISLATION, namespace_manager, schema_from_rdf, url_from_rdf
|
|
27
27
|
)
|
|
28
|
+
from udata.tags import slug as slugify_tag
|
|
28
29
|
from udata.utils import get_by, safe_unicode
|
|
29
30
|
from udata.uris import endpoint_for
|
|
30
31
|
|
|
@@ -85,6 +86,7 @@ EU_HVD_CATEGORIES = {
|
|
|
85
86
|
"http://data.europa.eu/bna/c_dd313021": "Observation de la terre et environnement",
|
|
86
87
|
"http://data.europa.eu/bna/c_e1da4e07": "Statistiques"
|
|
87
88
|
}
|
|
89
|
+
TAG_TO_EU_HVD_CATEGORIES = {slugify_tag(EU_HVD_CATEGORIES[uri]): uri for uri in EU_HVD_CATEGORIES}
|
|
88
90
|
|
|
89
91
|
|
|
90
92
|
class HTMLDetector(HTMLParser):
|
|
@@ -141,7 +143,7 @@ def owner_to_rdf(dataset, graph=None):
|
|
|
141
143
|
return
|
|
142
144
|
|
|
143
145
|
|
|
144
|
-
def resource_to_rdf(resource, dataset=None, graph=None):
|
|
146
|
+
def resource_to_rdf(resource, dataset=None, graph=None, is_hvd=False):
|
|
145
147
|
'''
|
|
146
148
|
Map a Resource domain model to a DCAT/RDF graph
|
|
147
149
|
'''
|
|
@@ -180,6 +182,9 @@ def resource_to_rdf(resource, dataset=None, graph=None):
|
|
|
180
182
|
checksum.add(SPDX.algorithm, getattr(SPDX, algorithm))
|
|
181
183
|
checksum.add(SPDX.checksumValue, Literal(resource.checksum.value))
|
|
182
184
|
r.add(SPDX.checksum, checksum)
|
|
185
|
+
if is_hvd:
|
|
186
|
+
# DCAT-AP HVD applicable legislation is also expected at the distribution level
|
|
187
|
+
r.add(DCATAP.applicableLegislation, URIRef(HVD_LEGISLATION))
|
|
183
188
|
return r
|
|
184
189
|
|
|
185
190
|
|
|
@@ -214,11 +219,20 @@ def dataset_to_rdf(dataset, graph=None):
|
|
|
214
219
|
if dataset.acronym:
|
|
215
220
|
d.set(SKOS.altLabel, Literal(dataset.acronym))
|
|
216
221
|
|
|
222
|
+
# Add DCAT-AP HVD properties if the dataset is tagged hvd.
|
|
223
|
+
# See https://semiceu.github.io/DCAT-AP/releases/2.2.0-hvd/
|
|
224
|
+
is_hvd = current_app.config['HVD_SUPPORT'] and 'hvd' in dataset.tags
|
|
225
|
+
if is_hvd:
|
|
226
|
+
d.add(DCATAP.applicableLegislation, URIRef(HVD_LEGISLATION))
|
|
227
|
+
|
|
217
228
|
for tag in dataset.tags:
|
|
218
229
|
d.add(DCAT.keyword, Literal(tag))
|
|
230
|
+
# Add HVD category if this dataset is tagged HVD
|
|
231
|
+
if is_hvd and tag in TAG_TO_EU_HVD_CATEGORIES:
|
|
232
|
+
d.add(DCATAP.hvdCategory, URIRef(TAG_TO_EU_HVD_CATEGORIES[tag]))
|
|
219
233
|
|
|
220
234
|
for resource in dataset.resources:
|
|
221
|
-
d.add(DCAT.distribution, resource_to_rdf(resource, dataset, graph))
|
|
235
|
+
d.add(DCAT.distribution, resource_to_rdf(resource, dataset, graph, is_hvd))
|
|
222
236
|
|
|
223
237
|
if dataset.temporal_coverage:
|
|
224
238
|
d.set(DCT.temporal, temporal_to_rdf(dataset.temporal_coverage, graph))
|
udata/core/site/api.py
CHANGED
|
@@ -105,7 +105,10 @@ class SiteRdfCatalogFormat(API):
|
|
|
105
105
|
params = multi_to_dict(request.args)
|
|
106
106
|
page = int(params.get('page', 1))
|
|
107
107
|
page_size = int(params.get('page_size', 100))
|
|
108
|
-
datasets = Dataset.objects.visible()
|
|
108
|
+
datasets = Dataset.objects.visible()
|
|
109
|
+
if 'tag' in params:
|
|
110
|
+
datasets = datasets.filter(tags=params.get('tag', ''))
|
|
111
|
+
datasets = datasets.paginate(page, page_size)
|
|
109
112
|
catalog = build_catalog(current_site, datasets, format=format)
|
|
110
113
|
# bypass flask-restplus make_response, since graph_response
|
|
111
114
|
# is handling the content negociation directly
|
udata/rdf.py
CHANGED
|
@@ -21,6 +21,7 @@ log = logging.getLogger(__name__)
|
|
|
21
21
|
# Extra Namespaces
|
|
22
22
|
ADMS = Namespace('http://www.w3.org/ns/adms#')
|
|
23
23
|
DCAT = Namespace('http://www.w3.org/ns/dcat#')
|
|
24
|
+
DCATAP = Namespace('http://data.europa.eu/r5r/')
|
|
24
25
|
HYDRA = Namespace('http://www.w3.org/ns/hydra/core#')
|
|
25
26
|
SCHEMA = Namespace('http://schema.org/')
|
|
26
27
|
SCV = Namespace('http://purl.org/NET/scovo#')
|
|
@@ -35,6 +36,7 @@ VCARD = Namespace('http://www.w3.org/2006/vcard/ns#')
|
|
|
35
36
|
|
|
36
37
|
namespace_manager = NamespaceManager(Graph())
|
|
37
38
|
namespace_manager.bind('dcat', DCAT)
|
|
39
|
+
namespace_manager.bind('dcatap', DCATAP)
|
|
38
40
|
namespace_manager.bind('dct', DCT)
|
|
39
41
|
namespace_manager.bind('foaf', FOAF)
|
|
40
42
|
namespace_manager.bind('foaf', FOAF)
|
|
@@ -98,6 +100,8 @@ RDF_EXTENSIONS = {
|
|
|
98
100
|
# Includes control characters, unicode surrogate characters and unicode end-of-plane non-characters
|
|
99
101
|
ILLEGAL_XML_CHARS = '[\x00-\x08\x0b\x0c\x0e-\x1F\uD800-\uDFFF\uFFFE\uFFFF]'
|
|
100
102
|
|
|
103
|
+
HVD_LEGISLATION = 'http://data.europa.eu/eli/reg_impl/2023/138/oj'
|
|
104
|
+
|
|
101
105
|
|
|
102
106
|
def guess_format(string):
|
|
103
107
|
'''Guess format given an extension or a mime-type'''
|
|
@@ -18,11 +18,11 @@ from udata.core.dataset.factories import (
|
|
|
18
18
|
from udata.core.dataset.rdf import (
|
|
19
19
|
dataset_to_rdf, dataset_from_rdf, resource_to_rdf, resource_from_rdf,
|
|
20
20
|
temporal_from_rdf, frequency_to_rdf, frequency_from_rdf,
|
|
21
|
-
EU_RDF_REQUENCIES
|
|
21
|
+
EU_RDF_REQUENCIES, TAG_TO_EU_HVD_CATEGORIES
|
|
22
22
|
)
|
|
23
23
|
from udata.core.organization.factories import OrganizationFactory
|
|
24
24
|
from udata.i18n import gettext as _
|
|
25
|
-
from udata.rdf import DCAT, DCT, FREQ, SPDX, SCHEMA, SKOS
|
|
25
|
+
from udata.rdf import DCAT, DCATAP, DCT, FREQ, SPDX, SCHEMA, SKOS, HVD_LEGISLATION
|
|
26
26
|
from udata.utils import faker
|
|
27
27
|
from udata.tests.helpers import assert200, assert_redirects
|
|
28
28
|
|
|
@@ -181,6 +181,21 @@ class DatasetToRdfTest:
|
|
|
181
181
|
assert str(d.identifier) == 'https://somewhere.org/dataset'
|
|
182
182
|
assert d.value(DCT.identifier) == Literal('an-identifier')
|
|
183
183
|
|
|
184
|
+
def test_hvd_dataset(self):
|
|
185
|
+
'''Test that a dataset tagged hvd has appropriate DCAT-AP HVD properties'''
|
|
186
|
+
dataset = DatasetFactory(
|
|
187
|
+
resources=ResourceFactory.build_batch(3),
|
|
188
|
+
tags=['hvd', 'mobilite', 'test']
|
|
189
|
+
)
|
|
190
|
+
d = dataset_to_rdf(dataset)
|
|
191
|
+
|
|
192
|
+
assert d.value(DCATAP.applicableLegislation).identifier == URIRef(HVD_LEGISLATION)
|
|
193
|
+
assert d.value(DCATAP.hvdCategory).identifier == URIRef(
|
|
194
|
+
TAG_TO_EU_HVD_CATEGORIES['mobilite']
|
|
195
|
+
)
|
|
196
|
+
for distrib in d.objects(DCAT.distribution):
|
|
197
|
+
assert distrib.value(DCATAP.applicableLegislation).identifier == URIRef(HVD_LEGISLATION)
|
|
198
|
+
|
|
184
199
|
|
|
185
200
|
@pytest.mark.usefixtures('clean_db')
|
|
186
201
|
class RdfToDatasetTest:
|
|
@@ -228,3 +228,19 @@ class SiteRdfViewsTest:
|
|
|
228
228
|
url = url_for('api.site_rdf_catalog_format', format='unknown')
|
|
229
229
|
response = client.get(url)
|
|
230
230
|
assert404(response)
|
|
231
|
+
|
|
232
|
+
def test_catalog_rdf_filter_tag(self, client):
|
|
233
|
+
DatasetFactory.create_batch(4, tags=['my-tag'])
|
|
234
|
+
DatasetFactory.create_batch(3)
|
|
235
|
+
url = url_for('api.site_rdf_catalog_format', format='xml', tag='my-tag')
|
|
236
|
+
|
|
237
|
+
response = client.get(url, headers={'Accept': 'application/xml'})
|
|
238
|
+
assert200(response)
|
|
239
|
+
|
|
240
|
+
graph = Graph().parse(data=response.data, format='xml')
|
|
241
|
+
|
|
242
|
+
datasets = list(graph.subjects(RDF.type, DCAT.Dataset))
|
|
243
|
+
assert len(datasets) == 4
|
|
244
|
+
|
|
245
|
+
for dat in datasets:
|
|
246
|
+
assert graph.value(dat, DCAT.keyword) == Literal('my-tag')
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: udata
|
|
3
|
-
Version:
|
|
3
|
+
Version: 9.0.0
|
|
4
4
|
Summary: Open data portal
|
|
5
5
|
Home-page: https://github.com/opendatateam/udata
|
|
6
6
|
Author: Opendata Team
|
|
@@ -131,13 +131,14 @@ for publishing udata's roadmap and for building consensus around it.
|
|
|
131
131
|
It is collectively taken care of by members of the
|
|
132
132
|
[OpenDataTeam](https://github.com/opendatateam).
|
|
133
133
|
|
|
134
|
-
[readthedocs-url]: https://udata.readthedocs.io/en/
|
|
134
|
+
[readthedocs-url]: https://udata.readthedocs.io/en/v9.0.0/
|
|
135
135
|
|
|
136
136
|
# Changelog
|
|
137
137
|
|
|
138
|
-
##
|
|
138
|
+
## 9.0.0 (2024-06-07)
|
|
139
139
|
|
|
140
140
|
- **breaking change** Harvest backend is now sync [#3030](https://github.com/opendatateam/udata/pull/3030)
|
|
141
|
+
- Add DCAT-AP HVD properties in RDF output if the dataset is tagged hvd [#3050](https://github.com/opendatateam/udata/pull/3050)
|
|
141
142
|
- Allow dataservices to be discussed and followed [#3049](https://github.com/opendatateam/udata/pull/3049)
|
|
142
143
|
- Add purge-dataservices job [#3049](https://github.com/opendatateam/udata/pull/3049)
|
|
143
144
|
- Harvest all the available polygons from a spatial coverage [#3039](https://github.com/opendatateam/udata/pull/3039)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
tasks/__init__.py,sha256=CnVhb_TV-6nMhxVR6itnBmvuU2OSCs02AfNB4irVBTE,8132
|
|
2
2
|
tasks/helpers.py,sha256=k_HiuiEJNgQLvWdeHqczPOAcrYpFjEepBeKo7EQzY8M,994
|
|
3
|
-
udata/__init__.py,sha256=
|
|
3
|
+
udata/__init__.py,sha256=0vxZaIeafxKPh4JV_Xhv89cGtxvvKmKb2SzyKhiaWQM,97
|
|
4
4
|
udata/api_fields.py,sha256=myHkndhedV3g9cn2FWBu1Hx24Fy-fxaGedEP1ZMOoi0,11506
|
|
5
5
|
udata/app.py,sha256=6upwrImLaWrSYtsXPW1zH84_oRxp3B6XFuocMe2D6NU,7329
|
|
6
6
|
udata/assets.py,sha256=aMa-MnAEXVSTavptSn2V8sUE6jL_N0MrYCQ6_QpsuHs,645
|
|
@@ -9,7 +9,7 @@ udata/errors.py,sha256=chc1880TPGteIL-Rfb9hdeAyZI4vdWZQU3JQ_5VF5t0,116
|
|
|
9
9
|
udata/factories.py,sha256=6en2qdHHoR6rEvNEUeH_0-T-vR7x7GUBGgNEm9vuylE,492
|
|
10
10
|
udata/i18n.py,sha256=E-JoY57Cv4vgPvChkWjpwZAbuYVI8e6BO6raeu_3_Pw,8352
|
|
11
11
|
udata/mail.py,sha256=dAMcbEtk5e54alpQezvF5adDrRPgdaT36QEdHD_5v50,2145
|
|
12
|
-
udata/rdf.py,sha256=
|
|
12
|
+
udata/rdf.py,sha256=0G-orRN5L3E338iXWSih6yZqlj10r-rqBqQN3f38A1U,10051
|
|
13
13
|
udata/routing.py,sha256=Qhpf5p97fs1SoJXtDctc1FPk0MeOKLn_C0Z1dP4ZNJA,7234
|
|
14
14
|
udata/sentry.py,sha256=KiZz0PpmYpZMvykH9UAbHpF4xBY0Q-8DeiEbXEHDUdw,2683
|
|
15
15
|
udata/settings.py,sha256=hoyo2YffL6eEKn90tjtraTMmEMRKfFxiIaDyMv69HMo,17390
|
|
@@ -99,7 +99,7 @@ udata/core/dataset/forms.py,sha256=VJCsGtgzhQgLW-M-J4ObpQ8o6c_saC3TTc1Js33m3sQ,6
|
|
|
99
99
|
udata/core/dataset/models.py,sha256=q6AknSHYNjeUyVKoFgxEA0r9lSvMa_a4tJ3fLOzL03M,36053
|
|
100
100
|
udata/core/dataset/permissions.py,sha256=3F2J7le3_rEYNhh88o3hSRWHAAt01_yHJM6RPmvCrRo,1090
|
|
101
101
|
udata/core/dataset/preview.py,sha256=puPKT3fBD7ezAcT6owh0JK1_rGNDFZOqgT223qGn3LY,2597
|
|
102
|
-
udata/core/dataset/rdf.py,sha256=
|
|
102
|
+
udata/core/dataset/rdf.py,sha256=KGYAyZSEuPh_rz2jRsRC0VlNFn_wSNyOOTLhxL1Rvvk,26116
|
|
103
103
|
udata/core/dataset/search.py,sha256=Ca23ljX7TZiKZKiAZQIH5xwS2tjXQcTDzieAJd-E22c,5314
|
|
104
104
|
udata/core/dataset/signals.py,sha256=TK6dfrOUitZZkGGOh6XmhYqYvIjzZpI70JTLV4k-JRM,161
|
|
105
105
|
udata/core/dataset/tasks.py,sha256=UYdm_O9hA0yo7cCNQFvZE9pGzUshkc3Wr4Gpel2aupU,8434
|
|
@@ -175,7 +175,7 @@ udata/core/reuse/search.py,sha256=I3FX-9YP_cEqw5GFwFv2iqLZExeaQXsak13RMSCN7t8,28
|
|
|
175
175
|
udata/core/reuse/signals.py,sha256=2vv668u8miJ9t6H-FwRgXcWwsYMQem3oLNXp36rKtno,155
|
|
176
176
|
udata/core/reuse/tasks.py,sha256=FgkUN6s1uTDFQgiImiOEfIMYYW984bxxDtlGK0uZ0yY,1530
|
|
177
177
|
udata/core/site/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
178
|
-
udata/core/site/api.py,sha256=
|
|
178
|
+
udata/core/site/api.py,sha256=UXsMV8klzP5wQJazk_HfQGpckvkYddbuF8UJ5u0OBc0,4383
|
|
179
179
|
udata/core/site/factories.py,sha256=8-RwP6QRCxXqWF4UHIkm2NfWRP2p8Ktc5RSY-4jgnfk,378
|
|
180
180
|
udata/core/site/forms.py,sha256=lPnxm0MDhK7_ORzPgJLcCAPMj59hDrJ80gwRSW-jtIo,469
|
|
181
181
|
udata/core/site/models.py,sha256=96IZHtPaMio7VMNCdP1Km_SL1GlMErwBuDqgUXfzKVY,5981
|
|
@@ -617,7 +617,7 @@ udata/tests/dataset/test_dataset_actions.py,sha256=4_0F_TCSCfHpzqDt659c8hG4GpkWj
|
|
|
617
617
|
udata/tests/dataset/test_dataset_commands.py,sha256=TAgVdimIcBVmcSNKXKXbhmCGYRo8Keh_InBNiS6UlkM,802
|
|
618
618
|
udata/tests/dataset/test_dataset_events.py,sha256=zt6F4j_vOBfMxDW6vBVQ5PGwr0d4s6LGw0cGkt9BlvI,2835
|
|
619
619
|
udata/tests/dataset/test_dataset_model.py,sha256=_rvlp3j8ItvF4Dsacx0ymtTbbulrTXBafUcTVo2-N0o,29959
|
|
620
|
-
udata/tests/dataset/test_dataset_rdf.py,sha256=
|
|
620
|
+
udata/tests/dataset/test_dataset_rdf.py,sha256=KgtljY7S55oJiBLYrHG6eMxPdNpDZik7M0z28Ec9Z0U,30105
|
|
621
621
|
udata/tests/dataset/test_dataset_tasks.py,sha256=BN5qcvq6753WcpPOZd7vL1iIEW36ZBZrb2Lszb4eWEM,2283
|
|
622
622
|
udata/tests/dataset/test_resource_preview.py,sha256=q1C9W9dO3nLWaR3-hpUOPYW17hCmQ3raty9Bl4FX3hg,3947
|
|
623
623
|
udata/tests/features/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -661,7 +661,7 @@ udata/tests/site/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
|
|
|
661
661
|
udata/tests/site/test_site_api.py,sha256=XIjRH-iiwKdwmX145bQflxOatfIChi5RLikIMwJSbjQ,2276
|
|
662
662
|
udata/tests/site/test_site_metrics.py,sha256=Sn9dQORwe-fvoyA7ZAnF63Cq5CwUGq1myH8Xe0EtfDA,2263
|
|
663
663
|
udata/tests/site/test_site_model.py,sha256=nAx9JjEKdfjdw1Kj5Rs7P5FEePoATtCuOYPiSXEnVD0,1313
|
|
664
|
-
udata/tests/site/test_site_rdf.py,sha256=
|
|
664
|
+
udata/tests/site/test_site_rdf.py,sha256=NR09qJo8vmyAmtn0qQb-_nat7OyNV2fvwZTqW12BvQA,10283
|
|
665
665
|
udata/tests/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
666
666
|
udata/tests/user/test_user_rdf.py,sha256=HrKirMURUXS9N3If_NMb8qnfJ4kE9IZymR1SPcNvlF0,1851
|
|
667
667
|
udata/tests/workers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -684,9 +684,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=uttB2K8VsqzkEQG-5HfTtFms_3LtV9
|
|
|
684
684
|
udata/translations/pt/LC_MESSAGES/udata.po,sha256=8Ql1Lp7Z9KLnvp-qRxw-NhFu1p35Xj-q6Jg9JHsYhcw,43733
|
|
685
685
|
udata/translations/sr/LC_MESSAGES/udata.mo,sha256=US8beNIMPxP5h-zD_jfP1TheDDd4DdRVS5UIiY5XVZ8,28553
|
|
686
686
|
udata/translations/sr/LC_MESSAGES/udata.po,sha256=TM0yMDvKRljyOzgZZMlTX6OfpF6OC4Ngf_9Zc8n6ayA,50313
|
|
687
|
-
udata-
|
|
688
|
-
udata-
|
|
689
|
-
udata-
|
|
690
|
-
udata-
|
|
691
|
-
udata-
|
|
692
|
-
udata-
|
|
687
|
+
udata-9.0.0.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
|
|
688
|
+
udata-9.0.0.dist-info/METADATA,sha256=miAgWXGUdxqSYGoUGBsAIGQ0pg-9hCvcMq4z9TOWwvQ,123977
|
|
689
|
+
udata-9.0.0.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
|
|
690
|
+
udata-9.0.0.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
|
|
691
|
+
udata-9.0.0.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
|
|
692
|
+
udata-9.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|