ingestr 0.14.7__py3-none-any.whl → 0.14.9__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 ingestr might be problematic. Click here for more details.

ingestr/src/buildinfo.py CHANGED
@@ -1 +1 @@
1
- version = "v0.14.7"
1
+ version = "v0.14.9"
ingestr/src/errors.py CHANGED
@@ -1,3 +1,6 @@
1
+ import requests
2
+
3
+
1
4
  class MissingValueError(Exception):
2
5
  def __init__(self, value, source):
3
6
  super().__init__(f"{value} is required to connect to {source}")
@@ -16,3 +19,8 @@ class InvalidBlobTableError(Exception):
16
19
  f"Invalid source table for {source} "
17
20
  "Ensure that the table is in the format {bucket-name}/{file glob}"
18
21
  )
22
+
23
+
24
+ class HTTPError(Exception):
25
+ def __init__(self, source: requests.HTTPError):
26
+ super().__init__(f"HTTP {source.response.status_code}: {source.response.text}")
@@ -8,6 +8,10 @@ import pendulum
8
8
  from dlt.common.typing import TDataItem
9
9
  from dlt.sources.helpers import requests
10
10
 
11
+ from ingestr.src.errors import HTTPError
12
+
13
+ TICKETS_QUERY_MAX_PAGE = 10
14
+
11
15
 
12
16
  class FreshdeskClient:
13
17
  """
@@ -62,7 +66,7 @@ class FreshdeskClient:
62
66
  else:
63
67
  # If the error is not a rate limit (429), raise the exception to be
64
68
  # handled elsewhere or stop execution
65
- raise
69
+ raise HTTPError(e) from e
66
70
 
67
71
  def paginated_response(
68
72
  self,
@@ -83,6 +87,8 @@ class FreshdeskClient:
83
87
  if query is not None:
84
88
  query = query.replace('"', "").strip()
85
89
 
90
+ is_tickets_query = query and endpoint == "tickets"
91
+
86
92
  while True:
87
93
  # Construct the URL for the specific endpoint
88
94
  url = f"{self.base_url}/{endpoint}"
@@ -97,7 +103,7 @@ class FreshdeskClient:
97
103
 
98
104
  params[param_key] = start_date.to_iso8601_string()
99
105
 
100
- if query and endpoint == "tickets":
106
+ if is_tickets_query:
101
107
  url = f"{self.base_url}/search/tickets"
102
108
  params = {
103
109
  "query": f'"{query}"',
@@ -125,3 +131,7 @@ class FreshdeskClient:
125
131
  break
126
132
  yield filtered_data
127
133
  page += 1
134
+
135
+ # https://developers.freshdesk.com/api/#filter_tickets
136
+ if is_tickets_query and page > TICKETS_QUERY_MAX_PAGE:
137
+ break
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ingestr
3
- Version: 0.14.7
3
+ Version: 0.14.9
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
@@ -2,9 +2,9 @@ ingestr/conftest.py,sha256=OE2yxeTCosS9CUFVuqNypm-2ftYvVBeeq7egm3878cI,1981
2
2
  ingestr/main.py,sha256=qo0g3wCFl8a_1jUwXagX8L1Q8PKKQlTF7md9pfnzW0Y,27155
3
3
  ingestr/src/.gitignore,sha256=8cX1AZTSI0TcdZFGTmS_oyBjpfCzhOEt0DdAo2dFIY8,203
4
4
  ingestr/src/blob.py,sha256=UUWMjHUuoR9xP1XZQ6UANQmnMVyDx3d0X4-2FQC271I,2138
5
- ingestr/src/buildinfo.py,sha256=YxzGIUalZm4GGc-RrbAqArSOiMUywv6FFD2ar3IccDE,20
5
+ ingestr/src/buildinfo.py,sha256=JVeLatT3zF_GlPLBMGJdol2FzZDg-jgHFHrlQBdckG8,20
6
6
  ingestr/src/destinations.py,sha256=QtjE0AGs0WkPHaI2snWPHJ8HHi4lwXUBYLJPklz8Mvk,27772
7
- ingestr/src/errors.py,sha256=Ufs4_DfE77_E3vnA1fOQdi6cmuLVNm7_SbFLkL1XPGk,686
7
+ ingestr/src/errors.py,sha256=fhJ2BxOqOsBfOxuTDKfZblvawBrPG3x_1VikIxMZBRI,874
8
8
  ingestr/src/factory.py,sha256=03eGDe2rL6qyT5sGmTGZi-XIwJbbdoedE_KjW3ZF7QY,7661
9
9
  ingestr/src/filters.py,sha256=0n0sNAVG_f-B_1r7lW5iNtw9z_G1bxWzPaiL1i6tnbU,1665
10
10
  ingestr/src/http_client.py,sha256=bxqsk6nJNXCo-79gW04B53DQO-yr25vaSsqP0AKtjx4,732
@@ -61,7 +61,7 @@ ingestr/src/fluxx/helpers.py,sha256=zJmlQWwiv9snnLqTygiWVZy7-0rGi_K427hRUuZeHEM,
61
61
  ingestr/src/frankfurter/__init__.py,sha256=gOdL8ZqgHHYZByjtfE3WX3BTRHdYqyn9FpQwzDHSAx0,5089
62
62
  ingestr/src/frankfurter/helpers.py,sha256=SpRr992OcSf7IDI5y-ToUdO6m6sGpqFz59LTY0ojchI,1502
63
63
  ingestr/src/freshdesk/__init__.py,sha256=OIP3GikA6BMh9sruU3jih-swdFNSposr48oQhy1WGNk,3145
64
- ingestr/src/freshdesk/freshdesk_client.py,sha256=BzGCf_z9zUjqdSjU-0IzMt_C7uCIT9pU5qlcO9eu98Q,4829
64
+ ingestr/src/freshdesk/freshdesk_client.py,sha256=Fp2YBG3hMtR-t4XfjRjc7-wiUMHCIe9hnFhrGNNGwoA,5122
65
65
  ingestr/src/freshdesk/settings.py,sha256=0Wr_OMnUZcTlry7BmALssLxD2yh686JW4moLNv12Jnw,409
66
66
  ingestr/src/fundraiseup/__init__.py,sha256=q3TQeP1HdbWNeXFMq-0-BdSo82Fq4Io1OEYOY1cAYcU,1743
67
67
  ingestr/src/fundraiseup/client.py,sha256=klU57l8iJ5NAS1nTb_4UyVAerbPWpTa8PMHlpp9Riz0,2453
@@ -180,8 +180,8 @@ ingestr/testdata/merge_expected.csv,sha256=DReHqWGnQMsf2PBv_Q2pfjsgvikYFnf1zYcQZ
180
180
  ingestr/testdata/merge_part1.csv,sha256=Pw8Z9IDKcNU0qQHx1z6BUf4rF_-SxKGFOvymCt4OY9I,185
181
181
  ingestr/testdata/merge_part2.csv,sha256=T_GiWxA81SN63_tMOIuemcvboEFeAmbKc7xRXvL9esw,287
182
182
  ingestr/tests/unit/test_smartsheets.py,sha256=zf3DXT29Y4TH2lNPBFphdjlaelUUyPJcsW2UO68RzDs,4862
183
- ingestr-0.14.7.dist-info/METADATA,sha256=BH1DljadKOx7Z5_mJCeKWzudnPRP2soD0z0rNCy1mw4,15265
184
- ingestr-0.14.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
185
- ingestr-0.14.7.dist-info/entry_points.txt,sha256=oPJy0KBnPWYjDtP1k8qwAihcTLHSZokSQvRAw_wtfJM,46
186
- ingestr-0.14.7.dist-info/licenses/LICENSE.md,sha256=cW8wIhn8HFE-KLStDF9jHQ1O_ARWP3kTpk_-eOccL24,1075
187
- ingestr-0.14.7.dist-info/RECORD,,
183
+ ingestr-0.14.9.dist-info/METADATA,sha256=xqQRDYjtnSD01hUyNk3jnTc-hjCfWd8CEsAPmx5XzUk,15265
184
+ ingestr-0.14.9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
185
+ ingestr-0.14.9.dist-info/entry_points.txt,sha256=oPJy0KBnPWYjDtP1k8qwAihcTLHSZokSQvRAw_wtfJM,46
186
+ ingestr-0.14.9.dist-info/licenses/LICENSE.md,sha256=cW8wIhn8HFE-KLStDF9jHQ1O_ARWP3kTpk_-eOccL24,1075
187
+ ingestr-0.14.9.dist-info/RECORD,,