pythoncharmers-meta 0.3.2__tar.gz → 0.3.3__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.
@@ -1,11 +1,13 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: pythoncharmers-meta
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Meta package with dependencies for Python Charmers training courses
5
+ License-File: LICENSE
5
6
  Requires-Python: >=3.10
6
7
  Requires-Dist: black>=24.8.0
7
8
  Requires-Dist: diskcache>=5.6.3
8
9
  Requires-Dist: duckdb>=1.1.3
10
+ Requires-Dist: ftputil>=5.1.0
9
11
  Requires-Dist: h5py>=3.11.0
10
12
  Requires-Dist: humanize>=4.10.0
11
13
  Requires-Dist: hvplot>=0.10.0
@@ -17,6 +19,7 @@ Requires-Dist: keyrings-cryptfile>=1.3.9
17
19
  Requires-Dist: line-profiler>=4.1.3
18
20
  Requires-Dist: loguru>=0.7.2
19
21
  Requires-Dist: logzero>=1.7.0
22
+ Requires-Dist: lxml>=5.3.0
20
23
  Requires-Dist: matplotlib>=3.9.2
21
24
  Requires-Dist: memory-profiler>=0.61.0
22
25
  Requires-Dist: mypy>=1.11.2
@@ -29,9 +32,12 @@ Requires-Dist: parse>=1.20.2
29
32
  Requires-Dist: plotly>=5.24.0
30
33
  Requires-Dist: polars>=1.9.0
31
34
  Requires-Dist: psutil>=6.0.0
35
+ Requires-Dist: pydantic>=2.9.2
36
+ Requires-Dist: pyjanitor>=0.30.0
32
37
  Requires-Dist: requests>=2.32.3
33
38
  Requires-Dist: schedule>=1.2.2
34
39
  Requires-Dist: scipy>=1.14.1
40
+ Requires-Dist: seaborn>=0.13.2
35
41
  Requires-Dist: sqlalchemy>=2.0.35
36
42
  Requires-Dist: statsmodels>=0.14.4
37
43
  Requires-Dist: streamlit>=1.39.0
@@ -54,12 +60,15 @@ Requires-Dist: yellowbrick>=1.5; extra == 'dl'
54
60
  Provides-Extra: gis
55
61
  Requires-Dist: cartopy>=0.23.0; extra == 'gis'
56
62
  Requires-Dist: cftime>=1.6.4; extra == 'gis'
63
+ Requires-Dist: contextily>=1.6.2; extra == 'gis'
57
64
  Requires-Dist: dask-image>=2024.5.3; extra == 'gis'
58
65
  Requires-Dist: datashader>=0.16.3; extra == 'gis'
66
+ Requires-Dist: descartes>=1.1.0; extra == 'gis'
59
67
  Requires-Dist: fiona>=1.10.0; extra == 'gis'
60
68
  Requires-Dist: folium>=0.17.0; extra == 'gis'
61
69
  Requires-Dist: geoalchemy>=0.7.2; extra == 'gis'
62
70
  Requires-Dist: geopandas>=1.0.1; extra == 'gis'
71
+ Requires-Dist: geopy>=2.4.1; extra == 'gis'
63
72
  Requires-Dist: graphviz>=0.20.3; extra == 'gis'
64
73
  Requires-Dist: h5netcdf>=1.3.0; extra == 'gis'
65
74
  Requires-Dist: iris>=1.0.7; extra == 'gis'
@@ -67,6 +76,7 @@ Requires-Dist: netcdf4>=1.7.1.post2; extra == 'gis'
67
76
  Requires-Dist: networkx>=3.3; extra == 'gis'
68
77
  Requires-Dist: pint>=0.24.3; extra == 'gis'
69
78
  Requires-Dist: psycopg2-binary>=2.9.10; extra == 'gis'
79
+ Requires-Dist: pydantic-geojson>=0.2.0; extra == 'gis'
70
80
  Requires-Dist: pydap>=3.5; extra == 'gis'
71
81
  Requires-Dist: pyproj>=3.6.1; extra == 'gis'
72
82
  Requires-Dist: pysal>=24.7; extra == 'gis'
@@ -74,7 +84,6 @@ Requires-Dist: rasterio>=1.3.11; extra == 'gis'
74
84
  Requires-Dist: rioxarray>=0.17.0; extra == 'gis'
75
85
  Requires-Dist: scikit-image>=0.24.0; extra == 'gis'
76
86
  Requires-Dist: scipy>=1.14.1; extra == 'gis'
77
- Requires-Dist: seaborn>=0.13.2; extra == 'gis'
78
87
  Requires-Dist: shapely>=2.0.6; extra == 'gis'
79
88
  Requires-Dist: xarray>=2024.9.0; extra == 'gis'
80
89
  Requires-Dist: zarr>=2.18.3; extra == 'gis'
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "pythoncharmers-meta"
3
- version = "0.3.2"
3
+ version = "0.3.3"
4
4
  description = "Meta package with dependencies for Python Charmers training courses"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -39,6 +39,11 @@ dependencies = [
39
39
  "diskcache>=5.6.3",
40
40
  "duckdb>=1.1.3",
41
41
  "ibis-framework[duckdb,polars,sqlite]>=9.5.0",
42
+ "ftputil>=5.1.0",
43
+ "lxml>=5.3.0",
44
+ "pydantic>=2.9.2",
45
+ "pyjanitor>=0.30.0",
46
+ "seaborn>=0.13.2",
42
47
  ]
43
48
 
44
49
  [project.optional-dependencies]
@@ -55,7 +60,6 @@ gis = [
55
60
  "pysal>=24.7",
56
61
  "rioxarray>=0.17.0",
57
62
  "scikit-image>=0.24.0",
58
- "seaborn>=0.13.2",
59
63
  "netcdf4>=1.7.1.post2",
60
64
  "networkx>=3.3",
61
65
  "dask-image>=2024.5.3",
@@ -69,6 +73,10 @@ gis = [
69
73
  "pint>=0.24.3",
70
74
  "psycopg2-binary>=2.9.10",
71
75
  "geoalchemy>=0.7.2",
76
+ "geopy>=2.4.1",
77
+ "contextily>=1.6.2",
78
+ "descartes>=1.1.0",
79
+ "pydantic-geojson>=0.2.0",
72
80
  ]
73
81
  ml = [
74
82
  "scikit-learn>=1.5.1",
@@ -106,7 +114,6 @@ scieng = [
106
114
  "holoviews>=1.19.1",
107
115
  "bokeh>=3.4.3",
108
116
  # "streamlit>=1.39.0",
109
- # "seaborn>=0.13.2",
110
117
  "pyod>=2.0.1",
111
118
  "tables>=3.10.1",
112
119
  # "graphviz>=0.20.3",
@@ -887,6 +887,25 @@ wheels = [
887
887
  { url = "https://files.pythonhosted.org/packages/c6/c6/9963d588cc3d75d766c819e0377a168ef83cf3316a92769971527a1ad1de/colorcet-3.1.0-py3-none-any.whl", hash = "sha256:2a7d59cc8d0f7938eeedd08aad3152b5319b4ba3bcb7a612398cc17a384cb296", size = 260286 },
888
888
  ]
889
889
 
890
+ [[package]]
891
+ name = "contextily"
892
+ version = "1.6.2"
893
+ source = { registry = "https://pypi.org/simple" }
894
+ dependencies = [
895
+ { name = "geopy" },
896
+ { name = "joblib" },
897
+ { name = "matplotlib" },
898
+ { name = "mercantile" },
899
+ { name = "pillow" },
900
+ { name = "rasterio" },
901
+ { name = "requests" },
902
+ { name = "xyzservices" },
903
+ ]
904
+ sdist = { url = "https://files.pythonhosted.org/packages/85/5c/67e809b32a8e4017a2dbfea90d4401167b087fc0cab88e82c7abc4da91d6/contextily-1.6.2.tar.gz", hash = "sha256:3c747925269be248a9b1a761859e05d1681286e04d5d0796bdaf1de3409474bb", size = 22461478 }
905
+ wheels = [
906
+ { url = "https://files.pythonhosted.org/packages/fb/46/07a029b73f9a5c7bbf9b538e6441c42014a448f335a1cc780616f2594bad/contextily-1.6.2-py3-none-any.whl", hash = "sha256:b06ead7258b34e73db2e318e33554f54a22d207b3c272b74d8b64801773b3fc3", size = 17149 },
907
+ ]
908
+
890
909
  [[package]]
891
910
  name = "contourpy"
892
911
  version = "1.3.0"
@@ -1154,6 +1173,18 @@ wheels = [
1154
1173
  { url = "https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a", size = 11178 },
1155
1174
  ]
1156
1175
 
1176
+ [[package]]
1177
+ name = "descartes"
1178
+ version = "1.1.0"
1179
+ source = { registry = "https://pypi.org/simple" }
1180
+ dependencies = [
1181
+ { name = "matplotlib" },
1182
+ ]
1183
+ sdist = { url = "https://files.pythonhosted.org/packages/1d/6f/81735a30432b74f41db6754dd13869021ccfed3088d1cf7a6cfc0af9ac49/descartes-1.1.0.tar.gz", hash = "sha256:135a502146af5ed6ff359975e2ebc5fa4b71b5432c355c2cafdc6dea1337035b", size = 3525 }
1184
+ wheels = [
1185
+ { url = "https://files.pythonhosted.org/packages/e5/b6/1ed2eb03989ae574584664985367ba70cd9cf8b32ee8cad0e8aaeac819f3/descartes-1.1.0-py3-none-any.whl", hash = "sha256:4c62dc41109689d03e4b35de0a2bcbdeeb81047badc607c4415d5c753bd683af", size = 5804 },
1186
+ ]
1187
+
1157
1188
  [[package]]
1158
1189
  name = "dill"
1159
1190
  version = "0.3.8"
@@ -1570,6 +1601,12 @@ http = [
1570
1601
  { name = "aiohttp" },
1571
1602
  ]
1572
1603
 
1604
+ [[package]]
1605
+ name = "ftputil"
1606
+ version = "5.1.0"
1607
+ source = { registry = "https://pypi.org/simple" }
1608
+ sdist = { url = "https://files.pythonhosted.org/packages/73/dc/83f3fa78a9c8a8fe119a70d040df67799094821d3cad511ee0987d544a10/ftputil-5.1.0.tar.gz", hash = "sha256:e9e62d3fd307ef9c52e43b33fd92759fc94c04d8b5178f85f641b183906d4353", size = 86403 }
1609
+
1573
1610
  [[package]]
1574
1611
  name = "future"
1575
1612
  version = "1.0.0"
@@ -1588,6 +1625,15 @@ dependencies = [
1588
1625
  ]
1589
1626
  sdist = { url = "https://files.pythonhosted.org/packages/50/a1/a1b6bdc9e9d2cf3f1d44a86265f6405dc9412f1306d6b59df5cef5f7b4e2/GeoAlchemy-0.7.2.tar.gz", hash = "sha256:78ce2f57a7982051030ccc9a59eb589bf6e0b3fad93875add4c1f7ef65f91863", size = 57317 }
1590
1627
 
1628
+ [[package]]
1629
+ name = "geographiclib"
1630
+ version = "2.0"
1631
+ source = { registry = "https://pypi.org/simple" }
1632
+ sdist = { url = "https://files.pythonhosted.org/packages/96/cd/90271fd195d79a9c2af0ca21632b297a6cc3e852e0413a2e4519e67be213/geographiclib-2.0.tar.gz", hash = "sha256:f7f41c85dc3e1c2d3d935ec86660dc3b2c848c83e17f9a9e51ba9d5146a15859", size = 36720 }
1633
+ wheels = [
1634
+ { url = "https://files.pythonhosted.org/packages/9f/5a/a26132406f1f40cf51ea349a5f11b0a46cec02a2031ff82e391c2537247a/geographiclib-2.0-py3-none-any.whl", hash = "sha256:6b7225248e45ff7edcee32becc4e0a1504c606ac5ee163a5656d482e0cd38734", size = 40324 },
1635
+ ]
1636
+
1591
1637
  [[package]]
1592
1638
  name = "geopandas"
1593
1639
  version = "1.0.1"
@@ -1605,6 +1651,18 @@ wheels = [
1605
1651
  { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 },
1606
1652
  ]
1607
1653
 
1654
+ [[package]]
1655
+ name = "geopy"
1656
+ version = "2.4.1"
1657
+ source = { registry = "https://pypi.org/simple" }
1658
+ dependencies = [
1659
+ { name = "geographiclib" },
1660
+ ]
1661
+ sdist = { url = "https://files.pythonhosted.org/packages/0e/fd/ef6d53875ceab72c1fad22dbed5ec1ad04eb378c2251a6a8024bad890c3b/geopy-2.4.1.tar.gz", hash = "sha256:50283d8e7ad07d89be5cb027338c6365a32044df3ae2556ad3f52f4840b3d0d1", size = 117625 }
1662
+ wheels = [
1663
+ { url = "https://files.pythonhosted.org/packages/e5/15/cf2a69ade4b194aa524ac75112d5caac37414b20a3a03e6865dfe0bd1539/geopy-2.4.1-py3-none-any.whl", hash = "sha256:ae8b4bc5c1131820f4d75fce9d4aaaca0c85189b3aa5d64c3dcaf5e3b7b882a7", size = 125437 },
1664
+ ]
1665
+
1608
1666
  [[package]]
1609
1667
  name = "giddy"
1610
1668
  version = "2.3.5"
@@ -2689,6 +2747,18 @@ wheels = [
2689
2747
  { url = "https://files.pythonhosted.org/packages/49/26/aaca612a0634ceede20682e692a6c55e35a94c21ba36b807cc40fe910ae1/memory_profiler-0.61.0-py3-none-any.whl", hash = "sha256:400348e61031e3942ad4d4109d18753b2fb08c2f6fb8290671c5513a34182d84", size = 31803 },
2690
2748
  ]
2691
2749
 
2750
+ [[package]]
2751
+ name = "mercantile"
2752
+ version = "1.2.1"
2753
+ source = { registry = "https://pypi.org/simple" }
2754
+ dependencies = [
2755
+ { name = "click" },
2756
+ ]
2757
+ sdist = { url = "https://files.pythonhosted.org/packages/d2/c6/87409bcb26fb68c393fa8cf58ba09363aa7298cfb438a0109b5cb14bc98b/mercantile-1.2.1.tar.gz", hash = "sha256:fa3c6db15daffd58454ac198b31887519a19caccee3f9d63d17ae7ff61b3b56b", size = 26352 }
2758
+ wheels = [
2759
+ { url = "https://files.pythonhosted.org/packages/b2/d6/de0cc74f8d36976aeca0dd2e9cbf711882ff8e177495115fd82459afdc4d/mercantile-1.2.1-py3-none-any.whl", hash = "sha256:30f457a73ee88261aab787b7069d85961a5703bb09dc57a170190bc042cd023f", size = 14779 },
2760
+ ]
2761
+
2692
2762
  [[package]]
2693
2763
  name = "mgwr"
2694
2764
  version = "2.2.1"
@@ -2888,6 +2958,8 @@ wheels = [
2888
2958
  { url = "https://files.pythonhosted.org/packages/bc/f7/7ec7fddc92e50714ea3745631f79bd9c96424cb2702632521028e57d3a36/multiprocess-0.70.16-py310-none-any.whl", hash = "sha256:c4a9944c67bd49f823687463660a2d6daae94c289adff97e0f9d696ba6371d02", size = 134824 },
2889
2959
  { url = "https://files.pythonhosted.org/packages/50/15/b56e50e8debaf439f44befec5b2af11db85f6e0f344c3113ae0be0593a91/multiprocess-0.70.16-py311-none-any.whl", hash = "sha256:af4cabb0dac72abfb1e794fa7855c325fd2b55a10a44628a3c1ad3311c04127a", size = 143519 },
2890
2960
  { url = "https://files.pythonhosted.org/packages/0a/7d/a988f258104dcd2ccf1ed40fdc97e26c4ac351eeaf81d76e266c52d84e2f/multiprocess-0.70.16-py312-none-any.whl", hash = "sha256:fc0544c531920dde3b00c29863377f87e1632601092ea2daca74e4beb40faa2e", size = 146741 },
2961
+ { url = "https://files.pythonhosted.org/packages/ea/89/38df130f2c799090c978b366cfdf5b96d08de5b29a4a293df7f7429fa50b/multiprocess-0.70.16-py38-none-any.whl", hash = "sha256:a71d82033454891091a226dfc319d0cfa8019a4e888ef9ca910372a446de4435", size = 132628 },
2962
+ { url = "https://files.pythonhosted.org/packages/da/d9/f7f9379981e39b8c2511c9e0326d212accacb82f12fbfdc1aa2ce2a7b2b6/multiprocess-0.70.16-py39-none-any.whl", hash = "sha256:a0bafd3ae1b732eac64be2e72038231c1ba97724b60b09400d68f229fcc2fbf3", size = 133351 },
2891
2963
  ]
2892
2964
 
2893
2965
  [[package]]
@@ -2937,6 +3009,15 @@ wheels = [
2937
3009
  { url = "https://files.pythonhosted.org/packages/7a/00/09319b042fe581c2911020f21dd2919d1677ee9a7bd0003a690b47217140/narwhals-1.9.1-py3-none-any.whl", hash = "sha256:0375f40f98795e94d3622d085eb8e1df2d67f4fdcb281dcfa6f2158e52a36afe", size = 180836 },
2938
3010
  ]
2939
3011
 
3012
+ [[package]]
3013
+ name = "natsort"
3014
+ version = "8.4.0"
3015
+ source = { registry = "https://pypi.org/simple" }
3016
+ sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575 }
3017
+ wheels = [
3018
+ { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268 },
3019
+ ]
3020
+
2940
3021
  [[package]]
2941
3022
  name = "natural"
2942
3023
  version = "0.2.0"
@@ -3297,6 +3378,19 @@ xml = [
3297
3378
  { name = "lxml" },
3298
3379
  ]
3299
3380
 
3381
+ [[package]]
3382
+ name = "pandas-flavor"
3383
+ version = "0.6.0"
3384
+ source = { registry = "https://pypi.org/simple" }
3385
+ dependencies = [
3386
+ { name = "pandas" },
3387
+ { name = "xarray" },
3388
+ ]
3389
+ sdist = { url = "https://files.pythonhosted.org/packages/b8/d9/7d35f745a46892478b07c1f196d91b3669a725c46035ac3483d3ecf9e113/pandas_flavor-0.6.0.tar.gz", hash = "sha256:9fb8735102dcb65dae7ee5cda12b393ca134a909ebcfc0262c5cdc1d79ba007f", size = 7653 }
3390
+ wheels = [
3391
+ { url = "https://files.pythonhosted.org/packages/67/1a/bfb5574b215f530c7ac5be684f33d60b299abbebd763c203aa31755f2fb2/pandas_flavor-0.6.0-py3-none-any.whl", hash = "sha256:a32c9e2e0da702579320cf2bd0078cee91807713bc9c65ff522f6b0289899893", size = 7164 },
3392
+ ]
3393
+
3300
3394
  [[package]]
3301
3395
  name = "panel"
3302
3396
  version = "1.5.2"
@@ -3598,8 +3692,6 @@ version = "6.0.0"
3598
3692
  source = { registry = "https://pypi.org/simple" }
3599
3693
  sdist = { url = "https://files.pythonhosted.org/packages/18/c7/8c6872f7372eb6a6b2e4708b88419fb46b857f7a2e1892966b851cc79fc9/psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2", size = 508067 }
3600
3694
  wheels = [
3601
- { url = "https://files.pythonhosted.org/packages/c5/66/78c9c3020f573c58101dc43a44f6855d01bbbd747e24da2f0c4491200ea3/psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35", size = 249766 },
3602
- { url = "https://files.pythonhosted.org/packages/e1/3f/2403aa9558bea4d3854b0e5e567bc3dd8e9fbc1fc4453c0aa9aafeb75467/psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1", size = 253024 },
3603
3695
  { url = "https://files.pythonhosted.org/packages/0b/37/f8da2fbd29690b3557cca414c1949f92162981920699cd62095a984983bf/psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0", size = 250961 },
3604
3696
  { url = "https://files.pythonhosted.org/packages/35/56/72f86175e81c656a01c4401cd3b1c923f891b31fbcebe98985894176d7c9/psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0", size = 287478 },
3605
3697
  { url = "https://files.pythonhosted.org/packages/19/74/f59e7e0d392bc1070e9a70e2f9190d652487ac115bb16e2eff6b22ad1d24/psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd", size = 290455 },
@@ -3661,6 +3753,7 @@ wheels = [
3661
3753
  { url = "https://files.pythonhosted.org/packages/ce/ac/5b1ea50fc08a9df82de7e1771537557f07c2632231bbab652c7e22597908/psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bb89f0a835bcfc1d42ccd5f41f04870c1b936d8507c6df12b7737febc40f0909", size = 2822712 },
3662
3754
  { url = "https://files.pythonhosted.org/packages/c4/fc/504d4503b2abc4570fac3ca56eb8fed5e437bf9c9ef13f36b6621db8ef00/psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f0c2d907a1e102526dd2986df638343388b94c33860ff3bbe1384130828714b1", size = 2920155 },
3663
3755
  { url = "https://files.pythonhosted.org/packages/b2/d1/323581e9273ad2c0dbd1902f3fb50c441da86e894b6e25a73c3fda32c57e/psycopg2_binary-2.9.10-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f8157bed2f51db683f31306aa497311b560f2265998122abe1dce6428bd86567", size = 2959356 },
3756
+ { url = "https://files.pythonhosted.org/packages/08/50/d13ea0a054189ae1bc21af1d85b6f8bb9bbc5572991055d70ad9006fe2d6/psycopg2_binary-2.9.10-cp313-cp313-win_amd64.whl", hash = "sha256:27422aa5f11fbcd9b18da48373eb67081243662f9b46e6fd07c3eb46e4535142", size = 2569224 },
3664
3757
  ]
3665
3758
 
3666
3759
  [[package]]
@@ -3866,6 +3959,18 @@ wheels = [
3866
3959
  { url = "https://files.pythonhosted.org/packages/a9/f9/b6bcaf874f410564a78908739c80861a171788ef4d4f76f5009656672dfe/pydantic_core-2.23.4-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:9a5bce9d23aac8f0cf0836ecfc033896aa8443b501c58d0602dbfd5bd5b37753", size = 1920344 },
3867
3960
  ]
3868
3961
 
3962
+ [[package]]
3963
+ name = "pydantic-geojson"
3964
+ version = "0.2.0"
3965
+ source = { registry = "https://pypi.org/simple" }
3966
+ dependencies = [
3967
+ { name = "pydantic" },
3968
+ ]
3969
+ sdist = { url = "https://files.pythonhosted.org/packages/4e/a4/2d8745b3087eacb7741619cd7cecb3f7a605dd445ae2a849848c1d08fd35/pydantic_geojson-0.2.0.tar.gz", hash = "sha256:009dd35eef84330de3d90a159102dba9eccf5ef1fafd05bbd5ba3be541dc09ee", size = 7952 }
3970
+ wheels = [
3971
+ { url = "https://files.pythonhosted.org/packages/88/09/2719298014713a471f27214cc7688c7b94ca01e3cce8f63177d41219d5d8/pydantic_geojson-0.2.0-py3-none-any.whl", hash = "sha256:01197bed7caab646ca1607c526c3be62143eca34ba96bbfae09a736dbff2ddd2", size = 9584 },
3972
+ ]
3973
+
3869
3974
  [[package]]
3870
3975
  name = "pydap"
3871
3976
  version = "3.5"
@@ -3908,6 +4013,21 @@ wheels = [
3908
4013
  { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513 },
3909
4014
  ]
3910
4015
 
4016
+ [[package]]
4017
+ name = "pyjanitor"
4018
+ version = "0.30.0"
4019
+ source = { registry = "https://pypi.org/simple" }
4020
+ dependencies = [
4021
+ { name = "multipledispatch" },
4022
+ { name = "natsort" },
4023
+ { name = "pandas-flavor" },
4024
+ { name = "scipy" },
4025
+ ]
4026
+ sdist = { url = "https://files.pythonhosted.org/packages/c0/e7/506247111b3ae45a8cda32aff7c6d132117e752a48af86fe9bf6da89bf24/pyjanitor-0.30.0.tar.gz", hash = "sha256:9378a1b6c9ad214f1ef2e6b24796885228d7f6851fe7ea9904c90f4f4ee61bbe", size = 208814 }
4027
+ wheels = [
4028
+ { url = "https://files.pythonhosted.org/packages/97/e9/dd91a5093d422c6e7732c5148720e4fda4bf0ceec840e12b57f4eeb51843/pyjanitor-0.30.0-py3-none-any.whl", hash = "sha256:6a801bf28325ddc1892d40d026bf0843486e2c85d071c22f62db1c50e6776936", size = 207936 },
4029
+ ]
4030
+
3911
4031
  [[package]]
3912
4032
  name = "pymysql"
3913
4033
  version = "1.1.1"
@@ -4182,12 +4302,13 @@ wheels = [
4182
4302
 
4183
4303
  [[package]]
4184
4304
  name = "pythoncharmers-meta"
4185
- version = "0.3.2"
4305
+ version = "0.3.3"
4186
4306
  source = { editable = "." }
4187
4307
  dependencies = [
4188
4308
  { name = "black" },
4189
4309
  { name = "diskcache" },
4190
4310
  { name = "duckdb" },
4311
+ { name = "ftputil" },
4191
4312
  { name = "h5py" },
4192
4313
  { name = "humanize" },
4193
4314
  { name = "hvplot" },
@@ -4199,6 +4320,7 @@ dependencies = [
4199
4320
  { name = "line-profiler" },
4200
4321
  { name = "loguru" },
4201
4322
  { name = "logzero" },
4323
+ { name = "lxml" },
4202
4324
  { name = "matplotlib" },
4203
4325
  { name = "memory-profiler" },
4204
4326
  { name = "mypy" },
@@ -4211,9 +4333,12 @@ dependencies = [
4211
4333
  { name = "plotly" },
4212
4334
  { name = "polars" },
4213
4335
  { name = "psutil" },
4336
+ { name = "pydantic" },
4337
+ { name = "pyjanitor" },
4214
4338
  { name = "requests" },
4215
4339
  { name = "schedule" },
4216
4340
  { name = "scipy" },
4341
+ { name = "seaborn" },
4217
4342
  { name = "sqlalchemy" },
4218
4343
  { name = "statsmodels" },
4219
4344
  { name = "streamlit" },
@@ -4240,12 +4365,15 @@ dl = [
4240
4365
  gis = [
4241
4366
  { name = "cartopy" },
4242
4367
  { name = "cftime" },
4368
+ { name = "contextily" },
4243
4369
  { name = "dask-image" },
4244
4370
  { name = "datashader" },
4371
+ { name = "descartes" },
4245
4372
  { name = "fiona" },
4246
4373
  { name = "folium" },
4247
4374
  { name = "geoalchemy" },
4248
4375
  { name = "geopandas" },
4376
+ { name = "geopy" },
4249
4377
  { name = "graphviz" },
4250
4378
  { name = "h5netcdf" },
4251
4379
  { name = "iris" },
@@ -4253,6 +4381,7 @@ gis = [
4253
4381
  { name = "networkx" },
4254
4382
  { name = "pint" },
4255
4383
  { name = "psycopg2-binary" },
4384
+ { name = "pydantic-geojson" },
4256
4385
  { name = "pydap" },
4257
4386
  { name = "pyproj" },
4258
4387
  { name = "pysal" },
@@ -4260,7 +4389,6 @@ gis = [
4260
4389
  { name = "rioxarray" },
4261
4390
  { name = "scikit-image" },
4262
4391
  { name = "scipy" },
4263
- { name = "seaborn" },
4264
4392
  { name = "shapely" },
4265
4393
  { name = "xarray" },
4266
4394
  { name = "zarr" },
@@ -4330,6 +4458,7 @@ requires-dist = [
4330
4458
  { name = "bottleneck", marker = "extra == 'scieng'", specifier = ">=1.4.0" },
4331
4459
  { name = "cartopy", marker = "extra == 'gis'", specifier = ">=0.23.0" },
4332
4460
  { name = "cftime", marker = "extra == 'gis'", specifier = ">=1.6.4" },
4461
+ { name = "contextily", marker = "extra == 'gis'", specifier = ">=1.6.2" },
4333
4462
  { name = "cryptography", marker = "extra == 'net'", specifier = ">=43.0.0" },
4334
4463
  { name = "cryptography", marker = "extra == 'web'", specifier = ">=43.0.0" },
4335
4464
  { name = "dask", marker = "extra == 'scieng'", specifier = ">=2024.8.2" },
@@ -4337,6 +4466,7 @@ requires-dist = [
4337
4466
  { name = "dask-image", marker = "extra == 'scieng'", specifier = ">=2024.5.3" },
4338
4467
  { name = "dataset", marker = "extra == 'dl'", specifier = ">=1.5.2" },
4339
4468
  { name = "datashader", marker = "extra == 'gis'", specifier = ">=0.16.3" },
4469
+ { name = "descartes", marker = "extra == 'gis'", specifier = ">=1.1.0" },
4340
4470
  { name = "diskcache", specifier = ">=5.6.3" },
4341
4471
  { name = "diskcache", marker = "extra == 'dl'", specifier = ">=5.6.3" },
4342
4472
  { name = "distributed", marker = "extra == 'net'", specifier = ">=2024.9.1" },
@@ -4350,8 +4480,10 @@ requires-dist = [
4350
4480
  { name = "fiona", marker = "extra == 'gis'", specifier = ">=1.10.0" },
4351
4481
  { name = "flask", marker = "extra == 'web'", specifier = ">=3.0.3" },
4352
4482
  { name = "folium", marker = "extra == 'gis'", specifier = ">=0.17.0" },
4483
+ { name = "ftputil", specifier = ">=5.1.0" },
4353
4484
  { name = "geoalchemy", marker = "extra == 'gis'", specifier = ">=0.7.2" },
4354
4485
  { name = "geopandas", marker = "extra == 'gis'", specifier = ">=1.0.1" },
4486
+ { name = "geopy", marker = "extra == 'gis'", specifier = ">=2.4.1" },
4355
4487
  { name = "graphviz", marker = "extra == 'gis'", specifier = ">=0.20.3" },
4356
4488
  { name = "graphviz", marker = "extra == 'scieng'", specifier = ">=0.20.3" },
4357
4489
  { name = "h5netcdf", marker = "extra == 'gis'", specifier = ">=1.3.0" },
@@ -4372,6 +4504,7 @@ requires-dist = [
4372
4504
  { name = "line-profiler", specifier = ">=4.1.3" },
4373
4505
  { name = "loguru", specifier = ">=0.7.2" },
4374
4506
  { name = "logzero", specifier = ">=1.7.0" },
4507
+ { name = "lxml", specifier = ">=5.3.0" },
4375
4508
  { name = "matplotlib", specifier = ">=3.9.2" },
4376
4509
  { name = "memory-profiler", specifier = ">=0.61.0" },
4377
4510
  { name = "more-itertools", marker = "extra == 'dl'", specifier = ">=10.5.0" },
@@ -4395,7 +4528,10 @@ requires-dist = [
4395
4528
  { name = "psutil", specifier = ">=6.0.0" },
4396
4529
  { name = "psutil", marker = "extra == 'net'", specifier = ">=6.0.0" },
4397
4530
  { name = "psycopg2-binary", marker = "extra == 'gis'", specifier = ">=2.9.10" },
4531
+ { name = "pydantic", specifier = ">=2.9.2" },
4532
+ { name = "pydantic-geojson", marker = "extra == 'gis'", specifier = ">=0.2.0" },
4398
4533
  { name = "pydap", marker = "extra == 'gis'", specifier = ">=3.5" },
4534
+ { name = "pyjanitor", specifier = ">=0.30.0" },
4399
4535
  { name = "pyod", marker = "extra == 'dl'", specifier = ">=2.0.2" },
4400
4536
  { name = "pyod", marker = "extra == 'ml'", specifier = ">=2.0.1" },
4401
4537
  { name = "pyod", marker = "extra == 'scieng'", specifier = ">=2.0.1" },
@@ -4414,7 +4550,7 @@ requires-dist = [
4414
4550
  { name = "scikit-learn", marker = "extra == 'ml'", specifier = ">=1.5.1" },
4415
4551
  { name = "scipy", specifier = ">=1.14.1" },
4416
4552
  { name = "scipy", marker = "extra == 'gis'", specifier = ">=1.14.1" },
4417
- { name = "seaborn", marker = "extra == 'gis'", specifier = ">=0.13.2" },
4553
+ { name = "seaborn", specifier = ">=0.13.2" },
4418
4554
  { name = "shapely", marker = "extra == 'gis'", specifier = ">=2.0.6" },
4419
4555
  { name = "skorch", marker = "extra == 'dl'", specifier = ">=1.0.0" },
4420
4556
  { name = "skorch", marker = "extra == 'ml'", specifier = ">=1.0.0" },