geoservercloud 0.3.1.dev1__tar.gz → 0.3.1.dev4__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 (39) hide show
  1. geoservercloud-0.3.1.dev4/PKG-INFO +120 -0
  2. geoservercloud-0.3.1.dev4/README.md +95 -0
  3. geoservercloud-0.3.1.dev4/geoservercloud/__init__.py +4 -0
  4. geoservercloud-0.3.1.dev4/geoservercloud/geoservercloud.py +684 -0
  5. geoservercloud-0.3.1.dev4/geoservercloud/geoservercloudsync.py +51 -0
  6. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/geoservercloud/models/__init__.py +12 -1
  7. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/geoservercloud/models/common.py +42 -5
  8. geoservercloud-0.3.1.dev4/geoservercloud/models/datastore.py +82 -0
  9. geoservercloud-0.3.1.dev4/geoservercloud/models/datastores.py +19 -0
  10. geoservercloud-0.3.1.dev4/geoservercloud/models/featuretype.py +219 -0
  11. geoservercloud-0.3.1.dev4/geoservercloud/models/featuretypes.py +18 -0
  12. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/geoservercloud/models/style.py +45 -32
  13. geoservercloud-0.3.1.dev4/geoservercloud/models/styles.py +21 -0
  14. geoservercloud-0.3.1.dev4/geoservercloud/models/workspace.py +32 -0
  15. geoservercloud-0.3.1.dev4/geoservercloud/models/workspaces.py +26 -0
  16. geoservercloud-0.3.1.dev4/geoservercloud/services/__init__.py +7 -0
  17. geoservercloud-0.3.1.dev4/geoservercloud/services/owsservice.py +213 -0
  18. geoservercloud-0.3.1.dev1/geoservercloud/services/restservice.py → geoservercloud-0.3.1.dev4/geoservercloud/services/restclient.py +13 -2
  19. geoservercloud-0.3.1.dev4/geoservercloud/services/restservice.py +738 -0
  20. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/geoservercloud/templates.py +1 -141
  21. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/geoservercloud/utils.py +36 -0
  22. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/pyproject.toml +1 -1
  23. geoservercloud-0.3.1.dev1/PKG-INFO +0 -52
  24. geoservercloud-0.3.1.dev1/README.md +0 -27
  25. geoservercloud-0.3.1.dev1/geoservercloud/__init__.py +0 -3
  26. geoservercloud-0.3.1.dev1/geoservercloud/geoservercloud.py +0 -1060
  27. geoservercloud-0.3.1.dev1/geoservercloud/models/datastore.py +0 -74
  28. geoservercloud-0.3.1.dev1/geoservercloud/models/datastores.py +0 -32
  29. geoservercloud-0.3.1.dev1/geoservercloud/models/featuretype.py +0 -133
  30. geoservercloud-0.3.1.dev1/geoservercloud/models/featuretypes.py +0 -23
  31. geoservercloud-0.3.1.dev1/geoservercloud/models/styles.py +0 -30
  32. geoservercloud-0.3.1.dev1/geoservercloud/models/workspace.py +0 -32
  33. geoservercloud-0.3.1.dev1/geoservercloud/models/workspaces.py +0 -33
  34. geoservercloud-0.3.1.dev1/geoservercloud/services/__init__.py +0 -10
  35. geoservercloud-0.3.1.dev1/geoservercloud/services/endpoints.py +0 -174
  36. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/LICENSE +0 -0
  37. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/geoservercloud/gridsets/2056.xml +0 -0
  38. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/geoservercloud/gridsets/21781.xml +0 -0
  39. {geoservercloud-0.3.1.dev1 → geoservercloud-0.3.1.dev4}/geoservercloud/gridsets/3857.xml +0 -0
@@ -0,0 +1,120 @@
1
+ Metadata-Version: 2.1
2
+ Name: geoservercloud
3
+ Version: 0.3.1.dev4
4
+ Summary: Lightweight Python client to interact with GeoServer Cloud REST API, GeoServer ACL and OGC services
5
+ License: BSD-2-Clause
6
+ Author: Camptocamp
7
+ Author-email: info@camptocamp.com
8
+ Requires-Python: >=3.9
9
+ Classifier: License :: OSI Approved :: BSD License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Dist: OWSLib
17
+ Requires-Dist: jsonschema
18
+ Requires-Dist: pytest-mock
19
+ Requires-Dist: requests
20
+ Requires-Dist: types-requests
21
+ Requires-Dist: types-xmltodict
22
+ Requires-Dist: xmltodict
23
+ Description-Content-Type: text/markdown
24
+
25
+ # python-geoservercloud
26
+
27
+ ## Installation
28
+
29
+ From PyPI:
30
+
31
+ ```shell
32
+ pip install geoservercloud
33
+ ```
34
+
35
+ From git repository:
36
+
37
+ ```shell
38
+ poetry install
39
+ ```
40
+
41
+ ## Quick start
42
+
43
+ ```python
44
+ from geoservercloud import GeoServerCloud
45
+ geoserver = GeoServerCloud(
46
+ url="http://localhost:9090/geoserver/cloud/",
47
+ user="admin",
48
+ password="geoserver",
49
+ )
50
+ geoserver.create_workspace("newworkspace")
51
+ ```
52
+
53
+ ## About
54
+
55
+ Lightweight Python client to interact with GeoServer Cloud REST API, GeoServer ACL and OGC services.
56
+ Intended use cases are listed below.
57
+
58
+ ### Programmatic setup of a GeoServer catalog
59
+
60
+ For example, creating a workspace, connecting to a PostGIS datastore and publishing a PG layer:
61
+
62
+ ```python
63
+ geoserver.create_workspace("example")
64
+ geoserver.create_pg_datastore(
65
+ workspace="example",
66
+ datastore="example_store",
67
+ pg_host="localhost",
68
+ pg_port=5432,
69
+ pg_db="database",
70
+ pg_user="user",
71
+ pg_password="password"
72
+ )
73
+ geoserver.create_feature_type(
74
+ layer="layer_example"
75
+ workspace="example",
76
+ datastore="example_store",
77
+ title={
78
+ "en":"Layer title",
79
+ "fr": "Titre de la couche",
80
+ "default": "Default title",
81
+ },
82
+ )
83
+ ```
84
+
85
+ ### Testing
86
+
87
+ Automatic tests of GeoServer functionalities with `pytest`, for example before upgrading.
88
+ The example below tests the fallback mechanism for internationalized layer titles in the GetCapabilities document.
89
+
90
+ ```python
91
+ @pytest.mark.parametrize(
92
+ "language,expected_title",
93
+ [
94
+ (
95
+ "en",
96
+ "Layer title",
97
+ ),
98
+ (
99
+ "fr",
100
+ "Titre de la couche",
101
+ ),
102
+ (
103
+ "de,en",
104
+ "Layer title",
105
+ ),
106
+ (
107
+ None,
108
+ "Default title",
109
+ ),
110
+ ],
111
+ )
112
+ def test_i18n_layer_title(geoserver, language, expected_title):
113
+ capabilities = geoserver.get_wms_layers(
114
+ workspace="example",
115
+ accept_languages=language,
116
+ )
117
+ layer = capabilities.get("Layer")
118
+ assert layer.get("Title") == expected_title
119
+ ```
120
+
@@ -0,0 +1,95 @@
1
+ # python-geoservercloud
2
+
3
+ ## Installation
4
+
5
+ From PyPI:
6
+
7
+ ```shell
8
+ pip install geoservercloud
9
+ ```
10
+
11
+ From git repository:
12
+
13
+ ```shell
14
+ poetry install
15
+ ```
16
+
17
+ ## Quick start
18
+
19
+ ```python
20
+ from geoservercloud import GeoServerCloud
21
+ geoserver = GeoServerCloud(
22
+ url="http://localhost:9090/geoserver/cloud/",
23
+ user="admin",
24
+ password="geoserver",
25
+ )
26
+ geoserver.create_workspace("newworkspace")
27
+ ```
28
+
29
+ ## About
30
+
31
+ Lightweight Python client to interact with GeoServer Cloud REST API, GeoServer ACL and OGC services.
32
+ Intended use cases are listed below.
33
+
34
+ ### Programmatic setup of a GeoServer catalog
35
+
36
+ For example, creating a workspace, connecting to a PostGIS datastore and publishing a PG layer:
37
+
38
+ ```python
39
+ geoserver.create_workspace("example")
40
+ geoserver.create_pg_datastore(
41
+ workspace="example",
42
+ datastore="example_store",
43
+ pg_host="localhost",
44
+ pg_port=5432,
45
+ pg_db="database",
46
+ pg_user="user",
47
+ pg_password="password"
48
+ )
49
+ geoserver.create_feature_type(
50
+ layer="layer_example"
51
+ workspace="example",
52
+ datastore="example_store",
53
+ title={
54
+ "en":"Layer title",
55
+ "fr": "Titre de la couche",
56
+ "default": "Default title",
57
+ },
58
+ )
59
+ ```
60
+
61
+ ### Testing
62
+
63
+ Automatic tests of GeoServer functionalities with `pytest`, for example before upgrading.
64
+ The example below tests the fallback mechanism for internationalized layer titles in the GetCapabilities document.
65
+
66
+ ```python
67
+ @pytest.mark.parametrize(
68
+ "language,expected_title",
69
+ [
70
+ (
71
+ "en",
72
+ "Layer title",
73
+ ),
74
+ (
75
+ "fr",
76
+ "Titre de la couche",
77
+ ),
78
+ (
79
+ "de,en",
80
+ "Layer title",
81
+ ),
82
+ (
83
+ None,
84
+ "Default title",
85
+ ),
86
+ ],
87
+ )
88
+ def test_i18n_layer_title(geoserver, language, expected_title):
89
+ capabilities = geoserver.get_wms_layers(
90
+ workspace="example",
91
+ accept_languages=language,
92
+ )
93
+ layer = capabilities.get("Layer")
94
+ assert layer.get("Title") == expected_title
95
+ ```
@@ -0,0 +1,4 @@
1
+ from .geoservercloud import GeoServerCloud
2
+ from .geoservercloudsync import GeoServerCloudSync
3
+
4
+ __all__: list[str] = ["GeoServerCloud", "GeoServerCloudSync"]