ckanapi-harvesters 0.0.0__py3-none-any.whl → 0.0.3__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.
- ckanapi_harvesters/__init__.py +32 -10
- ckanapi_harvesters/auxiliary/__init__.py +26 -0
- ckanapi_harvesters/auxiliary/ckan_action.py +93 -0
- ckanapi_harvesters/auxiliary/ckan_api_key.py +213 -0
- ckanapi_harvesters/auxiliary/ckan_auxiliary.py +293 -0
- ckanapi_harvesters/auxiliary/ckan_configuration.py +50 -0
- ckanapi_harvesters/auxiliary/ckan_defs.py +10 -0
- ckanapi_harvesters/auxiliary/ckan_errors.py +129 -0
- ckanapi_harvesters/auxiliary/ckan_map.py +509 -0
- ckanapi_harvesters/auxiliary/ckan_model.py +992 -0
- ckanapi_harvesters/auxiliary/ckan_vocabulary_deprecated.py +104 -0
- ckanapi_harvesters/auxiliary/deprecated.py +82 -0
- ckanapi_harvesters/auxiliary/error_level_message.py +51 -0
- ckanapi_harvesters/auxiliary/external_code_import.py +98 -0
- ckanapi_harvesters/auxiliary/list_records.py +60 -0
- ckanapi_harvesters/auxiliary/login.py +163 -0
- ckanapi_harvesters/auxiliary/path.py +208 -0
- ckanapi_harvesters/auxiliary/proxy_config.py +298 -0
- ckanapi_harvesters/auxiliary/urls.py +40 -0
- ckanapi_harvesters/builder/__init__.py +40 -0
- ckanapi_harvesters/builder/builder_aux.py +20 -0
- ckanapi_harvesters/builder/builder_ckan.py +238 -0
- ckanapi_harvesters/builder/builder_errors.py +36 -0
- ckanapi_harvesters/builder/builder_field.py +122 -0
- ckanapi_harvesters/builder/builder_package.py +9 -0
- ckanapi_harvesters/builder/builder_package_1_basic.py +1291 -0
- ckanapi_harvesters/builder/builder_package_2_harvesters.py +40 -0
- ckanapi_harvesters/builder/builder_package_3_multi_threaded.py +45 -0
- ckanapi_harvesters/builder/builder_package_example.xlsx +0 -0
- ckanapi_harvesters/builder/builder_resource.py +589 -0
- ckanapi_harvesters/builder/builder_resource_datastore.py +561 -0
- ckanapi_harvesters/builder/builder_resource_datastore_multi_abc.py +367 -0
- ckanapi_harvesters/builder/builder_resource_datastore_multi_folder.py +273 -0
- ckanapi_harvesters/builder/builder_resource_datastore_multi_harvester.py +278 -0
- ckanapi_harvesters/builder/builder_resource_datastore_unmanaged.py +145 -0
- ckanapi_harvesters/builder/builder_resource_datastore_url.py +150 -0
- ckanapi_harvesters/builder/builder_resource_init.py +126 -0
- ckanapi_harvesters/builder/builder_resource_multi_abc.py +361 -0
- ckanapi_harvesters/builder/builder_resource_multi_datastore.py +146 -0
- ckanapi_harvesters/builder/builder_resource_multi_file.py +505 -0
- ckanapi_harvesters/builder/example/__init__.py +21 -0
- ckanapi_harvesters/builder/example/builder_example.py +21 -0
- ckanapi_harvesters/builder/example/builder_example_aux_fun.py +24 -0
- ckanapi_harvesters/builder/example/builder_example_download.py +44 -0
- ckanapi_harvesters/builder/example/builder_example_generate_data.py +73 -0
- ckanapi_harvesters/builder/example/builder_example_patch_upload.py +51 -0
- ckanapi_harvesters/builder/example/builder_example_policy.py +114 -0
- ckanapi_harvesters/builder/example/builder_example_test_sql.py +53 -0
- ckanapi_harvesters/builder/example/builder_example_tests.py +87 -0
- ckanapi_harvesters/builder/example/builder_example_tests_offline.py +57 -0
- ckanapi_harvesters/builder/example/package/ckan-dpg.svg +74 -0
- ckanapi_harvesters/builder/example/package/users_local.csv +3 -0
- ckanapi_harvesters/builder/mapper_datastore.py +93 -0
- ckanapi_harvesters/builder/mapper_datastore_multi.py +262 -0
- ckanapi_harvesters/builder/specific/__init__.py +11 -0
- ckanapi_harvesters/builder/specific/configuration_builder.py +66 -0
- ckanapi_harvesters/builder/specific_builder_abc.py +23 -0
- ckanapi_harvesters/ckan_api/__init__.py +20 -0
- ckanapi_harvesters/ckan_api/ckan_api.py +11 -0
- ckanapi_harvesters/ckan_api/ckan_api_0_base.py +896 -0
- ckanapi_harvesters/ckan_api/ckan_api_1_map.py +1028 -0
- ckanapi_harvesters/ckan_api/ckan_api_2_readonly.py +934 -0
- ckanapi_harvesters/ckan_api/ckan_api_3_policy.py +229 -0
- ckanapi_harvesters/ckan_api/ckan_api_4_readwrite.py +579 -0
- ckanapi_harvesters/ckan_api/ckan_api_5_manage.py +1225 -0
- ckanapi_harvesters/ckan_api/ckan_api_params.py +192 -0
- ckanapi_harvesters/ckan_api/deprecated/__init__.py +9 -0
- ckanapi_harvesters/ckan_api/deprecated/ckan_api_deprecated.py +267 -0
- ckanapi_harvesters/ckan_api/deprecated/ckan_api_deprecated_vocabularies.py +189 -0
- ckanapi_harvesters/harvesters/__init__.py +23 -0
- ckanapi_harvesters/harvesters/data_cleaner/__init__.py +17 -0
- ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_abc.py +240 -0
- ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_errors.py +23 -0
- ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_upload.py +9 -0
- ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_upload_1_basic.py +430 -0
- ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_upload_2_geom.py +98 -0
- ckanapi_harvesters/harvesters/file_formats/__init__.py +10 -0
- ckanapi_harvesters/harvesters/file_formats/csv_format.py +43 -0
- ckanapi_harvesters/harvesters/file_formats/file_format_abc.py +39 -0
- ckanapi_harvesters/harvesters/file_formats/file_format_init.py +25 -0
- ckanapi_harvesters/harvesters/file_formats/shp_format.py +129 -0
- ckanapi_harvesters/harvesters/harvester_abc.py +190 -0
- ckanapi_harvesters/harvesters/harvester_errors.py +31 -0
- ckanapi_harvesters/harvesters/harvester_init.py +30 -0
- ckanapi_harvesters/harvesters/harvester_model.py +49 -0
- ckanapi_harvesters/harvesters/harvester_params.py +323 -0
- ckanapi_harvesters/harvesters/postgre_harvester.py +495 -0
- ckanapi_harvesters/harvesters/postgre_params.py +86 -0
- ckanapi_harvesters/harvesters/pymongo_data_cleaner.py +173 -0
- ckanapi_harvesters/harvesters/pymongo_harvester.py +355 -0
- ckanapi_harvesters/harvesters/pymongo_params.py +54 -0
- ckanapi_harvesters/policies/__init__.py +20 -0
- ckanapi_harvesters/policies/data_format_policy.py +269 -0
- ckanapi_harvesters/policies/data_format_policy_abc.py +97 -0
- ckanapi_harvesters/policies/data_format_policy_custom_fields.py +156 -0
- ckanapi_harvesters/policies/data_format_policy_defs.py +135 -0
- ckanapi_harvesters/policies/data_format_policy_errors.py +79 -0
- ckanapi_harvesters/policies/data_format_policy_lists.py +234 -0
- ckanapi_harvesters/policies/data_format_policy_tag_groups.py +35 -0
- ckanapi_harvesters/reports/__init__.py +11 -0
- ckanapi_harvesters/reports/admin_report.py +292 -0
- {ckanapi_harvesters-0.0.0.dist-info → ckanapi_harvesters-0.0.3.dist-info}/METADATA +84 -38
- ckanapi_harvesters-0.0.3.dist-info/RECORD +105 -0
- ckanapi_harvesters/divider/__init__.py +0 -27
- ckanapi_harvesters/divider/divider.py +0 -53
- ckanapi_harvesters/divider/divider_error.py +0 -59
- ckanapi_harvesters/main.py +0 -30
- ckanapi_harvesters-0.0.0.dist-info/RECORD +0 -9
- {ckanapi_harvesters-0.0.0.dist-info → ckanapi_harvesters-0.0.3.dist-info}/WHEEL +0 -0
- {ckanapi_harvesters-0.0.0.dist-info → ckanapi_harvesters-0.0.3.dist-info}/top_level.txt +0 -0
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ckanapi_harvesters
|
|
3
|
-
Version: 0.0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.0.3
|
|
4
|
+
Summary: Package helping to upload local resources to a CKAN server using the CKAN API. Metadata and the list of resources can be defined in an Excel spreadsheet. The package includes requests to download resources and checks metadata against formatting rules.
|
|
5
|
+
Author-email: ifpen-gp <63413841+ifpen-gp@users.noreply.github.com>
|
|
6
|
+
Maintainer-email: ifpen-gp <63413841+ifpen-gp@users.noreply.github.com>
|
|
5
7
|
License: MIT License
|
|
6
8
|
|
|
7
|
-
Copyright (c)
|
|
9
|
+
Copyright (c) 2026 IFPEN
|
|
8
10
|
|
|
9
11
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
10
12
|
of this software and associated documentation files (the "Software"), to deal
|
|
@@ -24,25 +26,91 @@ License: MIT License
|
|
|
24
26
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
25
27
|
SOFTWARE.
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
Project-URL: Documentation, https://mobidec.github.io/ckanapi_harvesters/index.html
|
|
30
|
+
Project-URL: Repository, https://github.com/Mobidec/ckanapi_harvesters.git
|
|
31
|
+
Project-URL: Issues, https://github.com/Mobidec/ckanapi_harvesters/issues
|
|
32
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
28
33
|
Classifier: License :: OSI Approved :: MIT License
|
|
29
34
|
Classifier: Operating System :: OS Independent
|
|
30
|
-
Requires-Python: >=3.
|
|
35
|
+
Requires-Python: >=3.10
|
|
31
36
|
Description-Content-Type: text/markdown
|
|
32
37
|
Requires-Dist: pytest==8.0.1
|
|
38
|
+
Requires-Dist: myst-nb>=1.3.0
|
|
39
|
+
Requires-Dist: requests>=2.32.5
|
|
40
|
+
Requires-Dist: pandas>=2.3.3
|
|
41
|
+
Requires-Dist: numpy>=2.2.6
|
|
42
|
+
Requires-Dist: openpyxl>=3.1.5
|
|
43
|
+
Provides-Extra: extras
|
|
44
|
+
Requires-Dist: pymongo>=4.8.0; extra == "extras"
|
|
45
|
+
Requires-Dist: psycopg2>=2.9.11; extra == "extras"
|
|
46
|
+
Requires-Dist: shapely>=2.1.2; extra == "extras"
|
|
47
|
+
Requires-Dist: pyproj==3.6.1; extra == "extras"
|
|
48
|
+
Requires-Dist: geopandas>=1.1.2; extra == "extras"
|
|
49
|
+
Provides-Extra: harvesters
|
|
50
|
+
Requires-Dist: pymongo>=4.8.0; extra == "harvesters"
|
|
51
|
+
Requires-Dist: psycopg2>=2.9.11; extra == "harvesters"
|
|
52
|
+
Requires-Dist: shapely>=2.1.2; extra == "harvesters"
|
|
53
|
+
Requires-Dist: pyproj==3.6.1; extra == "harvesters"
|
|
54
|
+
Provides-Extra: alt
|
|
55
|
+
Requires-Dist: bson; extra == "alt"
|
|
56
|
+
Requires-Dist: shapely>=2.1.2; extra == "alt"
|
|
57
|
+
Requires-Dist: pyproj==3.6.1; extra == "alt"
|
|
58
|
+
Requires-Dist: geopandas>=1.1.2; extra == "alt"
|
|
33
59
|
|
|
34
60
|
# ckanapi_harvesters
|
|
35
61
|
|
|
62
|
+
<img src="https://raw.githubusercontent.com/Mobidec/ckanapi_harvesters/refs/heads/main/doc/assets/France2030-Logo-1024x576.png" alt="logo">
|
|
63
|
+
|
|
36
64
|
---
|
|
37
65
|
|
|
38
66
|
## Description
|
|
39
67
|
|
|
40
|
-
This
|
|
68
|
+
This package enables users to benefit from the CKAN API and provides functions which
|
|
69
|
+
realize complex API calls to achieve specific operations.
|
|
70
|
+
In this package, DataStores are returned/inputted as pandas DataFrames.
|
|
71
|
+
The underlying request mechanism uses the requests Session object, which improves performance with multiple requests.
|
|
72
|
+
This package is oriented in the management of CKAN datasets and resources.
|
|
73
|
+
Only a selection of API calls has been implemented in this objective.
|
|
74
|
+
To perform custom API calls, the function `api_action_call` is provided to the end user.
|
|
75
|
+
This package was initially designed to harvest a large DataStores from your local file system.
|
|
76
|
+
It also implements particular requests which can define a large DataStore.
|
|
77
|
+
Large datasets composed of multiple files can be uploaded/downloaded
|
|
78
|
+
through scripts into a single resource or multiple resources.
|
|
79
|
+
For a DataStore, large files are uploaded with a limited number of rows per request.
|
|
80
|
+
|
|
81
|
+
The package is divided in the following sections:
|
|
82
|
+
- `ckan_api`: functions interacting with the CKAN API.
|
|
83
|
+
In addition to the base class which manages basic parameters and requests, API functions are divided as follows:
|
|
84
|
+
1) functions to map the CKAN packages and resources. The remote data structures are mapped in a mirrored data structure.
|
|
85
|
+
CKAN DataStore information, organizations, licenses and resource views are optionally tracked.
|
|
86
|
+
2) functions to query a DataStore or to download file resources.
|
|
87
|
+
3) functions to apply a test a data format policy on a given package.
|
|
88
|
+
4) functions to upsert data to a DataStore or to upload files to a resource.
|
|
89
|
+
5) functions to manage CKAN objects
|
|
90
|
+
(creating, patching, or removing packages, resources, and DataStores).
|
|
91
|
+
These functions enable the user to change the metadata for these objects.
|
|
92
|
+
The other objects are meant to be managed through the API.
|
|
93
|
+
- `policies`: functions to check data format policies. A data format policy defines which attributes
|
|
94
|
+
are mandatory for a package or resource.
|
|
95
|
+
Specific rules can be implemented to restrict package tags to certain lists,
|
|
96
|
+
grouped by [vocabulary](https://docs.ckan.org/en/2.9/maintaining/tag-vocabularies.html).
|
|
97
|
+
Extra key-pair values of packages can be enforced. Resource formats can be restricted to a certain list.
|
|
98
|
+
- `reports`: functions to extract a report on the CKAN database in order to monitor
|
|
99
|
+
package user access rights, resource memory occupation, modification dates and data format policy messages.
|
|
100
|
+
- `harvesters`: this module implements ways to load data from your local machine.
|
|
101
|
+
- `file_formats`: The primary approach is to use files on you local file system. The CSV and SHP (shape file) formats are currently supported.
|
|
102
|
+
- In addition to the file formats, harvesters have been implemented to transfer data from a database.
|
|
103
|
+
This is particularly useful if the database cannot be accessed by CKAN harvester extensions
|
|
104
|
+
because it would only be available locally. MongoDB and PostgreSQL databases are currently supported.
|
|
105
|
+
- `builder`: functions to automate package and resource metadata patching and data uploads or downloads.
|
|
106
|
+
These parameters can be defined in an Excel workbook and files from the local file system can be referred as inputs for the data upload.
|
|
107
|
+
The parameters can also be deduced from an online CKAN package through the API.
|
|
108
|
+
- Example scripts are given in this module, referring to an example Excel workbook.
|
|
109
|
+
The Excel workbook is available in the package and at this link:
|
|
110
|
+
[builder_package_example.xlsx](src/ckanapi_harvesters/builder/builder_package_example.xlsx)
|
|
111
|
+
See also the notebook example in the current documentation here:
|
|
112
|
+
[builder_example_notebook.ipynb](sphinx/notebooks/builder_example_notebook.ipynb).
|
|
41
113
|
|
|
42
|
-
This package includes:
|
|
43
|
-
- A unit test structure based on the [Pytest](https://docs.pytest.org/en/stable/) library
|
|
44
|
-
- Automatic documentation generation based on the [Sphinx](https://www.sphinx-doc.org/en/master/) library
|
|
45
|
-
- A CI/CD pipeline for deploying the Python package to a Python server
|
|
46
114
|
|
|
47
115
|
## Github Pages
|
|
48
116
|
|
|
@@ -130,51 +198,29 @@ For more details on contributing and best practices, please refer to the `CONTRI
|
|
|
130
198
|
|
|
131
199
|
### Installation
|
|
132
200
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
pip install ckanapi_harvesters
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
Otherwise, you can specify the package index depending on whether you are in an internal (on-premise) or external (cloud) environment.
|
|
201
|
+
The package and its optional dependencies can be installed with the following command:
|
|
140
202
|
|
|
141
203
|
```bash
|
|
142
|
-
|
|
143
|
-
pip install ckanapi_harvesters --extra-index-url https://nexus.ifpen.fr/repository/fast-it/simple
|
|
144
|
-
|
|
145
|
-
# On Cloud
|
|
146
|
-
pip install ckanapi_harvesters --extra-index-url https://nexus.fastit.dev/repository/fast-it/simple
|
|
204
|
+
pip install ckanapi_harvesters[extras]
|
|
147
205
|
```
|
|
148
206
|
|
|
149
|
-
Alternatively, you can set the package index URL as an environment variable:
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
# On-premise
|
|
153
|
-
export PIP_EXTRA_INDEX_URL=https://nexus.fastit.dev/repository/fast-it/simple
|
|
154
|
-
|
|
155
|
-
# On Cloud
|
|
156
|
-
export PIP_EXTRA_INDEX_URL=https://nexus.ifpen.fr/repository/fast-it/simple
|
|
157
|
-
```
|
|
158
207
|
|
|
159
208
|
### Example Usage of the Python Package in Your Code
|
|
160
209
|
|
|
161
210
|
After installation, you can import and use your package and its functions in your Python code:
|
|
162
211
|
|
|
163
212
|
```python
|
|
164
|
-
from
|
|
213
|
+
from ckanapi_harvesters import CkanApi
|
|
165
214
|
|
|
166
|
-
|
|
215
|
+
ckan = CkanApi()
|
|
167
216
|
```
|
|
168
217
|
|
|
169
218
|
To use sub-modules defined in the package:
|
|
170
219
|
|
|
171
220
|
```python
|
|
172
|
-
from
|
|
173
|
-
|
|
174
|
-
a = 4.0
|
|
175
|
-
b = 2.0
|
|
221
|
+
from ckanapi_harvesters.ckan_api import CkanApi
|
|
176
222
|
|
|
177
|
-
|
|
223
|
+
ckan = CkanApi()
|
|
178
224
|
```
|
|
179
225
|
|
|
180
226
|
These instructions will allow you to access the package and utilize its features effectively and in line with your development configuration.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
ckanapi_harvesters/__init__.py,sha256=CzcdP6BDnmn0PT3Uw9E-ywlyZYQku75IJUQOXohjW-w,969
|
|
2
|
+
ckanapi_harvesters/auxiliary/__init__.py,sha256=mucS9WzDW0NMx4NF8N40kVxJe3myv0mjR2X7vWz1n3E,638
|
|
3
|
+
ckanapi_harvesters/auxiliary/ckan_action.py,sha256=13gkIY4BB3uZLbyRMfx4Du3cDsdcEBtKfCGf4IKAUf8,3864
|
|
4
|
+
ckanapi_harvesters/auxiliary/ckan_api_key.py,sha256=Q_iXEKtuNXwAlAnfWsR2Y8dUw64tnsoAu1C6CHjLcXY,8079
|
|
5
|
+
ckanapi_harvesters/auxiliary/ckan_auxiliary.py,sha256=8OSFy0S2fEIOxbrxsBuIgT-uIkkHOVlEZRczrGgqyTg,10163
|
|
6
|
+
ckanapi_harvesters/auxiliary/ckan_configuration.py,sha256=0MaDykLUPyjeFG44ehW2KjRGCKvwjaGbkqJJ18wrv1c,1165
|
|
7
|
+
ckanapi_harvesters/auxiliary/ckan_defs.py,sha256=IAZ0IJG7fUa_gJ54JgvoJIPUp4X5GNUwsNw7XD9UIYU,272
|
|
8
|
+
ckanapi_harvesters/auxiliary/ckan_errors.py,sha256=WC3p5HFQAuRV7_Krh1Swcjve9YZ2-t2PbVwncd98VtU,5173
|
|
9
|
+
ckanapi_harvesters/auxiliary/ckan_map.py,sha256=9p_o7OTSHWnK0SXd9_Sg9Fd2dpXrtKrpLAVTk5_70xM,24922
|
|
10
|
+
ckanapi_harvesters/auxiliary/ckan_model.py,sha256=pqS2jVX105DGzuaAV202zGQQpaqzF7gzvUe_jVKiofI,41215
|
|
11
|
+
ckanapi_harvesters/auxiliary/ckan_vocabulary_deprecated.py,sha256=Hj_ZqcpkHa8EVCrnrqEFCopudyPMXdFvQINsW1kKwtE,4079
|
|
12
|
+
ckanapi_harvesters/auxiliary/deprecated.py,sha256=_uFN1au77bG9iEHBb_tZ1eghOUNaEP5mmhQuq8Mgbfs,1934
|
|
13
|
+
ckanapi_harvesters/auxiliary/error_level_message.py,sha256=VKbdRW8E5I4vo0xJtpwqMT6r_KNmDGwipNiFnaHPtuw,1361
|
|
14
|
+
ckanapi_harvesters/auxiliary/external_code_import.py,sha256=O0PULu2QHdWPRYcxV_yEWkJtyjjhcza-uuxRJoQEW6Y,3747
|
|
15
|
+
ckanapi_harvesters/auxiliary/list_records.py,sha256=GaaJqdVdkvhLeSp93e1rEcysJOzPzlNEAkp3cBkDyGw,1936
|
|
16
|
+
ckanapi_harvesters/auxiliary/login.py,sha256=Rbymmd7-iRExOyeaqFN5-L8XtxNowv9eT7-lzSr2zgc,5984
|
|
17
|
+
ckanapi_harvesters/auxiliary/path.py,sha256=6lP5tEcf-zKkju2x844W7Dykh5lwupGhUVhuBgDko64,8278
|
|
18
|
+
ckanapi_harvesters/auxiliary/proxy_config.py,sha256=x2fRvQtMKAZ3tMcHA7WKqi1_Tp4nnAhdzWv5zrQ__Dw,13215
|
|
19
|
+
ckanapi_harvesters/auxiliary/urls.py,sha256=NGZDMTx3gEIbnGXHJha2GpEaY0CQxdlLXGhICrOrRjY,980
|
|
20
|
+
ckanapi_harvesters/builder/__init__.py,sha256=6LwyiXT0EwMbGBfIlcN-rAAJ1S6QqfxnZEKGVMpZxvg,1355
|
|
21
|
+
ckanapi_harvesters/builder/builder_aux.py,sha256=BoqggxqM_TFQrK3Zhi3IyT2M5iPXHGxN9oCrYUXNuo4,579
|
|
22
|
+
ckanapi_harvesters/builder/builder_ckan.py,sha256=KijnPYFmyDBZL5hHEJzFlg_CgRTHMQs-3FTKYFbLTnM,11153
|
|
23
|
+
ckanapi_harvesters/builder/builder_errors.py,sha256=hgcQkELxB71cE_fztko6I19-JoFlk-UPZFd5UFw0vgA,1518
|
|
24
|
+
ckanapi_harvesters/builder/builder_field.py,sha256=r-NISkj_yX_RNVtGC9nfGRnKRSxVYAsSIGrQlnizXJw,5387
|
|
25
|
+
ckanapi_harvesters/builder/builder_package.py,sha256=gaZj6E7UedByZfIC9shjDAMQO4lJ3xwvsZSFmht8cPI,304
|
|
26
|
+
ckanapi_harvesters/builder/builder_package_1_basic.py,sha256=R3P1MN0dKx_QMcz440LF7Q8GL8q6kND4AUffrBaQT0Q,68726
|
|
27
|
+
ckanapi_harvesters/builder/builder_package_2_harvesters.py,sha256=l44tB4SOs99aYUaW0MtBncKTeg3Xmi1x4rmKqxtkeAg,2080
|
|
28
|
+
ckanapi_harvesters/builder/builder_package_3_multi_threaded.py,sha256=eX2RGspFTdoj_EzUt7q1x1IOYWCtzl-BotVI87qS6yg,2167
|
|
29
|
+
ckanapi_harvesters/builder/builder_package_example.xlsx,sha256=a-5hIgtVWTMOMVqgzw7k_1uCUF58ARX77v6k2q9fG94,34019
|
|
30
|
+
ckanapi_harvesters/builder/builder_resource.py,sha256=5ZZDS6IMMsvWHqdWZ2ocSsNA_sTKM98VW7VWfI6Tb14,25306
|
|
31
|
+
ckanapi_harvesters/builder/builder_resource_datastore.py,sha256=bSi-sahe5SUv7_8N51KDoyH1EHYb38Ux4H5PORRsUtg,29266
|
|
32
|
+
ckanapi_harvesters/builder/builder_resource_datastore_multi_abc.py,sha256=FB37SWtekjE0kXHWlZYofl_T09Nq5tKu8tlT9rWJeqE,21781
|
|
33
|
+
ckanapi_harvesters/builder/builder_resource_datastore_multi_folder.py,sha256=0rf90lGAqUHHkLD_K6N6Nut8qHgtSHaWlZPRygZ3RdE,15839
|
|
34
|
+
ckanapi_harvesters/builder/builder_resource_datastore_multi_harvester.py,sha256=TmoLW2PmGmcwrjqLDOSxAR52pR9xXbt6nj4qmvslYIU,15839
|
|
35
|
+
ckanapi_harvesters/builder/builder_resource_datastore_unmanaged.py,sha256=VJQfsHkt4EWaWK55RTqOrPpqPTjsxP04cf7UwIj5dtY,7845
|
|
36
|
+
ckanapi_harvesters/builder/builder_resource_datastore_url.py,sha256=GLCiX0MskYXGenJhAjcfF8cvhxu-XskZ9n9NRXtAVg0,8034
|
|
37
|
+
ckanapi_harvesters/builder/builder_resource_init.py,sha256=dH-3eG8cmYQYBl4B7hUdU3Pa6nevW8J-4KIiFcI2jnM,6063
|
|
38
|
+
ckanapi_harvesters/builder/builder_resource_multi_abc.py,sha256=TplSdLQm68CWLACKwS3n4dAij_O5X8xAUetbStUnxz0,17342
|
|
39
|
+
ckanapi_harvesters/builder/builder_resource_multi_datastore.py,sha256=gymq6tDPvJoHNFbBLmI8uYGmmWTMciMGjdJ48Vee2u4,7737
|
|
40
|
+
ckanapi_harvesters/builder/builder_resource_multi_file.py,sha256=39Xv-nj7yDg29yl3dUZLbkjslu1o3G5hDFTBMad49KU,29335
|
|
41
|
+
ckanapi_harvesters/builder/mapper_datastore.py,sha256=FWQmuCjlKuklYrHJGvVT7atf9VtXmAQnQpbiGGtagUo,4159
|
|
42
|
+
ckanapi_harvesters/builder/mapper_datastore_multi.py,sha256=YVqs68Bevqy6YEMZFS3c9BBhVsBG7i7nmbRm-_E1COc,13547
|
|
43
|
+
ckanapi_harvesters/builder/specific_builder_abc.py,sha256=HE1ATOCcqqw3bVeziIsmD_R-uRvXHz4PZsGewSrx-M8,1011
|
|
44
|
+
ckanapi_harvesters/builder/example/__init__.py,sha256=tqGf_Zqk9ThdStlK5IGJ_1dTu0cUsolNgb0WflaYf_Y,592
|
|
45
|
+
ckanapi_harvesters/builder/example/builder_example.py,sha256=6xKK7GNP6-zXOq7KsbkF2kBfw-_IByq5Pi8VYVmOGdA,681
|
|
46
|
+
ckanapi_harvesters/builder/example/builder_example_aux_fun.py,sha256=9_qS76QYqLu1MzkDanVTNgn9wQdHMuhwAJydE5PxZfM,835
|
|
47
|
+
ckanapi_harvesters/builder/example/builder_example_download.py,sha256=teL6iusYbTZ_lTVtxavFTgdvBO4h_kqJUJ_KsE7rARs,1268
|
|
48
|
+
ckanapi_harvesters/builder/example/builder_example_generate_data.py,sha256=dspJAdb0biAz_v159nWcDrVaG7uXs1DoXg6EmGQFmt4,3527
|
|
49
|
+
ckanapi_harvesters/builder/example/builder_example_patch_upload.py,sha256=10iaJ78IBJTd-Uti-Q9TLFfz9tQw13UKwvSg9i5NrlM,1634
|
|
50
|
+
ckanapi_harvesters/builder/example/builder_example_policy.py,sha256=-jy89E_z2Mp5SrsS7zd0Y4ubrQn67NHcVxWh6mDyUFQ,4593
|
|
51
|
+
ckanapi_harvesters/builder/example/builder_example_test_sql.py,sha256=Qe4YuqQW1S9LyMjFU7nhaPw2fJwovatsyMYImKiyZI4,1595
|
|
52
|
+
ckanapi_harvesters/builder/example/builder_example_tests.py,sha256=1JxpKoYnRm35J9QW7asS5jSygUYEMv0C6s_wufm2pSg,2934
|
|
53
|
+
ckanapi_harvesters/builder/example/builder_example_tests_offline.py,sha256=VcFxsnUjtkAFwdmSQaphaEPjMgzo6XR3Dubvxece_Yk,1773
|
|
54
|
+
ckanapi_harvesters/builder/example/package/ckan-dpg.svg,sha256=YNk-H1EEu-ipdLt5Ik0nUmtXBqUSU_XoamAkFdOT65A,9683
|
|
55
|
+
ckanapi_harvesters/builder/example/package/users_local.csv,sha256=RR4XfLJ6iBTdneljxJOZEcHc9XnA4H_UrZfOL3Oj9iI,22
|
|
56
|
+
ckanapi_harvesters/builder/specific/__init__.py,sha256=3kjcz4YuZs2NTCtseaTqH9mHPJi25Izv7qSPVJVWRiI,170
|
|
57
|
+
ckanapi_harvesters/builder/specific/configuration_builder.py,sha256=S5eLjp7rK_LVILvo50NYItMsWNMEEeK9qBcsTDfGr1M,3260
|
|
58
|
+
ckanapi_harvesters/ckan_api/__init__.py,sha256=ZEe0P35WNVxhQPUCnaLRIfMBzbL44oOHyYpdWWJLYC0,523
|
|
59
|
+
ckanapi_harvesters/ckan_api/ckan_api.py,sha256=_XmiDL89veF4LODisq1FwWOAkJuWpzynbIAUxKsv_ds,439
|
|
60
|
+
ckanapi_harvesters/ckan_api/ckan_api_0_base.py,sha256=WjICbv1N1N-rIkwmh3D2U6GB5jG0HzNCN-_bhihFrJw,43253
|
|
61
|
+
ckanapi_harvesters/ckan_api/ckan_api_1_map.py,sha256=4N9BE9dlImIdO_XOut7M5nwhe9IY-lvAjtXB9BDgJzs,52537
|
|
62
|
+
ckanapi_harvesters/ckan_api/ckan_api_2_readonly.py,sha256=4g_Ny-6W7TPfx4WAza5XrF6WtqA1ERlu7qXTLa_AYVw,54803
|
|
63
|
+
ckanapi_harvesters/ckan_api/ckan_api_3_policy.py,sha256=zzm7CxYrwlrRWtQq62qJCzoHKM068Z5Fk65eMpv86Ik,11595
|
|
64
|
+
ckanapi_harvesters/ckan_api/ckan_api_4_readwrite.py,sha256=L2WEHJiVq9J_uXgNDr3YDGi8l6HuMmabQAkpSXE2eZ4,30816
|
|
65
|
+
ckanapi_harvesters/ckan_api/ckan_api_5_manage.py,sha256=KFfMjXmqLJZq0btyJVcfTPzKcFb_4psuQpMFVO9vDYI,65578
|
|
66
|
+
ckanapi_harvesters/ckan_api/ckan_api_params.py,sha256=ifk7BL1s-vnK-KIR-GH-bvf3PvT7f8oCxJTQc4zO5C8,9819
|
|
67
|
+
ckanapi_harvesters/ckan_api/deprecated/__init__.py,sha256=-zQ4tbvQMi5VzA9ZEMKr4GLTWyjYBEZu8S96prkzOoE,141
|
|
68
|
+
ckanapi_harvesters/ckan_api/deprecated/ckan_api_deprecated.py,sha256=LXeysnVU9hB6Pm26W12sDOxhzHSLNvifk1hEjseq8oQ,15413
|
|
69
|
+
ckanapi_harvesters/ckan_api/deprecated/ckan_api_deprecated_vocabularies.py,sha256=AsVfgzj3LsuTP7Ib0nHyQ1OREyDqPjLdIVnaP8xGgWI,10131
|
|
70
|
+
ckanapi_harvesters/harvesters/__init__.py,sha256=1oYlbtFbuuAMZCh-eoeqdbf-bQdh5uGX_dbckgyPaDU,509
|
|
71
|
+
ckanapi_harvesters/harvesters/harvester_abc.py,sha256=YrQY_hU4MSXIx54Vv10hhGnsZL-jowhb6eAwAwjR9sw,6252
|
|
72
|
+
ckanapi_harvesters/harvesters/harvester_errors.py,sha256=yPUnh1c0RMFlJLNro4uk8e0rtpwRpqcs2FdgynuGQ14,1176
|
|
73
|
+
ckanapi_harvesters/harvesters/harvester_init.py,sha256=N8kr-yXCpE3_fiLsphxS6vyHcjgNtGgegW49tiaY8ZM,1763
|
|
74
|
+
ckanapi_harvesters/harvesters/harvester_model.py,sha256=ej5a5qp0vLRxe-pYCF-oo6SmRRhFEaNwsDMxAUYG-p4,1407
|
|
75
|
+
ckanapi_harvesters/harvesters/harvester_params.py,sha256=vhIo2rn_jDHNpj5uNHoxtxYUXUFjnXvIZ2LQLCM-ysg,15062
|
|
76
|
+
ckanapi_harvesters/harvesters/postgre_harvester.py,sha256=CX3oTT1CoRtFrQBGFkf0NVhAXA4RfzUTo4fla6t5Lww,23871
|
|
77
|
+
ckanapi_harvesters/harvesters/postgre_params.py,sha256=9fgVia2EdFXg3OPTepUNgKgNL5Z3CACSyEsvFY0AtoM,3490
|
|
78
|
+
ckanapi_harvesters/harvesters/pymongo_data_cleaner.py,sha256=G7vHLaCKrxAj5XlRl5ilKVLw6p8rkZY-OBegFJLqTYs,8312
|
|
79
|
+
ckanapi_harvesters/harvesters/pymongo_harvester.py,sha256=f6Ms0I8g8P4JBW8_r10ijLBwBHQgNATPRC8j-1hOlNA,17997
|
|
80
|
+
ckanapi_harvesters/harvesters/pymongo_params.py,sha256=FCsATBRV_G4kPcQndvcDJFaQ-e63L8k3nJv54E5qAfY,2288
|
|
81
|
+
ckanapi_harvesters/harvesters/data_cleaner/__init__.py,sha256=jgOZJSIHUTUMQ5wEcBjFPhUD6m-G2tEN4qPmbVcfyY0,473
|
|
82
|
+
ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_abc.py,sha256=MKbqQNrOl45cGPAeYvCY_9ut8vYLZOHl9HHYrSc7d5A,10875
|
|
83
|
+
ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_errors.py,sha256=cACi39fOfQlVCjj5T66PtcK4kL3hJFAljukksksHmsg,757
|
|
84
|
+
ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_upload.py,sha256=e-_EnjtfiPm3Q4SOjKEIUJf_Nwnk5O7zOvopxNSGOlk,298
|
|
85
|
+
ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_upload_1_basic.py,sha256=0EQBr66BJSmAv5rnwQVGUN_nb-JgJL91yCoznRobARg,22616
|
|
86
|
+
ckanapi_harvesters/harvesters/data_cleaner/data_cleaner_upload_2_geom.py,sha256=yRNHs53ifgW46bzYosoIWqw5Y6o3tSfpl9M32lNTzfw,4456
|
|
87
|
+
ckanapi_harvesters/harvesters/file_formats/__init__.py,sha256=gr9om-0yD_tXQOpzukkbGSomSH7aMukvlDGV8wexxjM,247
|
|
88
|
+
ckanapi_harvesters/harvesters/file_formats/csv_format.py,sha256=zbPxO1SCP9lXM6zJZPB6RHPljAsYOtxSp59ljn-Kh14,1779
|
|
89
|
+
ckanapi_harvesters/harvesters/file_formats/file_format_abc.py,sha256=eOHJ4fsFTpoSoi9GNHuBQPszOlBnnMV3bhk5_eGY-U4,1170
|
|
90
|
+
ckanapi_harvesters/harvesters/file_formats/file_format_init.py,sha256=lM2BFk_mkvneCjAsvRYmQwMvFmjVEGP1FMqEYlBVvXo,786
|
|
91
|
+
ckanapi_harvesters/harvesters/file_formats/shp_format.py,sha256=ZFLmvxI_XZAAcA1I9oCoGC3SBz2citW9fy9Yl32A958,6863
|
|
92
|
+
ckanapi_harvesters/policies/__init__.py,sha256=eXOcIUfYbDVzmG5rE2SDjEzoooDW7cCb9CG-huM6i30,555
|
|
93
|
+
ckanapi_harvesters/policies/data_format_policy.py,sha256=q83oB3HS6eT4m9HJZOI0L1DTp2PsvAFdNHOt_9AoWL0,15044
|
|
94
|
+
ckanapi_harvesters/policies/data_format_policy_abc.py,sha256=5jbeIhotUAFRx5O3hRRtDZW0fb4gD1F1b4Q1LeLUiic,4078
|
|
95
|
+
ckanapi_harvesters/policies/data_format_policy_custom_fields.py,sha256=ONdX-cRdyHwBY2nAmIELRWC24G-73J14UA7lXTiP0CM,7757
|
|
96
|
+
ckanapi_harvesters/policies/data_format_policy_defs.py,sha256=vaWt0F0GEMxeuOi2-KjNjdbmm4-DA8Fa1YgCucayEGE,3483
|
|
97
|
+
ckanapi_harvesters/policies/data_format_policy_errors.py,sha256=ohBXTSIvE-TxdMCSUFM1berq26LoUwB_s2jh4PjD-SM,2860
|
|
98
|
+
ckanapi_harvesters/policies/data_format_policy_lists.py,sha256=Lh_pYUvolW6QujaHdV415mnYhREqaZKbR73rpOmA8-E,11634
|
|
99
|
+
ckanapi_harvesters/policies/data_format_policy_tag_groups.py,sha256=KBxXm9hLgaiuJDTnP-ti2iZAyvf04uvUkIoo_Jqbpog,1341
|
|
100
|
+
ckanapi_harvesters/reports/__init__.py,sha256=LuacieaFOyqaivLuaRAD7Umx0rE_Lz9jD7bL88XLonw,137
|
|
101
|
+
ckanapi_harvesters/reports/admin_report.py,sha256=fSqNSLGe-XFmRQ6QanOm9VcAIbjDsiCNQSpVIGsH9XE,16773
|
|
102
|
+
ckanapi_harvesters-0.0.3.dist-info/METADATA,sha256=PO6PmbHXvX-ahLDUmoCai6UA1hkC-UtAhNwLHh7ywBA,12564
|
|
103
|
+
ckanapi_harvesters-0.0.3.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
104
|
+
ckanapi_harvesters-0.0.3.dist-info/top_level.txt,sha256=WvJprCJXBEK-Eew36dTdVdt9I_r4AdgA2Kur3RhLTPg,19
|
|
105
|
+
ckanapi_harvesters-0.0.3.dist-info/RECORD,,
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Module for division operations and custom exceptions.
|
|
3
|
-
|
|
4
|
-
This module provides functions and exceptions related to division operations.
|
|
5
|
-
It imports the `divide` function and the `CantDivideByZeroError` exception from
|
|
6
|
-
other modules and makes them available for use in this module.
|
|
7
|
-
|
|
8
|
-
Functions
|
|
9
|
-
---------
|
|
10
|
-
divide(a, b)
|
|
11
|
-
Divide two numbers, raising a custom exception if the divisor is zero.
|
|
12
|
-
|
|
13
|
-
Exceptions
|
|
14
|
-
----------
|
|
15
|
-
CantDivideByZeroError
|
|
16
|
-
Raised when an attempt is made to divide by zero.
|
|
17
|
-
|
|
18
|
-
Imports
|
|
19
|
-
--------
|
|
20
|
-
- divide: Function for performing division operations.
|
|
21
|
-
- CantDivideByZeroError: Exception raised for division by zero errors.
|
|
22
|
-
"""
|
|
23
|
-
|
|
24
|
-
from .divider import divide
|
|
25
|
-
from .divider_error import CantDivideByZeroError
|
|
26
|
-
|
|
27
|
-
__all__ = ['divide', 'CantDivideByZeroError']
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Module for division operations with custom exceptions.
|
|
3
|
-
|
|
4
|
-
This module provides a function for performing division
|
|
5
|
-
and raises a custom exception when attempting to divide by zero.
|
|
6
|
-
|
|
7
|
-
Functions
|
|
8
|
-
---------
|
|
9
|
-
divide(a, b)
|
|
10
|
-
Divide two numbers, raising a custom exception if the divisor is zero.
|
|
11
|
-
|
|
12
|
-
Exceptions
|
|
13
|
-
----------
|
|
14
|
-
CantDivideByZeroError
|
|
15
|
-
Raised when an attempt is made to divide by zero.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
from .divider_error import CantDivideByZeroError
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def divide(a, b):
|
|
22
|
-
"""
|
|
23
|
-
Divide two numbers, raising a custom exception if the divisor is zero.
|
|
24
|
-
|
|
25
|
-
Parameters
|
|
26
|
-
----------
|
|
27
|
-
a : float
|
|
28
|
-
The dividend.
|
|
29
|
-
b : float
|
|
30
|
-
The divisor.
|
|
31
|
-
|
|
32
|
-
Returns
|
|
33
|
-
-------
|
|
34
|
-
float
|
|
35
|
-
The result of the division.
|
|
36
|
-
|
|
37
|
-
Raises
|
|
38
|
-
------
|
|
39
|
-
CantDivideByZeroError
|
|
40
|
-
If the divisor (b) is zero.
|
|
41
|
-
|
|
42
|
-
Examples
|
|
43
|
-
--------
|
|
44
|
-
>>> divide(10, 2)
|
|
45
|
-
5.0
|
|
46
|
-
>>> divide(10, 0)
|
|
47
|
-
Traceback (most recent call last):
|
|
48
|
-
...
|
|
49
|
-
CantDivideByZeroError
|
|
50
|
-
"""
|
|
51
|
-
if b == 0:
|
|
52
|
-
raise CantDivideByZeroError()
|
|
53
|
-
return a / b
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Module for custom exceptions related to calculator operations.
|
|
3
|
-
|
|
4
|
-
This module defines custom exceptions used in calculator operations,
|
|
5
|
-
including a base exception class and a specific exception for division by zero errors.
|
|
6
|
-
|
|
7
|
-
Classes
|
|
8
|
-
-------
|
|
9
|
-
CalculatorError
|
|
10
|
-
Base class for exceptions in calculator operations.
|
|
11
|
-
CantDivideByZeroError
|
|
12
|
-
Exception raised when an attempt is made to divide by zero.
|
|
13
|
-
|
|
14
|
-
Exceptions
|
|
15
|
-
----------
|
|
16
|
-
CalculatorError
|
|
17
|
-
Base class for exceptions in the calculator domain.
|
|
18
|
-
CantDivideByZeroError
|
|
19
|
-
Raised specifically for division by zero errors.
|
|
20
|
-
"""
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
class CalculatorError(Exception):
|
|
24
|
-
"""
|
|
25
|
-
Base class for exceptions in calculator operations.
|
|
26
|
-
|
|
27
|
-
This class is intended to be used as a base class for other calculator-related
|
|
28
|
-
exceptions. It inherits from the built-in Exception class and allows for custom
|
|
29
|
-
exception handling in the calculator domain.
|
|
30
|
-
|
|
31
|
-
Parameters
|
|
32
|
-
----------
|
|
33
|
-
args : tuple
|
|
34
|
-
Variable length argument list passed to the base Exception class.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
def __init__(self, *args):
|
|
38
|
-
super().__init__(args)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class CantDivideByZeroError(CalculatorError):
|
|
42
|
-
"""
|
|
43
|
-
Exception raised when an attempt is made to divide by zero.
|
|
44
|
-
|
|
45
|
-
This exception is a specific subclass of CalculatorError and is intended to be
|
|
46
|
-
used when a division by zero error occurs. It provides a custom error message
|
|
47
|
-
indicating that division by zero is not allowed.
|
|
48
|
-
|
|
49
|
-
Parameters
|
|
50
|
-
----------
|
|
51
|
-
None
|
|
52
|
-
|
|
53
|
-
Notes
|
|
54
|
-
-----
|
|
55
|
-
The default message for this exception is "tu ne peux pas diviser par zéro".
|
|
56
|
-
"""
|
|
57
|
-
|
|
58
|
-
def __init__(self):
|
|
59
|
-
super().__init__('tu ne peux pas diviser par zéro')
|
ckanapi_harvesters/main.py
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Module containing simple demonstration functions.
|
|
3
|
-
|
|
4
|
-
This module provides basic example functions to demonstrate
|
|
5
|
-
simple Python functionality.
|
|
6
|
-
|
|
7
|
-
Functions
|
|
8
|
-
---------
|
|
9
|
-
hello_world()
|
|
10
|
-
Print 'Hello World!' to the console.
|
|
11
|
-
"""
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
def hello_world():
|
|
15
|
-
"""
|
|
16
|
-
Print 'Hello World!' to the console.
|
|
17
|
-
|
|
18
|
-
Parameters
|
|
19
|
-
----------
|
|
20
|
-
None
|
|
21
|
-
|
|
22
|
-
Returns
|
|
23
|
-
-------
|
|
24
|
-
None
|
|
25
|
-
|
|
26
|
-
Notes
|
|
27
|
-
-----
|
|
28
|
-
- This function simply prints the message 'Hello World!' to the standard output.
|
|
29
|
-
"""
|
|
30
|
-
print('Hello World!')
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
ckanapi_harvesters/__init__.py,sha256=7CSKdr6QTzRii9ZgPOVpInDaT8up2AlLE603waA6rFU,306
|
|
2
|
-
ckanapi_harvesters/main.py,sha256=6BKP4FfCnsPApGT8F8sodpllBde7X55UkifXXMVY1Bw,508
|
|
3
|
-
ckanapi_harvesters/divider/__init__.py,sha256=Q93V1V4x_TVm5uMBkJIeynFYBa_PpRzc8nQ4O4mtHC4,761
|
|
4
|
-
ckanapi_harvesters/divider/divider.py,sha256=6he0tD5NeCbeVL1eWmRhU5R34h-H2fB-JFE-Ztk60-8,1038
|
|
5
|
-
ckanapi_harvesters/divider/divider_error.py,sha256=S0gdUN6RtSthnZ4NB9_UhKmZDQjEnlS3F9IiGfnEFV0,1659
|
|
6
|
-
ckanapi_harvesters-0.0.0.dist-info/METADATA,sha256=qiQRIkfzQhpjhp3sM5Jqjv42HATK4x_z9g1oF4TuK1o,8448
|
|
7
|
-
ckanapi_harvesters-0.0.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
8
|
-
ckanapi_harvesters-0.0.0.dist-info/top_level.txt,sha256=WvJprCJXBEK-Eew36dTdVdt9I_r4AdgA2Kur3RhLTPg,19
|
|
9
|
-
ckanapi_harvesters-0.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|