ingestr 0.6.1__tar.gz → 0.6.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.

Potentially problematic release.


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

Files changed (89) hide show
  1. {ingestr-0.6.1 → ingestr-0.6.3}/PKG-INFO +1 -1
  2. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/gorgias/__init__.py +1 -1
  3. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/gorgias/helpers.py +18 -4
  4. ingestr-0.6.3/ingestr/src/version.py +1 -0
  5. ingestr-0.6.1/ingestr/src/version.py +0 -1
  6. {ingestr-0.6.1 → ingestr-0.6.3}/.dockerignore +0 -0
  7. {ingestr-0.6.1 → ingestr-0.6.3}/.github/workflows/deploy-docs.yml +0 -0
  8. {ingestr-0.6.1 → ingestr-0.6.3}/.github/workflows/docker.yml +0 -0
  9. {ingestr-0.6.1 → ingestr-0.6.3}/.gitignore +0 -0
  10. {ingestr-0.6.1 → ingestr-0.6.3}/.python-version +0 -0
  11. {ingestr-0.6.1 → ingestr-0.6.3}/Dockerfile +0 -0
  12. {ingestr-0.6.1 → ingestr-0.6.3}/LICENSE.md +0 -0
  13. {ingestr-0.6.1 → ingestr-0.6.3}/Makefile +0 -0
  14. {ingestr-0.6.1 → ingestr-0.6.3}/README.md +0 -0
  15. {ingestr-0.6.1 → ingestr-0.6.3}/docs/.vitepress/config.mjs +0 -0
  16. {ingestr-0.6.1 → ingestr-0.6.3}/docs/.vitepress/theme/custom.css +0 -0
  17. {ingestr-0.6.1 → ingestr-0.6.3}/docs/.vitepress/theme/index.js +0 -0
  18. {ingestr-0.6.1 → ingestr-0.6.3}/docs/commands/example-uris.md +0 -0
  19. {ingestr-0.6.1 → ingestr-0.6.3}/docs/commands/ingest.md +0 -0
  20. {ingestr-0.6.1 → ingestr-0.6.3}/docs/getting-started/core-concepts.md +0 -0
  21. {ingestr-0.6.1 → ingestr-0.6.3}/docs/getting-started/incremental-loading.md +0 -0
  22. {ingestr-0.6.1 → ingestr-0.6.3}/docs/getting-started/quickstart.md +0 -0
  23. {ingestr-0.6.1 → ingestr-0.6.3}/docs/getting-started/telemetry.md +0 -0
  24. {ingestr-0.6.1 → ingestr-0.6.3}/docs/index.md +0 -0
  25. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/bigquery.md +0 -0
  26. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/csv.md +0 -0
  27. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/databricks.md +0 -0
  28. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/duckdb.md +0 -0
  29. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/gorgias.md +0 -0
  30. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/gsheets.md +0 -0
  31. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/mongodb.md +0 -0
  32. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/mssql.md +0 -0
  33. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/mysql.md +0 -0
  34. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/notion.md +0 -0
  35. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/oracle.md +0 -0
  36. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/overview.md +0 -0
  37. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/postgres.md +0 -0
  38. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/redshift.md +0 -0
  39. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/sap-hana.md +0 -0
  40. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/shopify.md +0 -0
  41. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/snowflake.md +0 -0
  42. {ingestr-0.6.1 → ingestr-0.6.3}/docs/supported-sources/sqlite.md +0 -0
  43. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/main.py +0 -0
  44. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/main_test.py +0 -0
  45. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/destinations.py +0 -0
  46. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/destinations_test.py +0 -0
  47. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/factory.py +0 -0
  48. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/factory_test.py +0 -0
  49. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/google_sheets/README.md +0 -0
  50. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/google_sheets/__init__.py +0 -0
  51. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/google_sheets/helpers/__init__.py +0 -0
  52. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/google_sheets/helpers/api_calls.py +0 -0
  53. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/google_sheets/helpers/data_processing.py +0 -0
  54. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/gorgias/helpers_test.py +0 -0
  55. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/mongodb/__init__.py +0 -0
  56. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/mongodb/helpers.py +0 -0
  57. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/notion/__init__.py +0 -0
  58. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/notion/helpers/__init__.py +0 -0
  59. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/notion/helpers/client.py +0 -0
  60. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/notion/helpers/database.py +0 -0
  61. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/notion/settings.py +0 -0
  62. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/shopify/__init__.py +0 -0
  63. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/shopify/exceptions.py +0 -0
  64. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/shopify/helpers.py +0 -0
  65. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/shopify/settings.py +0 -0
  66. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/sources.py +0 -0
  67. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/sources_test.py +0 -0
  68. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/sql_database/__init__.py +0 -0
  69. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/sql_database/helpers.py +0 -0
  70. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/sql_database/override.py +0 -0
  71. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/sql_database/schema_types.py +0 -0
  72. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/telemetry/event.py +0 -0
  73. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/src/testdata/fakebqcredentials.json +0 -0
  74. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/testdata/.gitignore +0 -0
  75. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/testdata/create_replace.csv +0 -0
  76. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/testdata/delete_insert_expected.csv +0 -0
  77. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/testdata/delete_insert_part1.csv +0 -0
  78. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/testdata/delete_insert_part2.csv +0 -0
  79. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/testdata/merge_expected.csv +0 -0
  80. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/testdata/merge_part1.csv +0 -0
  81. {ingestr-0.6.1 → ingestr-0.6.3}/ingestr/testdata/merge_part2.csv +0 -0
  82. {ingestr-0.6.1 → ingestr-0.6.3}/package-lock.json +0 -0
  83. {ingestr-0.6.1 → ingestr-0.6.3}/package.json +0 -0
  84. {ingestr-0.6.1 → ingestr-0.6.3}/pyproject.toml +0 -0
  85. {ingestr-0.6.1 → ingestr-0.6.3}/requirements-dev.txt +0 -0
  86. {ingestr-0.6.1 → ingestr-0.6.3}/requirements.txt +0 -0
  87. {ingestr-0.6.1 → ingestr-0.6.3}/resources/demo.gif +0 -0
  88. {ingestr-0.6.1 → ingestr-0.6.3}/resources/demo.tape +0 -0
  89. {ingestr-0.6.1 → ingestr-0.6.3}/resources/ingestr.svg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: ingestr
3
- Version: 0.6.1
3
+ Version: 0.6.3
4
4
  Summary: ingestr is a command-line application that ingests data from various sources and stores them in any database.
5
5
  Project-URL: Homepage, https://github.com/bruin-data/ingestr
6
6
  Project-URL: Issues, https://github.com/bruin-data/ingestr/issues
@@ -15,7 +15,7 @@ def gorgias_source(
15
15
  domain: str = dlt.secrets.value,
16
16
  email: str = dlt.config.value,
17
17
  api_key: str = dlt.secrets.value,
18
- start_date: TAnyDateTime = "2024-06-15",
18
+ start_date: TAnyDateTime = "2000-01-01",
19
19
  end_date: TAnyDateTime = None,
20
20
  ) -> Iterable[DltResource]:
21
21
  """
@@ -1,5 +1,6 @@
1
1
  """Gorgias source helpers"""
2
2
 
3
+ import time
3
4
  from typing import Any, Iterable, Optional, Tuple
4
5
 
5
6
  from dlt.common.pendulum import pendulum
@@ -9,6 +10,8 @@ from dlt.sources.helpers import requests
9
10
  from pyrate_limiter import Duration, Limiter, Rate
10
11
  from requests.auth import HTTPBasicAuth
11
12
 
13
+ RETRY_COUNT = 3
14
+
12
15
 
13
16
  def get_max_datetime_from_datetime_fields(
14
17
  item: Dict[str, Any],
@@ -104,10 +107,21 @@ class GorgiasApi:
104
107
 
105
108
  while True:
106
109
  limiter.try_acquire(f"gorgias-{self.domain}")
107
- response = requests.get(
108
- url, params=params, auth=HTTPBasicAuth(self.email, self.api_key)
109
- )
110
- response.raise_for_status()
110
+
111
+ # this is to retry a back-off if we get a 429
112
+ for i in range(RETRY_COUNT):
113
+ response = requests.get(
114
+ url, params=params, auth=HTTPBasicAuth(self.email, self.api_key)
115
+ )
116
+
117
+ if response.status_code == 429:
118
+ retry_after = int(response.headers.get("Retry-After", 2))
119
+ time.sleep(retry_after)
120
+ continue
121
+
122
+ response.raise_for_status()
123
+ break
124
+
111
125
  if len(response.json()["data"]) == 0:
112
126
  break
113
127
 
@@ -0,0 +1 @@
1
+ __version__ = "0.6.3"
@@ -1 +0,0 @@
1
- __version__ = "0.6.1"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes