datamarket 0.9.33__py3-none-any.whl → 0.9.35__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.

Potentially problematic release.


This version of datamarket might be problematic. Click here for more details.

@@ -3,7 +3,7 @@
3
3
 
4
4
  import logging
5
5
  from collections.abc import MutableMapping
6
- from typing import Any, Iterator, List, Optional, Type, TypeVar
6
+ from typing import Any, Iterator, List, Optional, Type, TypeVar, Union
7
7
  from urllib.parse import quote_plus
8
8
 
9
9
  from sqlalchemy import DDL, FrozenResult, Result, Select, SQLColumnExpression, create_engine, text
@@ -12,7 +12,7 @@ from sqlalchemy.exc import IntegrityError
12
12
  from sqlalchemy.ext.declarative import DeclarativeMeta
13
13
  from sqlalchemy.orm import Session, sessionmaker
14
14
  from sqlalchemy.sql.expression import ClauseElement
15
- from enum import Enum
15
+ from enum import Enum, auto
16
16
 
17
17
  ########################################################################################################################
18
18
  # CLASSES
@@ -23,8 +23,8 @@ ModelType = TypeVar("ModelType", bound=DeclarativeMeta)
23
23
 
24
24
 
25
25
  class CommitStrategy(Enum):
26
- COMMIT_ON_SUCCESS = "commit_on_success"
27
- FORCE_COMMIT = "force_commit"
26
+ COMMIT_ON_SUCCESS = auto()
27
+ FORCE_COMMIT = auto()
28
28
 
29
29
 
30
30
  class MockContext:
@@ -278,7 +278,7 @@ class AlchemyInterface:
278
278
  stmt: Select[Any],
279
279
  order_by: List[SQLColumnExpression[Any]],
280
280
  windowsize: int,
281
- commit_strategy: CommitStrategy = CommitStrategy.COMMIT_ON_SUCCESS,
281
+ commit_strategy: Union[CommitStrategy, str] = CommitStrategy.COMMIT_ON_SUCCESS,
282
282
  ) -> Iterator[Result[Any]]:
283
283
  """
284
284
  Executes a windowed query, fetching each window in a separate, short-lived session.
@@ -288,7 +288,7 @@ class AlchemyInterface:
288
288
  order_by: The columns to use for ordering.
289
289
  windowsize: The number of rows to fetch in each window.
290
290
  commit_strategy: The strategy to use for committing the session after each window.
291
- Defaults to CommitStrategy.COMMIT_ON_SUCCESS.
291
+ Defaults to `CommitStrategy.COMMIT_ON_SUCCESS`.
292
292
 
293
293
  Returns:
294
294
  An iterator of Result objects, each containing a window of data.
@@ -296,6 +296,9 @@ class AlchemyInterface:
296
296
 
297
297
  More info: https://github.com/sqlalchemy/sqlalchemy/wiki/RangeQuery-and-WindowedRangeQuery
298
298
  """
299
+ # Parameter mapping
300
+ if isinstance(commit_strategy, str):
301
+ commit_strategy = CommitStrategy[commit_strategy.upper()]
299
302
 
300
303
  # Find id column in stmt
301
304
  if not any(column.get("entity").id for column in stmt.column_descriptions):
@@ -10,7 +10,7 @@ import requests
10
10
  from geopy.distance import geodesic
11
11
  from jellyfish import jaro_winkler_similarity
12
12
 
13
- from ..params.nominatim import POSTCODES
13
+ from ..params.nominatim import CITY_TO_PROVINCE, POSTCODES
14
14
  from ..utils.strings import normalize
15
15
 
16
16
  ########################################################################################################################
@@ -88,7 +88,7 @@ class Nominatim:
88
88
  "country": raw_address.get("country"),
89
89
  "country_code": (raw_address.get("country_code") or "").lower(),
90
90
  "state": raw_address.get("state"),
91
- "province": raw_address.get("province"),
91
+ "province": raw_address.get("province") or CITY_TO_PROVINCE.get(city),
92
92
  "city": city,
93
93
  "postcode": postcode,
94
94
  "district": district,
@@ -1,3 +1,5 @@
1
+ CITY_TO_PROVINCE = {"Madrid": "Madrid"}
2
+
1
3
  POSTCODES = {
2
4
  "01": "Álava",
3
5
  "02": "Albacete",
@@ -3,7 +3,7 @@
3
3
 
4
4
  import unicodedata
5
5
  from enum import Enum, auto
6
- from typing import Any, Optional, Set
6
+ from typing import Any, Optional, Set, Union
7
7
 
8
8
  import numpy as np
9
9
  from inflection import camelize, parameterize, titleize, underscore
@@ -93,8 +93,8 @@ def transliterate_symbols(s: str, allowed_symbols_set: Optional[Set[str]] = None
93
93
 
94
94
  def normalize(
95
95
  s: Any,
96
- mode: NormalizationMode = NormalizationMode.BASIC,
97
- naming: NamingConvention = NamingConvention.LOWER,
96
+ mode: Union[NormalizationMode, str] = NormalizationMode.BASIC,
97
+ naming: Union[NamingConvention, str] = NamingConvention.LOWER,
98
98
  allowed_symbols: Optional[str] = None,
99
99
  ) -> str:
100
100
  """
@@ -136,9 +136,9 @@ def normalize(
136
136
  """
137
137
  # Parameter mapping
138
138
  if isinstance(mode, str):
139
- mode = NormalizationMode[mode]
139
+ mode = NormalizationMode[mode.upper()]
140
140
  if isinstance(naming, str):
141
- naming = NamingConvention[naming]
141
+ naming = NamingConvention[naming.upper()]
142
142
 
143
143
  _allowed_symbols_set: Set[str] = set(allowed_symbols) if allowed_symbols else set()
144
144
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: datamarket
3
- Version: 0.9.33
3
+ Version: 0.9.35
4
4
  Summary: Utilities that integrate advanced scraping knowledge into just one library.
5
5
  Home-page: https://datamarket.es
6
6
  License: GPL-3.0-or-later
@@ -1,15 +1,15 @@
1
1
  datamarket/__init__.py,sha256=FHS77P9qNewKMoN-p0FLEUEC60oWIYup1QkbJZP4ays,12
2
2
  datamarket/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- datamarket/interfaces/alchemy.py,sha256=4q_gLKCKPK437VKOpdBKSrCyy42P_yWxIhE7KuvHXMY,14515
3
+ datamarket/interfaces/alchemy.py,sha256=mQwjDqBpz1QHRV2JTCALvn5iK_ky69oE2Gw-EtRXsqQ,14664
4
4
  datamarket/interfaces/aws.py,sha256=7KLUeBxmPN7avEMPsu5HC_KHB1N7W6Anp2X8fo43mlw,2383
5
5
  datamarket/interfaces/drive.py,sha256=shbV5jpQVe_KPE-8Idx6Z9te5Zu1SmVfrvSAyd9ZIgE,2915
6
6
  datamarket/interfaces/ftp.py,sha256=o0KlJxtksbop9OjCiQRzyAa2IeG_ExVXagS6apwrAQo,1881
7
- datamarket/interfaces/nominatim.py,sha256=xrVADpWiNRKcshDVw75i-8phrql_6sBYf8Wre8mQZk4,12419
7
+ datamarket/interfaces/nominatim.py,sha256=xTMI7hUZ778xUZ0iCT6LA4pmiaWEJq3F_AC-dXcS1nc,12467
8
8
  datamarket/interfaces/peerdb.py,sha256=cwYwvO740GyaPo9zLAwJsf3UeJDGDiYzjQVM9Q6s-_g,23652
9
9
  datamarket/interfaces/proxy.py,sha256=updoOStKd8-nQBbxWbnD9eOt6HksnYi-5dQ0rEySf5M,3152
10
10
  datamarket/interfaces/tinybird.py,sha256=AYrcRGNOCoCt7ojilkWa27POROee9sTCwZ61GGHEPeM,2698
11
11
  datamarket/params/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- datamarket/params/nominatim.py,sha256=pBYRfoBkkLBg2INbFymefmYSzaAVujQSpEro5c1hD_I,1143
12
+ datamarket/params/nominatim.py,sha256=XrCru3yEbs-X3ueOaCeSTBZwi4CWHW7oNhEyexBleMw,1184
13
13
  datamarket/utils/__init__.py,sha256=8D5a8oKgqd6WA1RUkiKCn4l_PVemtyuckxQut0vDHXM,20
14
14
  datamarket/utils/airflow.py,sha256=al0vc0YUikNu3Oy51VSn52I7pMU40akFBOl_UlHa2E4,795
15
15
  datamarket/utils/alchemy.py,sha256=SRq6kgh1aANXVShBPgAuglmNhZssPWwWEY503gKSia8,635
@@ -17,11 +17,11 @@ datamarket/utils/main.py,sha256=j8wnAxeLvijdRU9M4V6HunWH7vgWWHP4u4xamzkWcUU,7009
17
17
  datamarket/utils/selenium.py,sha256=IMKlbLzXABFhACnWzhHmB0l2hhVzNwHGZwbo14nEewQ,2499
18
18
  datamarket/utils/soda.py,sha256=eZTXFbI1P3WoMd1MM-YjoVTpdjTcDSWuvBb7ViBMhSQ,941
19
19
  datamarket/utils/strings/__init__.py,sha256=RmyN3hKGXmUym8w5tn28yWkw2uM-b5OvntB4D0lU1eo,84
20
- datamarket/utils/strings/normalization.py,sha256=z2dDXFVQ-nVqPDRR1T4HWmELpJuXUVt_P6leHqPVheY,8666
20
+ datamarket/utils/strings/normalization.py,sha256=QLZ-THzjGOK9eWPPR1PrsffwQkSOx_Mgha4IYaJPrR0,8713
21
21
  datamarket/utils/strings/obfuscation.py,sha256=8gMepfjPq0N4_IpKR6i2dy_9VJugQ3qJiRiRvKavB3s,5246
22
22
  datamarket/utils/typer.py,sha256=FDF3l6gh3UlAFPsHCtesnekvct2rKz0oFn3uKARBQvE,814
23
23
  datamarket/utils/types.py,sha256=vxdQZdwdXrfPR4Es52gBgol-tMRIOD6oK9cBo3rB0JQ,74
24
- datamarket-0.9.33.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
25
- datamarket-0.9.33.dist-info/METADATA,sha256=c_d4K0XDa0CrfvdMWnmRFQZPOzTENQAfiMhIIjzhhuo,6871
26
- datamarket-0.9.33.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
27
- datamarket-0.9.33.dist-info/RECORD,,
24
+ datamarket-0.9.35.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
25
+ datamarket-0.9.35.dist-info/METADATA,sha256=RNtstcJHXMjzSc_ZekIxbh86C9AwKlqQdwUSn908a0k,6871
26
+ datamarket-0.9.35.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
27
+ datamarket-0.9.35.dist-info/RECORD,,