mapreader 1.8.2.post0.dev9__tar.gz → 1.8.2.post0.dev24__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 (52) hide show
  1. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/PKG-INFO +15 -15
  2. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/_version.py +3 -3
  3. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/annotate/annotator.py +2 -2
  4. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/classify/classifier.py +27 -2
  5. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/classify/load_annotations.py +1 -1
  6. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/download/sheet_downloader.py +1 -1
  7. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/load/images.py +1 -1
  8. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/process/occlusion_analysis.py +2 -2
  9. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader.egg-info/PKG-INFO +15 -15
  10. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader.egg-info/requires.txt +14 -14
  11. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/setup.py +14 -14
  12. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/LICENSE +0 -0
  13. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/README.md +0 -0
  14. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/__init__.py +0 -0
  15. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/__main__.py +0 -0
  16. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/annotate/__init__.py +0 -0
  17. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/classify/__init__.py +0 -0
  18. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/classify/custom_models.py +0 -0
  19. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/classify/datasets.py +0 -0
  20. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/download/__init__.py +0 -0
  21. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/download/data_structures.py +0 -0
  22. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/download/downloader.py +0 -0
  23. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/download/downloader_utils.py +0 -0
  24. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/download/iiif_downloader.py +0 -0
  25. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/download/tile_loading.py +0 -0
  26. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/download/tile_merging.py +0 -0
  27. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/load/__init__.py +0 -0
  28. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/load/geo_utils.py +0 -0
  29. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/load/loader.py +0 -0
  30. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/process/__init__.py +0 -0
  31. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/process/context_post_process.py +0 -0
  32. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/process/process.py +0 -0
  33. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/spot_text/__init__.py +0 -0
  34. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/spot_text/dataclasses.py +0 -0
  35. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/spot_text/deepsolo_runner.py +0 -0
  36. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/spot_text/dptext_detr_runner.py +0 -0
  37. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/spot_text/maptext_runner.py +0 -0
  38. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/spot_text/runner_base.py +0 -0
  39. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/utils/__init__.py +0 -0
  40. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/utils/compute_and_save_stats.py +0 -0
  41. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/utils/load_frames.py +0 -0
  42. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader/utils/slice_parallel.py +0 -0
  43. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader.egg-info/SOURCES.txt +0 -0
  44. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader.egg-info/dependency_links.txt +0 -0
  45. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader.egg-info/entry_points.txt +0 -0
  46. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader.egg-info/not-zip-safe +0 -0
  47. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/mapreader.egg-info/top_level.txt +0 -0
  48. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/setup.cfg +0 -0
  49. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/tests/test_geo_pipeline.py +0 -0
  50. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/tests/test_import.py +0 -0
  51. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/tests/test_utils_load_frames.py +0 -0
  52. {mapreader-1.8.2.post0.dev9 → mapreader-1.8.2.post0.dev24}/versioneer.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mapreader
3
- Version: 1.8.2.post0.dev9
3
+ Version: 1.8.2.post0.dev24
4
4
  Summary: A computer vision pipeline for the semantic exploration of maps/images at scale
5
5
  Home-page: https://github.com/Living-with-machines/MapReader
6
6
  Download-URL: https://github.com/Living-with-machines/MapReader/archive/refs/heads/main.zip
@@ -28,8 +28,8 @@ Requires-Python: >=3.9
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE
30
30
  Requires-Dist: matplotlib<4.0.0,>=3.5.0
31
- Requires-Dist: numpy<2.0.0,>=1.21.5
32
- Requires-Dist: pandas>=2.0.0
31
+ Requires-Dist: numpy<3.0.0,>=1.21.5
32
+ Requires-Dist: pandas<3.0.0,>=2.0.0
33
33
  Requires-Dist: pyproj<4.0.0,>=3.2.0
34
34
  Requires-Dist: azure-storage-blob<13.0.0,>=12.9.0
35
35
  Requires-Dist: aiohttp<4.0.0,>=3.8.1
@@ -37,39 +37,39 @@ Requires-Dist: Shapely<3.0.0,>=2.0.0
37
37
  Requires-Dist: nest-asyncio<2.0.0,>=1.5.1
38
38
  Requires-Dist: scikit-image>=0.18.3
39
39
  Requires-Dist: scikit-learn<2.0.0,>=1.0.1
40
- Requires-Dist: torch<=2.2.2,>=1.10.0
41
- Requires-Dist: torchvision<=0.17.2,>=0.11.1
40
+ Requires-Dist: torch<=2.12.0,>=1.10.0
41
+ Requires-Dist: torchvision<=0.27.0,>=0.11.1
42
42
  Requires-Dist: jupyter<2.0.0,>=1.0.0
43
- Requires-Dist: ipykernel<7.0.0,>=6.5.1
43
+ Requires-Dist: ipykernel<8.0.0,>=6.5.1
44
44
  Requires-Dist: ipywidgets<9.0.0,>=8.0.0
45
45
  Requires-Dist: ipyannotate==0.1.0-beta.0
46
- Requires-Dist: Cython<0.30.0,>=0.29.24
46
+ Requires-Dist: Cython<4.0.0,>=0.29.24
47
47
  Requires-Dist: PyYAML<7.0,>=6.0
48
48
  Requires-Dist: tensorboard<3.0.0,>=2.7.0
49
49
  Requires-Dist: parhugin<0.0.4,>=0.0.3
50
- Requires-Dist: geopy==2.1.0
50
+ Requires-Dist: geopy<3.0.0,>=2.1.0
51
51
  Requires-Dist: rasterio<2.0.0,>=1.2.10
52
52
  Requires-Dist: simplekml<2.0.0,>=1.3.6
53
53
  Requires-Dist: versioneer>=0.28
54
54
  Requires-Dist: tqdm<5.0.0
55
55
  Requires-Dist: torchinfo<2.0.0
56
56
  Requires-Dist: openpyxl<4.0.0,>=3.1.2
57
- Requires-Dist: geopandas<1.0.0
57
+ Requires-Dist: geopandas<2.0.0,>=1.0.0
58
58
  Requires-Dist: pyogrio>=0.7.2
59
59
  Requires-Dist: cartopy>=0.22.0
60
60
  Requires-Dist: joblib>=1.4.0
61
61
  Requires-Dist: opencv-python<5.0.0.0,>=4.8.1.78
62
62
  Requires-Dist: folium<1.0.0,>=0.12
63
63
  Requires-Dist: mapclassify<3.0.0,>=2.0.0
64
- Requires-Dist: xyzservices==2024.9.0
64
+ Requires-Dist: xyzservices>=2024.9.0
65
65
  Requires-Dist: piffle>=0.7.0
66
66
  Requires-Dist: lxml
67
67
  Provides-Extra: dev
68
- Requires-Dist: pytest<9.0.0; extra == "dev"
69
- Requires-Dist: pytest-cov<6.0.0,>=4.1.0; extra == "dev"
70
- Requires-Dist: timm<1.0.0; extra == "dev"
71
- Requires-Dist: transformers!=4.50.0,<4.51.3; extra == "dev"
72
- Requires-Dist: black<25.0.0,>=23.7.0; extra == "dev"
68
+ Requires-Dist: pytest<10.0.0; extra == "dev"
69
+ Requires-Dist: pytest-cov<8.0.0,>=4.1.0; extra == "dev"
70
+ Requires-Dist: timm<2.0.0; extra == "dev"
71
+ Requires-Dist: transformers!=4.50.0,<5.0.0,>=4.26.0; extra == "dev"
72
+ Requires-Dist: black<27.0.0,>=23.7.0; extra == "dev"
73
73
  Requires-Dist: flake8<8.0.0,>=6.0.0; extra == "dev"
74
74
  Dynamic: author
75
75
  Dynamic: classifier
@@ -8,11 +8,11 @@ import json
8
8
 
9
9
  version_json = '''
10
10
  {
11
- "date": "2026-02-26T15:15:54+0000",
11
+ "date": "2026-09-13T07:48:00+0100",
12
12
  "dirty": false,
13
13
  "error": null,
14
- "full-revisionid": "87578a471ab1dcadf80a2552aa31a3f50cac862a",
15
- "version": "1.8.2.post0.dev9"
14
+ "full-revisionid": "398631a557be291e53f5f4efaa4895883da2cdb4",
15
+ "version": "1.8.2.post0.dev24"
16
16
  }
17
17
  ''' # END VERSION_JSON
18
18
 
@@ -477,7 +477,7 @@ class Annotator:
477
477
  """
478
478
 
479
479
  def check_eligibility(row):
480
- if row.label not in [np.NaN, None]:
480
+ if row.label not in [np.nan, None]:
481
481
  return False
482
482
 
483
483
  if self._filter_for is None:
@@ -546,7 +546,7 @@ class Annotator:
546
546
 
547
547
  # Dim the image
548
548
  if dim in ["True", True]:
549
- im_array = np.array(im)
549
+ im_array = np.array(im, dtype=np.float32)
550
550
  im_array = 256 - (256 - im_array) * 0.4 # lighten image
551
551
  im = Image.fromarray(im_array.astype(np.uint8))
552
552
 
@@ -108,6 +108,7 @@ class ClassifierContainer:
108
108
  is_inception: bool = False,
109
109
  load_path: str | None = None,
110
110
  force_device: bool = False,
111
+ huggingface: bool = False,
111
112
  **kwargs,
112
113
  ):
113
114
  # set up device
@@ -149,7 +150,31 @@ class ClassifierContainer:
149
150
  self.input_size = input_size
150
151
  self.is_inception = is_inception
151
152
  elif isinstance(model, str):
152
- self._initialize_model(model, **kwargs)
153
+ if huggingface:
154
+ try:
155
+ from transformers import AutoModelForImageClassification, AutoImageProcessor
156
+ except ImportError:
157
+ raise ImportError(
158
+ "Hugging Face models require the 'transformers' library: 'pip install transformers'."
159
+ )
160
+ print(f"[INFO] Initializing Hugging Face model: {model}")
161
+ num_labels = len(self.labels_map)
162
+ self.model = AutoModelForImageClassification.from_pretrained(
163
+ model,
164
+ num_labels=num_labels,
165
+ ignore_mismatched_sizes=True
166
+ ).to(self.device)
167
+ hf_processor = AutoImageProcessor.from_pretrained(model)
168
+ size = getattr(hf_processor, "size", {})
169
+ if "height" in size and "width" in size:
170
+ size = (size["height"], size["width"])
171
+ elif "shortest_edge" in size:
172
+ size = (size["shortest_edge"], size["shortest_edge"])
173
+ else:
174
+ size = input_size
175
+ self.is_inception = False
176
+ else:
177
+ self._initialize_model(model, **kwargs)
153
178
 
154
179
  self.optimizer = None
155
180
  self.scheduler = None
@@ -1745,7 +1770,7 @@ Use ``torch.optim.lr_scheduler`` directly and then the ``add_scheduler`` method
1745
1770
  par_name = os.path.dirname(load_path)
1746
1771
  base_name = os.path.basename(load_path)
1747
1772
  path2model = os.path.join(par_name, f"model_{base_name}")
1748
- self.model = torch.load(path2model, map_location=mydevice)
1773
+ self.model = torch.load(path2model, map_location=mydevice, weights_only=False)
1749
1774
 
1750
1775
  try:
1751
1776
  self.device = mydevice
@@ -869,7 +869,7 @@ Please check your image paths and update them if necessary.'
869
869
  value_counts = (
870
870
  datasets["train"].patch_df[self.label_col].value_counts().to_list()
871
871
  )
872
- weights = np.reciprocal(Tensor(value_counts))
872
+ weights = Tensor(value_counts).reciprocal()
873
873
  weights = weights.double()
874
874
  sampler = WeightedRandomSampler(
875
875
  weights[datasets["train"].patch_df["label_index"].tolist()],
@@ -170,7 +170,7 @@ class SheetDownloader:
170
170
  """
171
171
  Creates a multipolygon representing all maps in metadata.
172
172
  """
173
- self.merged_polygon = self.metadata["geometry"].unary_union
173
+ self.merged_polygon = self.metadata["geometry"].union_all()
174
174
 
175
175
  def get_minmax_latlon(self) -> None:
176
176
  """
@@ -897,7 +897,7 @@ See https://pillow.readthedocs.io/en/stable/handbook/concepts.html#modes for mor
897
897
  self._add_patch_coords_id(patch_id, verbose)
898
898
 
899
899
  if isinstance(patch_df, gpd.GeoDataFrame):
900
- parent_polygon = patch_df.unary_union
900
+ parent_polygon = patch_df.union_all()
901
901
  parent_coords = parent_polygon.bounds
902
902
 
903
903
  self.parents[image_id]["coordinates"] = parent_coords
@@ -110,7 +110,7 @@ class OcclusionAnalyzer:
110
110
  return len(self.patch_df)
111
111
 
112
112
  def _load_model(self, model_path: str) -> nn.Module:
113
- model = torch.load(model_path, map_location=self.device)
113
+ model = torch.load(model_path, map_location=self.device, weights_only=False)
114
114
  return model
115
115
 
116
116
  def add_loss_fn(
@@ -284,7 +284,7 @@ class OcclusionAnalyzer:
284
284
  # preprocess the occluded image and get the prediction
285
285
  image_tensor = self._preprocess_image(occluded_image)
286
286
  prediction = self.model(image_tensor)
287
- loss = round(float(self.loss_fn(prediction, gt_prediction)), 4)
287
+ loss = round(float(self.loss_fn(prediction, gt_prediction).detach()), 4)
288
288
 
289
289
  # store the loss in the heatmap
290
290
  heatmap[row, column] = loss
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mapreader
3
- Version: 1.8.2.post0.dev9
3
+ Version: 1.8.2.post0.dev24
4
4
  Summary: A computer vision pipeline for the semantic exploration of maps/images at scale
5
5
  Home-page: https://github.com/Living-with-machines/MapReader
6
6
  Download-URL: https://github.com/Living-with-machines/MapReader/archive/refs/heads/main.zip
@@ -28,8 +28,8 @@ Requires-Python: >=3.9
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE
30
30
  Requires-Dist: matplotlib<4.0.0,>=3.5.0
31
- Requires-Dist: numpy<2.0.0,>=1.21.5
32
- Requires-Dist: pandas>=2.0.0
31
+ Requires-Dist: numpy<3.0.0,>=1.21.5
32
+ Requires-Dist: pandas<3.0.0,>=2.0.0
33
33
  Requires-Dist: pyproj<4.0.0,>=3.2.0
34
34
  Requires-Dist: azure-storage-blob<13.0.0,>=12.9.0
35
35
  Requires-Dist: aiohttp<4.0.0,>=3.8.1
@@ -37,39 +37,39 @@ Requires-Dist: Shapely<3.0.0,>=2.0.0
37
37
  Requires-Dist: nest-asyncio<2.0.0,>=1.5.1
38
38
  Requires-Dist: scikit-image>=0.18.3
39
39
  Requires-Dist: scikit-learn<2.0.0,>=1.0.1
40
- Requires-Dist: torch<=2.2.2,>=1.10.0
41
- Requires-Dist: torchvision<=0.17.2,>=0.11.1
40
+ Requires-Dist: torch<=2.12.0,>=1.10.0
41
+ Requires-Dist: torchvision<=0.27.0,>=0.11.1
42
42
  Requires-Dist: jupyter<2.0.0,>=1.0.0
43
- Requires-Dist: ipykernel<7.0.0,>=6.5.1
43
+ Requires-Dist: ipykernel<8.0.0,>=6.5.1
44
44
  Requires-Dist: ipywidgets<9.0.0,>=8.0.0
45
45
  Requires-Dist: ipyannotate==0.1.0-beta.0
46
- Requires-Dist: Cython<0.30.0,>=0.29.24
46
+ Requires-Dist: Cython<4.0.0,>=0.29.24
47
47
  Requires-Dist: PyYAML<7.0,>=6.0
48
48
  Requires-Dist: tensorboard<3.0.0,>=2.7.0
49
49
  Requires-Dist: parhugin<0.0.4,>=0.0.3
50
- Requires-Dist: geopy==2.1.0
50
+ Requires-Dist: geopy<3.0.0,>=2.1.0
51
51
  Requires-Dist: rasterio<2.0.0,>=1.2.10
52
52
  Requires-Dist: simplekml<2.0.0,>=1.3.6
53
53
  Requires-Dist: versioneer>=0.28
54
54
  Requires-Dist: tqdm<5.0.0
55
55
  Requires-Dist: torchinfo<2.0.0
56
56
  Requires-Dist: openpyxl<4.0.0,>=3.1.2
57
- Requires-Dist: geopandas<1.0.0
57
+ Requires-Dist: geopandas<2.0.0,>=1.0.0
58
58
  Requires-Dist: pyogrio>=0.7.2
59
59
  Requires-Dist: cartopy>=0.22.0
60
60
  Requires-Dist: joblib>=1.4.0
61
61
  Requires-Dist: opencv-python<5.0.0.0,>=4.8.1.78
62
62
  Requires-Dist: folium<1.0.0,>=0.12
63
63
  Requires-Dist: mapclassify<3.0.0,>=2.0.0
64
- Requires-Dist: xyzservices==2024.9.0
64
+ Requires-Dist: xyzservices>=2024.9.0
65
65
  Requires-Dist: piffle>=0.7.0
66
66
  Requires-Dist: lxml
67
67
  Provides-Extra: dev
68
- Requires-Dist: pytest<9.0.0; extra == "dev"
69
- Requires-Dist: pytest-cov<6.0.0,>=4.1.0; extra == "dev"
70
- Requires-Dist: timm<1.0.0; extra == "dev"
71
- Requires-Dist: transformers!=4.50.0,<4.51.3; extra == "dev"
72
- Requires-Dist: black<25.0.0,>=23.7.0; extra == "dev"
68
+ Requires-Dist: pytest<10.0.0; extra == "dev"
69
+ Requires-Dist: pytest-cov<8.0.0,>=4.1.0; extra == "dev"
70
+ Requires-Dist: timm<2.0.0; extra == "dev"
71
+ Requires-Dist: transformers!=4.50.0,<5.0.0,>=4.26.0; extra == "dev"
72
+ Requires-Dist: black<27.0.0,>=23.7.0; extra == "dev"
73
73
  Requires-Dist: flake8<8.0.0,>=6.0.0; extra == "dev"
74
74
  Dynamic: author
75
75
  Dynamic: classifier
@@ -1,6 +1,6 @@
1
1
  matplotlib<4.0.0,>=3.5.0
2
- numpy<2.0.0,>=1.21.5
3
- pandas>=2.0.0
2
+ numpy<3.0.0,>=1.21.5
3
+ pandas<3.0.0,>=2.0.0
4
4
  pyproj<4.0.0,>=3.2.0
5
5
  azure-storage-blob<13.0.0,>=12.9.0
6
6
  aiohttp<4.0.0,>=3.8.1
@@ -8,38 +8,38 @@ Shapely<3.0.0,>=2.0.0
8
8
  nest-asyncio<2.0.0,>=1.5.1
9
9
  scikit-image>=0.18.3
10
10
  scikit-learn<2.0.0,>=1.0.1
11
- torch<=2.2.2,>=1.10.0
12
- torchvision<=0.17.2,>=0.11.1
11
+ torch<=2.12.0,>=1.10.0
12
+ torchvision<=0.27.0,>=0.11.1
13
13
  jupyter<2.0.0,>=1.0.0
14
- ipykernel<7.0.0,>=6.5.1
14
+ ipykernel<8.0.0,>=6.5.1
15
15
  ipywidgets<9.0.0,>=8.0.0
16
16
  ipyannotate==0.1.0-beta.0
17
- Cython<0.30.0,>=0.29.24
17
+ Cython<4.0.0,>=0.29.24
18
18
  PyYAML<7.0,>=6.0
19
19
  tensorboard<3.0.0,>=2.7.0
20
20
  parhugin<0.0.4,>=0.0.3
21
- geopy==2.1.0
21
+ geopy<3.0.0,>=2.1.0
22
22
  rasterio<2.0.0,>=1.2.10
23
23
  simplekml<2.0.0,>=1.3.6
24
24
  versioneer>=0.28
25
25
  tqdm<5.0.0
26
26
  torchinfo<2.0.0
27
27
  openpyxl<4.0.0,>=3.1.2
28
- geopandas<1.0.0
28
+ geopandas<2.0.0,>=1.0.0
29
29
  pyogrio>=0.7.2
30
30
  cartopy>=0.22.0
31
31
  joblib>=1.4.0
32
32
  opencv-python<5.0.0.0,>=4.8.1.78
33
33
  folium<1.0.0,>=0.12
34
34
  mapclassify<3.0.0,>=2.0.0
35
- xyzservices==2024.9.0
35
+ xyzservices>=2024.9.0
36
36
  piffle>=0.7.0
37
37
  lxml
38
38
 
39
39
  [dev]
40
- pytest<9.0.0
41
- pytest-cov<6.0.0,>=4.1.0
42
- timm<1.0.0
43
- transformers!=4.50.0,<4.51.3
44
- black<25.0.0,>=23.7.0
40
+ pytest<10.0.0
41
+ pytest-cov<8.0.0,>=4.1.0
42
+ timm<2.0.0
43
+ transformers!=4.50.0,<5.0.0,>=4.26.0
44
+ black<27.0.0,>=23.7.0
45
45
  flake8<8.0.0,>=6.0.0
@@ -29,8 +29,8 @@ setuptools.setup(
29
29
  python_requires=">=3.9",
30
30
  install_requires=[
31
31
  "matplotlib>=3.5.0,<4.0.0",
32
- "numpy>=1.21.5,<2.0.0",
33
- "pandas>=2.0.0",
32
+ "numpy>=1.21.5,<3.0.0",
33
+ "pandas>=2.0.0,<3.0.0",
34
34
  "pyproj>=3.2.0,<4.0.0",
35
35
  "azure-storage-blob>=12.9.0,<13.0.0",
36
36
  "aiohttp>=3.8.1,<4.0.0",
@@ -38,41 +38,41 @@ setuptools.setup(
38
38
  "nest-asyncio>=1.5.1,<2.0.0",
39
39
  "scikit-image>=0.18.3",
40
40
  "scikit-learn>=1.0.1,<2.0.0",
41
- "torch>=1.10.0,<=2.2.2",
42
- "torchvision>=0.11.1,<=0.17.2",
41
+ "torch>=1.10.0,<=2.12.0",
42
+ "torchvision>=0.11.1,<=0.27.0",
43
43
  "jupyter>=1.0.0,<2.0.0",
44
- "ipykernel>=6.5.1,<7.0.0",
44
+ "ipykernel>=6.5.1,<8.0.0",
45
45
  "ipywidgets>=8.0.0,<9.0.0",
46
46
  "ipyannotate==0.1.0-beta.0",
47
- "Cython>=0.29.24,<0.30.0",
47
+ "Cython>=0.29.24,<4.0.0",
48
48
  "PyYAML>=6.0,<7.0",
49
49
  "tensorboard>=2.7.0,<3.0.0",
50
50
  "parhugin>=0.0.3,<0.0.4",
51
- "geopy==2.1.0",
51
+ "geopy>=2.1.0,<3.0.0",
52
52
  "rasterio>=1.2.10,<2.0.0",
53
53
  "simplekml>=1.3.6,<2.0.0",
54
54
  "versioneer>=0.28",
55
55
  "tqdm<5.0.0",
56
56
  "torchinfo<2.0.0",
57
57
  "openpyxl>=3.1.2,<4.0.0",
58
- "geopandas<1.0.0",
58
+ "geopandas>=1.0.0,<2.0.0",
59
59
  "pyogrio>=0.7.2",
60
60
  "cartopy>=0.22.0",
61
61
  "joblib>=1.4.0",
62
62
  "opencv-python>=4.8.1.78,<5.0.0.0",
63
63
  "folium>=0.12,<1.0.0",
64
64
  "mapclassify>=2.0.0,<3.0.0",
65
- "xyzservices==2024.9.0",
65
+ "xyzservices>=2024.9.0",
66
66
  "piffle>=0.7.0",
67
67
  "lxml",
68
68
  ],
69
69
  extras_require={
70
70
  "dev": [
71
- "pytest<9.0.0",
72
- "pytest-cov>=4.1.0,<6.0.0",
73
- "timm<1.0.0",
74
- "transformers<4.51.3, !=4.50.0",
75
- "black>=23.7.0,<25.0.0",
71
+ "pytest<10.0.0",
72
+ "pytest-cov>=4.1.0,<8.0.0",
73
+ "timm<2.0.0",
74
+ "transformers>=4.26.0,<5.0.0,!=4.50.0",
75
+ "black>=23.7.0,<27.0.0",
76
76
  "flake8>=6.0.0,<8.0.0",
77
77
  ],
78
78
  },