giso 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.
giso-1.0.0/.gitignore ADDED
@@ -0,0 +1,285 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+ #poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ #pdm.lock
116
+ #pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ #pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # SageMath parsed files
135
+ *.sage.py
136
+
137
+ # Environments
138
+ .env
139
+ .envrc
140
+ .venv
141
+ env/
142
+ venv/
143
+ ENV/
144
+ env.bak/
145
+ venv.bak/
146
+
147
+ # Spyder project settings
148
+ .spyderproject
149
+ .spyproject
150
+
151
+ # Rope project settings
152
+ .ropeproject
153
+
154
+ # mkdocs documentation
155
+ /site
156
+
157
+ # mypy
158
+ .mypy_cache/
159
+ .dmypy.json
160
+ dmypy.json
161
+
162
+ # Pyre type checker
163
+ .pyre/
164
+
165
+ # pytype static type analyzer
166
+ .pytype/
167
+
168
+ # Cython debug symbols
169
+ cython_debug/
170
+
171
+ # PyCharm
172
+ # Covers JetBrains IDEs: IntelliJ, GoLand, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
173
+ # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
174
+
175
+ # User-specific stuff
176
+ .idea/**/workspace.xml
177
+ .idea/**/tasks.xml
178
+ .idea/**/usage.statistics.xml
179
+ .idea/**/dictionaries
180
+ .idea/**/shelf
181
+
182
+ # AWS User-specific
183
+ .idea/**/aws.xml
184
+
185
+ # Generated files
186
+ .idea/**/contentModel.xml
187
+
188
+ # Sensitive or high-churn files
189
+ .idea/**/dataSources/
190
+ .idea/**/dataSources.ids
191
+ .idea/**/dataSources.local.xml
192
+ .idea/**/sqlDataSources.xml
193
+ .idea/**/dynamic.xml
194
+ .idea/**/uiDesigner.xml
195
+ .idea/**/dbnavigator.xml
196
+
197
+ # Gradle
198
+ .idea/**/gradle.xml
199
+ .idea/**/libraries
200
+
201
+ # Gradle and Maven with auto-import
202
+ # When using Gradle or Maven with auto-import, you should exclude module files,
203
+ # since they will be recreated, and may cause churn. Uncomment if using
204
+ # auto-import.
205
+ # .idea/artifacts
206
+ # .idea/compiler.xml
207
+ # .idea/jarRepositories.xml
208
+ # .idea/modules.xml
209
+ # .idea/*.iml
210
+ # .idea/modules
211
+ # *.iml
212
+ # *.ipr
213
+
214
+ # CMake
215
+ cmake-build-*/
216
+
217
+ # Mongo Explorer plugin
218
+ .idea/**/mongoSettings.xml
219
+
220
+ # File-based project format
221
+ *.iws
222
+
223
+ # IntelliJ
224
+ out/
225
+
226
+ # mpeltonen/sbt-idea plugin
227
+ .idea_modules/
228
+
229
+ # JIRA plugin
230
+ atlassian-ide-plugin.xml
231
+
232
+ # Cursive Clojure plugin
233
+ .idea/replstate.xml
234
+
235
+ # SonarLint plugin
236
+ .idea/sonarlint/
237
+ .idea/sonarlint.xml # see https://community.sonarsource.com/t/is-the-file-idea-idea-idea-sonarlint-xml-intended-to-be-under-source-control/121119
238
+
239
+ # Crashlytics plugin (for Android Studio and IntelliJ)
240
+ com_crashlytics_export_strings.xml
241
+ crashlytics.properties
242
+ crashlytics-build.properties
243
+ fabric.properties
244
+
245
+ # Editor-based HTTP Client
246
+ .idea/httpRequests
247
+ http-client.private.env.json
248
+
249
+ # Android studio 3.1+ serialized cache file
250
+ .idea/caches/build_file_checksums.ser
251
+
252
+ # Apifox Helper cache
253
+ .idea/.cache/.Apifox_Helper
254
+ .idea/ApifoxUploaderProjectSetting.xml
255
+
256
+ # Abstra
257
+ # Abstra is an AI-powered process automation framework.
258
+ # Ignore directories containing user credentials, local state, and settings.
259
+ # Learn more at https://abstra.io/docs
260
+ .abstra/
261
+
262
+ # Visual Studio Code
263
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
264
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
265
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
266
+ # you could uncomment the following to ignore the entire vscode folder
267
+ # .vscode/
268
+
269
+ # Ruff stuff:
270
+ .ruff_cache/
271
+
272
+ # PyPI configuration file
273
+ .pypirc
274
+
275
+ # Cursor
276
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
277
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
278
+ # refer to https://docs.cursor.com/context/ignore-files
279
+ .cursorignore
280
+ .cursorindexingignore
281
+
282
+ # Marimo
283
+ marimo/_static/
284
+ marimo/_lsp/
285
+ __marimo__/
@@ -0,0 +1,5 @@
1
+ # Changelog
2
+
3
+ ## v1.0.0
4
+
5
+ - Initial release
@@ -0,0 +1,37 @@
1
+ # Contributing
2
+
3
+ Questions and suggestions are welcomed in the [Issues section](https://github.com/corbel-spatial/giso/issues). The information below will help you set up a
4
+ development environment if you wish to submit pull requests.
5
+
6
+ ## Development Environment Setup
7
+
8
+ First, install the [Pixi](https://pixi.sh/latest/installation/) package management tool. Then,
9
+
10
+ ```shell
11
+ git clone https://github.com/corbel-spatial/giso.git
12
+ cd giso
13
+ pixi install -a
14
+ ```
15
+
16
+ To test the CLI:
17
+
18
+ ```shell
19
+ pixi shell -e dev
20
+ giso --help
21
+ ```
22
+
23
+ To run the pytest suite:
24
+
25
+ ```shell
26
+ pixi run test-py313
27
+ ```
28
+
29
+ ## IDE Support
30
+
31
+ Pixi has extenions that support various code editing applications. By default `pixi install` will install `pixi-pycharm` for [JetBrains PyCharm](https://pixi.sh/latest/integration/editor/jetbrains/), and you can set the project's Python interpreter to the `dev` environment.
32
+
33
+ Pixi also supports
34
+ [VSCode](https://pixi.sh/latest/integration/editor/vscode/),
35
+ [Zed](https://pixi.sh/latest/integration/editor/zed/),
36
+ [RStudio](https://pixi.sh/latest/integration/editor/r_studio/), and
37
+ [JupyterLab](https://pixi.sh/latest/integration/editor/jupyterlab/).
giso-1.0.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Peter Von der Porten
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
giso-1.0.0/PKG-INFO ADDED
@@ -0,0 +1,85 @@
1
+ Metadata-Version: 2.4
2
+ Name: giso
3
+ Version: 1.0.0
4
+ Summary: A simple command line tool to help with geocoding country/region ISO 3166-2 codes
5
+ Project-URL: homepage, https://pypi.org/project/giso/
6
+ Project-URL: repository, https://github.com/corbel-spatial/giso
7
+ Project-URL: issues, https://github.com/corbel-spatial/giso/issues
8
+ Project-URL: changelog, https://github.com/corbel-spatial/giso/blob/main/CHANGELOG.md
9
+ Author-email: Peter Von der Porten <dev@corbelspatial.com>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Information Technology
14
+ Classifier: Operating System :: MacOS
15
+ Classifier: Operating System :: Microsoft :: Windows :: Windows 10
16
+ Classifier: Operating System :: Microsoft :: Windows :: Windows 11
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Scientific/Engineering :: GIS
25
+ Requires-Python: >=3.10
26
+ Requires-Dist: apache-sedona[db]<2,>=1.8.0
27
+ Requires-Dist: click
28
+ Requires-Dist: geopandas>=1.1.0
29
+ Requires-Dist: pyarrow
30
+ Description-Content-Type: text/markdown
31
+
32
+ [![PyPI - Version](https://img.shields.io/pypi/v/giso)](https://pypi.org/project/giso/)
33
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/giso)](https://pypi.org/project/giso/)
34
+ [![PyPI Downloads](https://static.pepy.tech/badge/giso/month)](https://pepy.tech/projects/giso)
35
+ [![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey.svg?logo=)](https://github.com/corbel-spatial/giso/blob/main/LICENSE)
36
+ [![Pixi Badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/prefix-dev/pixi/main/assets/badge/v0.json)](https://pixi.sh)
37
+
38
+ # giso
39
+
40
+ A simple command line tool to help with geocoding country/region [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) codes.
41
+
42
+ Includes a public domain reference dataset from [Natural Earth Data](https://github.com/nvkelso/natural-earth-vector)
43
+ which is stored in [GeoParquet](https://geoparquet.org/) format and is accessed with [SedonaDB](https://sedona.apache.org/sedonadb/latest/).
44
+
45
+ ## Installation
46
+
47
+ ```shell
48
+ python -m pip install giso
49
+ ```
50
+
51
+ ## Basic Usage
52
+
53
+ `giso` takes one of two inputs:
54
+
55
+ - A longitude/latitude coordinate pair. (Decimal degrees in WGS 1984 separated by a comma or a space.)
56
+ Returns the corresponding ISO 3166-2 code.
57
+
58
+ ```shell
59
+ giso -122.2483823, 37.8245529
60
+ # US-CA
61
+ ```
62
+
63
+ - A valid ISO 3166-2 code. Returns the corresponding geometry as Well-Known Text (WKT).
64
+
65
+ ```shell
66
+ giso US-CA
67
+ # MULTIPOLYGON (((-114.724285 32.712836, -114.764541 32.709839, [...]
68
+ ```
69
+
70
+ Returns `None` if there are no hits.
71
+
72
+ `giso` can also be used as a Python package:
73
+
74
+ ```python
75
+ >>> import giso
76
+ >>> giso.reverse_geocode(103.8455041, 1.2936855)
77
+ 'SG-01'
78
+ >>> giso.geocode("SG-01")
79
+ < POLYGON((103.898 1.305, 103.888 1.301, 103.853 1.277, 103.847 1.272, 103.8 ... >
80
+ ```
81
+
82
+
83
+ ## References
84
+
85
+ - [Natural Earth Data homepage](https://www.naturalearthdata.com/)
giso-1.0.0/README.md ADDED
@@ -0,0 +1,54 @@
1
+ [![PyPI - Version](https://img.shields.io/pypi/v/giso)](https://pypi.org/project/giso/)
2
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/giso)](https://pypi.org/project/giso/)
3
+ [![PyPI Downloads](https://static.pepy.tech/badge/giso/month)](https://pepy.tech/projects/giso)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-lightgrey.svg?logo=)](https://github.com/corbel-spatial/giso/blob/main/LICENSE)
5
+ [![Pixi Badge](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/prefix-dev/pixi/main/assets/badge/v0.json)](https://pixi.sh)
6
+
7
+ # giso
8
+
9
+ A simple command line tool to help with geocoding country/region [ISO 3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) codes.
10
+
11
+ Includes a public domain reference dataset from [Natural Earth Data](https://github.com/nvkelso/natural-earth-vector)
12
+ which is stored in [GeoParquet](https://geoparquet.org/) format and is accessed with [SedonaDB](https://sedona.apache.org/sedonadb/latest/).
13
+
14
+ ## Installation
15
+
16
+ ```shell
17
+ python -m pip install giso
18
+ ```
19
+
20
+ ## Basic Usage
21
+
22
+ `giso` takes one of two inputs:
23
+
24
+ - A longitude/latitude coordinate pair. (Decimal degrees in WGS 1984 separated by a comma or a space.)
25
+ Returns the corresponding ISO 3166-2 code.
26
+
27
+ ```shell
28
+ giso -122.2483823, 37.8245529
29
+ # US-CA
30
+ ```
31
+
32
+ - A valid ISO 3166-2 code. Returns the corresponding geometry as Well-Known Text (WKT).
33
+
34
+ ```shell
35
+ giso US-CA
36
+ # MULTIPOLYGON (((-114.724285 32.712836, -114.764541 32.709839, [...]
37
+ ```
38
+
39
+ Returns `None` if there are no hits.
40
+
41
+ `giso` can also be used as a Python package:
42
+
43
+ ```python
44
+ >>> import giso
45
+ >>> giso.reverse_geocode(103.8455041, 1.2936855)
46
+ 'SG-01'
47
+ >>> giso.geocode("SG-01")
48
+ < POLYGON((103.898 1.305, 103.888 1.301, 103.853 1.277, 103.847 1.272, 103.8 ... >
49
+ ```
50
+
51
+
52
+ ## References
53
+
54
+ - [Natural Earth Data homepage](https://www.naturalearthdata.com/)
giso-1.0.0/TODO.md ADDED
@@ -0,0 +1,3 @@
1
+ # TODO
2
+
3
+ - Add CLI option to save output to a file