dapla-toolbelt-metadata 0.6.0__py3-none-any.whl → 0.6.2__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 dapla-toolbelt-metadata might be problematic. Click here for more details.
- dapla_metadata/datasets/code_list.py +1 -1
- dapla_metadata/datasets/dataset_parser.py +14 -7
- dapla_metadata/datasets/model_backwards_compatibility.py +3 -4
- dapla_metadata/datasets/model_validation.py +1 -1
- dapla_metadata/datasets/utility/utils.py +1 -1
- dapla_metadata/variable_definitions/_generated/vardef_client/exceptions.py +1 -1
- dapla_metadata/variable_definitions/resources/vardef_model_descriptions_nb.yaml +28 -27
- {dapla_toolbelt_metadata-0.6.0.dist-info → dapla_toolbelt_metadata-0.6.2.dist-info}/METADATA +3 -2
- {dapla_toolbelt_metadata-0.6.0.dist-info → dapla_toolbelt_metadata-0.6.2.dist-info}/RECORD +11 -11
- {dapla_toolbelt_metadata-0.6.0.dist-info → dapla_toolbelt_metadata-0.6.2.dist-info}/WHEEL +1 -1
- {dapla_toolbelt_metadata-0.6.0.dist-info → dapla_toolbelt_metadata-0.6.2.dist-info}/LICENSE +0 -0
|
@@ -7,7 +7,6 @@ from __future__ import annotations
|
|
|
7
7
|
|
|
8
8
|
import pathlib # noqa: TC003 import is needed for docs build
|
|
9
9
|
import re
|
|
10
|
-
import typing as t
|
|
11
10
|
from abc import ABC
|
|
12
11
|
from abc import abstractmethod
|
|
13
12
|
from typing import TYPE_CHECKING
|
|
@@ -56,6 +55,8 @@ KNOWN_FLOAT_TYPES = (
|
|
|
56
55
|
|
|
57
56
|
KNOWN_STRING_TYPES = (
|
|
58
57
|
"string",
|
|
58
|
+
"string[pyarrow]",
|
|
59
|
+
"large_string",
|
|
59
60
|
"str",
|
|
60
61
|
"char",
|
|
61
62
|
"varchar",
|
|
@@ -67,13 +68,18 @@ KNOWN_STRING_TYPES = (
|
|
|
67
68
|
|
|
68
69
|
KNOWN_DATETIME_TYPES = (
|
|
69
70
|
"timestamp",
|
|
71
|
+
"timestamp[s]",
|
|
72
|
+
"timestamp[ms]",
|
|
70
73
|
"timestamp[us]",
|
|
71
74
|
"timestamp[ns]",
|
|
75
|
+
"datetime",
|
|
72
76
|
"datetime64",
|
|
73
|
-
"
|
|
74
|
-
"
|
|
77
|
+
"datetime64[s]",
|
|
78
|
+
"datetime64[ms]",
|
|
79
|
+
"datetime64[us]",
|
|
80
|
+
"datetime64[ns]",
|
|
75
81
|
"date",
|
|
76
|
-
"
|
|
82
|
+
"date32[day]",
|
|
77
83
|
"time",
|
|
78
84
|
)
|
|
79
85
|
|
|
@@ -91,8 +97,6 @@ TYPE_MAP: dict[str, DataType] = {}
|
|
|
91
97
|
for concrete_type, abstract_type in TYPE_CORRESPONDENCE:
|
|
92
98
|
TYPE_MAP.update(dict.fromkeys(concrete_type, abstract_type))
|
|
93
99
|
|
|
94
|
-
TDatasetParser = t.TypeVar("TDatasetParser", bound="DatasetParser")
|
|
95
|
-
|
|
96
100
|
|
|
97
101
|
class DatasetParser(ABC):
|
|
98
102
|
"""Abstract Base Class for all Dataset parsers.
|
|
@@ -118,7 +122,7 @@ class DatasetParser(ABC):
|
|
|
118
122
|
# Gzipped parquet files can be read with DatasetParserParquet
|
|
119
123
|
match = re.search(PARQUET_GZIP_FILE_SUFFIX, str(dataset).lower())
|
|
120
124
|
file_type = PARQUET_GZIP_FILE_SUFFIX if match else file_type
|
|
121
|
-
# Extract the appropriate reader class from the SUPPORTED_FILE_TYPES dict
|
|
125
|
+
# Extract the appropriate reader class from the SUPPORTED_FILE_TYPES dict
|
|
122
126
|
reader = SUPPORTED_DATASET_FILE_SUFFIXES[file_type](dataset)
|
|
123
127
|
except IndexError as e:
|
|
124
128
|
# Thrown when just one element is returned from split, meaning there is no file extension supplied
|
|
@@ -149,6 +153,9 @@ class DatasetParser(ABC):
|
|
|
149
153
|
|
|
150
154
|
Arguments:
|
|
151
155
|
data_type: The concrete data type to map.
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
The abstract data type or None
|
|
152
159
|
"""
|
|
153
160
|
return TYPE_MAP.get(data_type.lower(), None)
|
|
154
161
|
|
|
@@ -15,8 +15,8 @@ from __future__ import annotations
|
|
|
15
15
|
|
|
16
16
|
from collections import OrderedDict
|
|
17
17
|
from dataclasses import dataclass
|
|
18
|
-
from datetime import UTC
|
|
19
18
|
from datetime import datetime
|
|
19
|
+
from datetime import timezone
|
|
20
20
|
from typing import TYPE_CHECKING
|
|
21
21
|
from typing import Any
|
|
22
22
|
|
|
@@ -160,8 +160,7 @@ def _remove_element_from_model(
|
|
|
160
160
|
element_to_remove: The key of the element to be removed from the metadata
|
|
161
161
|
dictionary.
|
|
162
162
|
"""
|
|
163
|
-
|
|
164
|
-
del supplied_metadata[element_to_remove]
|
|
163
|
+
supplied_metadata.pop(element_to_remove, None)
|
|
165
164
|
|
|
166
165
|
|
|
167
166
|
def _cast_to_date_type(value_to_update: str | None) -> str | None:
|
|
@@ -384,7 +383,7 @@ def handle_version_1_0_0(supplied_metadata: dict[str, Any]) -> dict[str, Any]:
|
|
|
384
383
|
if supplied_metadata["dataset"][field]:
|
|
385
384
|
supplied_metadata["dataset"][field] = datetime.isoformat(
|
|
386
385
|
datetime.fromisoformat(supplied_metadata["dataset"][field]).astimezone(
|
|
387
|
-
tz=
|
|
386
|
+
tz=timezone.utc,
|
|
388
387
|
),
|
|
389
388
|
timespec="seconds",
|
|
390
389
|
)
|
|
@@ -5,11 +5,11 @@ from __future__ import annotations
|
|
|
5
5
|
import logging
|
|
6
6
|
import warnings
|
|
7
7
|
from typing import TYPE_CHECKING
|
|
8
|
-
from typing import Self
|
|
9
8
|
from typing import TextIO
|
|
10
9
|
|
|
11
10
|
from datadoc_model import model
|
|
12
11
|
from pydantic import model_validator
|
|
12
|
+
from typing_extensions import Self
|
|
13
13
|
|
|
14
14
|
from dapla_metadata.datasets.utility.constants import DATE_VALIDATION_MESSAGE
|
|
15
15
|
from dapla_metadata.datasets.utility.constants import NUM_OBLIGATORY_DATASET_FIELDS
|
|
@@ -37,7 +37,7 @@ logger = logging.getLogger(__name__)
|
|
|
37
37
|
|
|
38
38
|
def get_timestamp_now() -> datetime.datetime:
|
|
39
39
|
"""Return a timestamp for the current moment."""
|
|
40
|
-
return datetime.datetime.now(tz=datetime.
|
|
40
|
+
return datetime.datetime.now(tz=datetime.timezone.utc)
|
|
41
41
|
|
|
42
42
|
|
|
43
43
|
def normalize_path(path: str) -> pathlib.Path | CloudPath:
|
|
@@ -152,7 +152,7 @@ class ApiException(OpenApiException):
|
|
|
152
152
|
|
|
153
153
|
def __str__(self):
|
|
154
154
|
"""Custom error messages for exception"""
|
|
155
|
-
error_message = f"({self.status})\
|
|
155
|
+
error_message = f"({self.status})\nReason: {self.reason}\n"
|
|
156
156
|
if self.headers:
|
|
157
157
|
error_message += f"HTTP response headers: {self.headers}\n"
|
|
158
158
|
|
|
@@ -8,29 +8,33 @@ short_name: |
|
|
|
8
8
|
definition: |
|
|
9
9
|
En definisjon skal beskrive hva variabelen betyr og være så kort og presis som mulig. Mer utfyllende opplysninger kan legges i Merknad-feltet.
|
|
10
10
|
classification_reference: |
|
|
11
|
-
|
|
11
|
+
ID av en klassifikasjon eller kodeliste fra KLASS som beskriver verdiene variabelen kan anta.
|
|
12
|
+
For eksempel vil variabelen 'Sivilstand' ha klassifikasjon 'Standard for sivilstand' (kan vises på https://www.ssb.no/klass/klassifikasjoner/19 ) som har ID 19.
|
|
12
13
|
unit_types: |
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
Enhetstyper - enhetene som beskrives av denne variabelen. Variabelen “sivilstand” vil f.eks. ha enhetstypen person, mens f.eks. “Produsentpris for tjenester” vil ha både foretak og bedrift som enhetstyper siden variabelen kan beskrive begge.
|
|
15
|
+
Verdier skal være koder fra: https://www.ssb.no/klass/klassifikasjoner/702.
|
|
15
16
|
subject_fields: |
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
Statistikkområder som variabelen brukes innenfor. For eksempel tilhører variabelen “Sivilstand” statistikkområdet “Befolkning”.
|
|
18
|
+
Verdier skal være koder fra https://www.ssb.no/klass/klassifikasjoner/618.
|
|
18
19
|
contains_special_categories_of_personal_data: |
|
|
19
|
-
Viser om variabelen inneholder spesielt sensitive personopplysninger
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
Viser om variabelen inneholder spesielt sensitive personopplysninger.
|
|
21
|
+
Kategorier:
|
|
22
|
+
- opplysninger om etnisk opprinnelse
|
|
23
|
+
- opplysninger om politisk oppfatning
|
|
24
|
+
- opplysninger om religion
|
|
25
|
+
- opplysninger om filosofisk overbevisning
|
|
26
|
+
- opplysninger om fagforeningsmedlemskap
|
|
27
|
+
- genetiske opplysninger
|
|
28
|
+
- biometriske opplysninger med det formål å entydig identifisere noen
|
|
29
|
+
- helseopplysninger
|
|
30
|
+
- opplysninger om seksuelle forhold
|
|
31
|
+
- opplysninger om seksuell legning
|
|
32
|
+
ref: https://lovdata.no/dokument/NL/lov/2018-06-15-38/KAPITTEL_gdpr-2#gdpr/a9
|
|
30
33
|
measurement_type: |
|
|
31
|
-
Måletype som en kvantitativ variabelen tilhører, f.eks. valuta, areal osv.
|
|
34
|
+
Måletype som en kvantitativ variabelen tilhører, f.eks. valuta, areal osv.
|
|
35
|
+
Verdien skal være en kode fra: https://www.ssb.no/klass/klassifikasjoner/303
|
|
32
36
|
valid_from: |
|
|
33
|
-
Datoen variabeldefinisjonen er gyldig
|
|
37
|
+
Datoen variabeldefinisjonen er gyldig f.o.m.
|
|
34
38
|
valid_until: |
|
|
35
39
|
Datoen variabeldefinisjonens var gyldig t.o.m. Settes hvis definisjonen skal erstattet av en ny definisjon (med en ny gyldighetsperiode), eller variabelen ikke lenger skal brukes.
|
|
36
40
|
external_reference_uri: |
|
|
@@ -38,11 +42,11 @@ external_reference_uri: |
|
|
|
38
42
|
comment: |
|
|
39
43
|
Her kan en sette inn eventuelle tilleggsopplysninger som ikke hører hjemme i selve definisjonen. Variabelen “Landbakgrunn” har f.eks. merknaden “Fra og med 1.1.2003 ble definisjon endret til også å trekke inn besteforeldrenes fødeland”.
|
|
40
44
|
related_variable_definition_uris: |
|
|
41
|
-
Her kan en legge inn
|
|
45
|
+
Her kan en legge inn URIer til andre variabler som er relevante. Eksempelvis er variabelen “Inntekt etter skatt” en beregnet variabel der “Yrkesinntekter” og “Kapitalinntekter” inngår i beregningen. En kan da legge inn deres URI-er i dette feltet.
|
|
42
46
|
contact: |
|
|
43
47
|
Her dokumenterer en navn og epost for person eller gruppe som kan svare på spørsmål.
|
|
44
48
|
variable_status: |
|
|
45
|
-
Livssyklus for variabelen.
|
|
49
|
+
Livssyklus for variabelen.
|
|
46
50
|
id: |
|
|
47
51
|
Unik SSB identifikator for variabeldefinisjonen. Denne blir maskingenerert.
|
|
48
52
|
Variabeldefinisjoner med ulike gyldighetsperioder har samme ID (og samme kortnavn).
|
|
@@ -50,14 +54,11 @@ patch_id: |
|
|
|
50
54
|
Løpenummer som identifiserer en patch, endring, for en variabeldefinisjon.
|
|
51
55
|
owner: |
|
|
52
56
|
Eier av variabelen dvs. ansvarlig Dapla-team (statistikk-team) og informasjon om tilgangsstyringsgrupper. Team-tilhørighet settes automatisk til det samme som teamtilhørigheten til den som oppretter variabelen.
|
|
53
|
-
Eksempel:
|
|
54
|
-
team: ledstil
|
|
55
|
-
groups: [developers]
|
|
56
57
|
created_at: |
|
|
57
|
-
|
|
58
|
+
Tidsstempelet da variabelen ble opprettet. Denne er maskingenerert.
|
|
58
59
|
created_by: |
|
|
59
|
-
Personen som har opprettet variabelen
|
|
60
|
+
Personen som har opprettet variabelen. Dette er maskingenerert.
|
|
60
61
|
last_updated_at: |
|
|
61
|
-
|
|
62
|
+
Tidsstempelet da variabelen sist ble oppdatert. Denne er maskingenerert.
|
|
62
63
|
last_updated_by: |
|
|
63
|
-
Personen
|
|
64
|
+
Personen som sist utførte en endring i variabelen. Denne er maskingenerert.
|
{dapla_toolbelt_metadata-0.6.0.dist-info → dapla_toolbelt_metadata-0.6.2.dist-info}/METADATA
RENAMED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: dapla-toolbelt-metadata
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.2
|
|
4
4
|
Summary: Dapla Toolbelt Metadata
|
|
5
5
|
License: MIT
|
|
6
6
|
Author: Team Metadata
|
|
7
7
|
Author-email: metadata@ssb.no
|
|
8
|
-
Requires-Python: >=3.
|
|
8
|
+
Requires-Python: >=3.10,<4.0
|
|
9
9
|
Classifier: Development Status :: 4 - Beta
|
|
10
10
|
Classifier: License :: OSI Approved :: MIT License
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
12
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
13
14
|
Classifier: Programming Language :: Python :: 3.12
|
|
14
15
|
Classifier: Programming Language :: Python :: 3.13
|
|
@@ -6,20 +6,20 @@ dapla_metadata/_shared/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
|
6
6
|
dapla_metadata/dapla/__init__.py,sha256=tkapF-YwmruPPrKvN3pEoCZqb7xvJx_ogBM8XyGMuJI,130
|
|
7
7
|
dapla_metadata/dapla/user_info.py,sha256=bENez-ICt9ySR8orYebO68Q3_2LkIW9QTL58DTctmEQ,4833
|
|
8
8
|
dapla_metadata/datasets/__init__.py,sha256=TvzskpdFC6hGcC9_55URT5jr5wNAPzXuISd2UjJWM_8,280
|
|
9
|
-
dapla_metadata/datasets/code_list.py,sha256=
|
|
9
|
+
dapla_metadata/datasets/code_list.py,sha256=kp1O6sUiUAP9WKlWY8IgHWx_1IOzJA63WveHqolgKmg,9082
|
|
10
10
|
dapla_metadata/datasets/core.py,sha256=gp-zTJyn5Z_9bbmHF749OUx0kpYviiDAP9MDwSZiRW8,21768
|
|
11
11
|
dapla_metadata/datasets/dapla_dataset_path_info.py,sha256=zdkVjxlqXMBe7eTAneUrTDP0_fx7JsEQ_0JrKjREhfU,26854
|
|
12
|
-
dapla_metadata/datasets/dataset_parser.py,sha256=
|
|
12
|
+
dapla_metadata/datasets/dataset_parser.py,sha256=bc3KOIDQGgdZMPh3XVHhiKMsY6FxIY9glvGlwTM4g7I,8233
|
|
13
13
|
dapla_metadata/datasets/external_sources/__init__.py,sha256=qvIdXwqyEmXNUCB94ZtZXRzifdW4hiXASFFPtC70f6E,83
|
|
14
14
|
dapla_metadata/datasets/external_sources/external_sources.py,sha256=9eIcOIUbaodNX1w9Tj2wl4U4wUmr5kF1R0i01fKUzGs,2974
|
|
15
|
-
dapla_metadata/datasets/model_backwards_compatibility.py,sha256=
|
|
16
|
-
dapla_metadata/datasets/model_validation.py,sha256=
|
|
15
|
+
dapla_metadata/datasets/model_backwards_compatibility.py,sha256=RKhi6cjqmPKW8lTYQ0mIXTAwhMGo_X-QMad4Y5tvq_0,19136
|
|
16
|
+
dapla_metadata/datasets/model_validation.py,sha256=pGT-jqaQQY4z7jz-7UQd0BQoTWDxDWPYAnDoRC2vd_c,6818
|
|
17
17
|
dapla_metadata/datasets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
18
|
dapla_metadata/datasets/statistic_subject_mapping.py,sha256=QdC22DUBOdRgsfmTTEUr9CKCE8fKjMq6-Ezdr6Eof_A,6254
|
|
19
19
|
dapla_metadata/datasets/utility/__init__.py,sha256=pp6tUcgUbo8iq9OPtFKQrTbLuI3uY7NHptwWSTpasOU,33
|
|
20
20
|
dapla_metadata/datasets/utility/constants.py,sha256=SqZMc1v8rO2b_nRFJR7frVd0TAGvvxzIPEIzkqOuBSw,2444
|
|
21
21
|
dapla_metadata/datasets/utility/enums.py,sha256=SpV4xlmP1YMaJPbmX03hqRLHUOhXIk5gquTeJ8G_5OE,432
|
|
22
|
-
dapla_metadata/datasets/utility/utils.py,sha256=
|
|
22
|
+
dapla_metadata/datasets/utility/utils.py,sha256=fAevz9X0PHw-JL0_4V0geTkoBV31qoO7-dVLFJaIfbo,18370
|
|
23
23
|
dapla_metadata/standards/__init__.py,sha256=n8jnMrudLuScSdfQ4UMJorc-Ptg3Y1-ilT8zAaQnM70,179
|
|
24
24
|
dapla_metadata/standards/name_validator.py,sha256=VercKsO7bNDEfAXy_oxMadL8KLVhxmmTe0T8sNlwzm0,9179
|
|
25
25
|
dapla_metadata/standards/standard_validators.py,sha256=tcCiCI76wUVtMzXA2oCgdauZc0uGgUi11FKu-t7KGwQ,3767
|
|
@@ -57,7 +57,7 @@ dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriod
|
|
|
57
57
|
dapla_metadata/variable_definitions/_generated/vardef_client/docs/ValidityPeriodsApi.md,sha256=oKw2fbxeUqdR4JcDSFA0nwX5Emroog8OuoaVt7FORJo,8172
|
|
58
58
|
dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableDefinitionsApi.md,sha256=Gm4oBYTzOx0-pZiocAhLWcWukMzk9980pmH38nGCdYE,10812
|
|
59
59
|
dapla_metadata/variable_definitions/_generated/vardef_client/docs/VariableStatus.md,sha256=UL4LmoMEdHA9Nv1XARIe8YMm6e5sA9KOtxkOU-Ujh74,418
|
|
60
|
-
dapla_metadata/variable_definitions/_generated/vardef_client/exceptions.py,sha256=
|
|
60
|
+
dapla_metadata/variable_definitions/_generated/vardef_client/exceptions.py,sha256=YiEZFepEuBfg2aBZcuDSp7NXjk6VL06ecySIOJch13o,8444
|
|
61
61
|
dapla_metadata/variable_definitions/_generated/vardef_client/models/__init__.py,sha256=N-1twqYCOB_s6upaszP4DINO6gh7fFoIZQnFsC8vDX0,3540
|
|
62
62
|
dapla_metadata/variable_definitions/_generated/vardef_client/models/complete_response.py,sha256=EGYcmV_QRqoSwhWyKcNKP5V2QdLbljgpa6Fc9fu9hY8,13411
|
|
63
63
|
dapla_metadata/variable_definitions/_generated/vardef_client/models/contact.py,sha256=QQbiI34m467sFWV4LpN7vLxualKfOq9lns2QlaXPLkc,5551
|
|
@@ -80,10 +80,10 @@ dapla_metadata/variable_definitions/_utils/files.py,sha256=sK6rYKJLGp3nSySLPM9WX
|
|
|
80
80
|
dapla_metadata/variable_definitions/_utils/template_files.py,sha256=hCINDyGFYJtFaWP-0Qjbrv0S6GFkPccIDyKD0KcPtuA,3670
|
|
81
81
|
dapla_metadata/variable_definitions/_utils/variable_definition_files.py,sha256=ePlbsrVl1JNMDUomS-ldYOeOilmcjQy0I5RhorShE2o,2785
|
|
82
82
|
dapla_metadata/variable_definitions/exceptions.py,sha256=z6Gtd84FboDu7vWjC3wathIF7I0gF0imtRhwMkr16lY,7851
|
|
83
|
-
dapla_metadata/variable_definitions/resources/vardef_model_descriptions_nb.yaml,sha256=
|
|
83
|
+
dapla_metadata/variable_definitions/resources/vardef_model_descriptions_nb.yaml,sha256=R5X27c32_Y9WWR1xa-WTYlaVhj9b-p6_gzF_eEWFG_U,4557
|
|
84
84
|
dapla_metadata/variable_definitions/vardef.py,sha256=ZBV8ezGRJ8rsmb2H-ZyVX3-DNnMDPIZsHa7MzlcEkNM,11340
|
|
85
85
|
dapla_metadata/variable_definitions/variable_definition.py,sha256=Q_XjMKaJhPwoM0vyfgYVWKYNAYFX0caNWWthXmQxeNs,14784
|
|
86
|
-
dapla_toolbelt_metadata-0.6.
|
|
87
|
-
dapla_toolbelt_metadata-0.6.
|
|
88
|
-
dapla_toolbelt_metadata-0.6.
|
|
89
|
-
dapla_toolbelt_metadata-0.6.
|
|
86
|
+
dapla_toolbelt_metadata-0.6.2.dist-info/LICENSE,sha256=np3IfD5m0ZUofn_kVzDZqliozuiO6wrktw3LRPjyEiI,1073
|
|
87
|
+
dapla_toolbelt_metadata-0.6.2.dist-info/METADATA,sha256=k9T7kJSEktMYpwiz0ZRO8Ehq1ZE6PimoDOYu4hTOuXI,4917
|
|
88
|
+
dapla_toolbelt_metadata-0.6.2.dist-info/WHEEL,sha256=fGIA9gx4Qxk2KDKeNJCbOEwSrmLtjWCwzBz351GyrPQ,88
|
|
89
|
+
dapla_toolbelt_metadata-0.6.2.dist-info/RECORD,,
|
|
File without changes
|