udata-hydra 2.0.0.dev2400__tar.gz → 2.0.0.dev2497__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. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/PKG-INFO +2 -2
  2. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/README.md +1 -1
  3. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/pyproject.toml +2 -2
  4. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/crawl.py +4 -1
  5. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/db/check.py +9 -2
  6. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/schemas/check.py +0 -1
  7. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/__init__.py +0 -0
  8. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/analysis/__init__.py +0 -0
  9. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/analysis/csv.py +0 -0
  10. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/analysis/errors.py +0 -0
  11. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/analysis/helpers.py +0 -0
  12. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/analysis/resource.py +0 -0
  13. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/app.py +0 -0
  14. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/cli.py +0 -0
  15. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/config_default.toml +0 -0
  16. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/context.py +0 -0
  17. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/db/__init__.py +0 -0
  18. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/db/resource.py +0 -0
  19. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/logger.py +0 -0
  20. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/__init__.py +0 -0
  21. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/csv/20221205_initial_up_rev1.sql +0 -0
  22. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/csv/20230130_drop_migrations.sql +0 -0
  23. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/csv/20230206_datetime_aware.sql +0 -0
  24. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20221205_initial_up_rev1.sql +0 -0
  25. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20221206_rev1_up_rev2.sql +0 -0
  26. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20221206_rev2_up_rev3.sql +0 -0
  27. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20221208_rev3_up_rev4.sql +0 -0
  28. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20221208_rev4_up_rev5.sql +0 -0
  29. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20230119_rev5_up_rev6.sql +0 -0
  30. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20230121_rev6_up_rev7.sql +0 -0
  31. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20230121_rev7_up_rev8.sql +0 -0
  32. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20230130_drop_migrations.sql +0 -0
  33. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20230206_datetime_aware.sql +0 -0
  34. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20230515_rev8_up_rev9.sql +0 -0
  35. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20230606_rev9_up_rev10.sql +0 -0
  36. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/migrations/main/20231102_drop_csv_analysis.sql +0 -0
  37. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/routes/__init__.py +0 -0
  38. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/routes/checks.py +0 -0
  39. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/routes/resources.py +0 -0
  40. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/routes/status.py +0 -0
  41. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/schemas/__init__.py +0 -0
  42. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/schemas/resource.py +0 -0
  43. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/__init__.py +0 -0
  44. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/app_version.py +0 -0
  45. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/csv.py +0 -0
  46. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/file.py +0 -0
  47. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/http.py +0 -0
  48. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/minio.py +0 -0
  49. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/queue.py +0 -0
  50. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/reader.py +0 -0
  51. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/utils/timer.py +0 -0
  52. {udata_hydra-2.0.0.dev2400 → udata_hydra-2.0.0.dev2497}/udata_hydra/worker.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata-hydra
3
- Version: 2.0.0.dev2400
3
+ Version: 2.0.0.dev2497
4
4
  Summary: Async crawler and parsing service for data.gouv.fr
5
5
  License: MIT
6
6
  Author: Opendata Team
@@ -374,7 +374,7 @@ Once this is done, code formatting and linting, as well as import sorting, will
374
374
 
375
375
  If you cannot use pre-commit, it is necessary to format, lint, and sort imports with [Ruff](https://docs.astral.sh/ruff/) before committing:
376
376
  ```bash
377
- ruff check --fix --select I .
377
+ ruff check --fix .
378
378
  ruff format .
379
379
  ```
380
380
 
@@ -338,6 +338,6 @@ Once this is done, code formatting and linting, as well as import sorting, will
338
338
 
339
339
  If you cannot use pre-commit, it is necessary to format, lint, and sort imports with [Ruff](https://docs.astral.sh/ruff/) before committing:
340
340
  ```bash
341
- ruff check --fix --select I .
341
+ ruff check --fix .
342
342
  ruff format .
343
343
  ```
@@ -9,7 +9,7 @@ readme = "README.md"
9
9
 
10
10
  [tool.poetry]
11
11
  name = "udata-hydra"
12
- version = "2.0.0.dev2400"
12
+ version = "2.0.0.dev2497"
13
13
  description = "Async crawler and parsing service for data.gouv.fr"
14
14
  authors = ["Opendata Team <opendatateam@data.gouv.fr>"]
15
15
  license = "MIT"
@@ -76,7 +76,7 @@ markers = [
76
76
  addopts = "--cov=udata_hydra/ --cov-report term-missing"
77
77
 
78
78
  [tool.ruff]
79
- lint = { extend-select = ["I"] } # also sort imports with an isort rule
79
+ lint = { extend-select = ["I"], ignore = ["F401"] } # ["I"] is to also sort imports with an isort rule # TODO: remove ignore F401 later
80
80
  line-length = 100
81
81
 
82
82
  [build-system]
@@ -132,6 +132,9 @@ async def process_check_data(check_data: dict) -> Tuple[int, bool]:
132
132
 
133
133
 
134
134
  async def is_backoff(domain: str) -> Tuple[bool, str]:
135
+ """Check if we should not crawl on this domain
136
+ Returns a tuple with if it should backoff or not (boolean) and the reason why (string)
137
+ """
135
138
  backoff = False, ""
136
139
  no_backoff = [f"'{d}'" for d in config.NO_BACKOFF_DOMAINS]
137
140
  no_backoff = f"({','.join(no_backoff)})"
@@ -201,7 +204,7 @@ def fix_surrogates(value):
201
204
  """FIX Unicode low surrogate must follow a high surrogate.
202
205
  eg in 'TREMI_2017-R\xe9sultats enqu\xeate bruts.csv'
203
206
  """
204
- if not type(value) == str:
207
+ if type(value) is not str:
205
208
  value = str(value)
206
209
  return value.encode("utf-8", "surrogateescape").decode("utf-8", "replace")
207
210
 
@@ -30,7 +30,7 @@ class Check:
30
30
  async with pool.acquire() as connection:
31
31
  q = f"""
32
32
  SELECT catalog.id as catalog_id, checks.id as check_id,
33
- catalog.status as catalog_status, checks.status as check_status, *
33
+ catalog.status as catalog_status, checks.status as check_status, catalog.deleted as deleted, *
34
34
  FROM checks, catalog
35
35
  WHERE checks.id = catalog.last_check
36
36
  AND catalog.{column} = $1
@@ -44,7 +44,7 @@ class Check:
44
44
  async with pool.acquire() as connection:
45
45
  q = f"""
46
46
  SELECT catalog.id as catalog_id, checks.id as check_id,
47
- catalog.status as catalog_status, checks.status as check_status, *
47
+ catalog.status as catalog_status, checks.status as check_status, catalog.deleted as deleted, *
48
48
  FROM checks, catalog
49
49
  WHERE catalog.{column} = $1
50
50
  AND catalog.url = checks.url
@@ -71,3 +71,10 @@ class Check:
71
71
  async def update(cls, check_id: int, data: dict) -> int:
72
72
  """Update a check in DB with new data and return the check id in DB"""
73
73
  return await update_table_record(table_name="checks", record_id=check_id, data=data)
74
+
75
+ @classmethod
76
+ async def delete(cls, check_id: int) -> int:
77
+ pool = await context.pool()
78
+ async with pool.acquire() as connection:
79
+ q = """DELETE FROM checks WHERE id = $1"""
80
+ return await connection.fetch(q, check_id)
@@ -1,6 +1,5 @@
1
1
  import json
2
2
 
3
- from aiohttp import web
4
3
  from marshmallow import Schema, fields
5
4
 
6
5