niwayandm commited on
Commit
ebf1ef6
·
1 Parent(s): 82f122d

Added urllib3 2.5.0 to avoid breaking change affecting hubspot-api-client (removal of HTTPResponse.getheader in 2.6.0); changed docstring python file names

Browse files
python/hubspot_audit.py CHANGED
@@ -2,23 +2,23 @@
2
  HubSpot Audit → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
- import load_hubspot_companies
6
- load_hubspot_companies.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
- python load_hubspot_companies.py 1754025600000
11
  # ISO-8601
12
- python load_hubspot_companies.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
- python load_hubspot_companies.py 2025-08-01
15
  """
16
  import os
17
  import logging
18
  import datetime
19
  from typing import Dict, List, Optional, Union
20
  import re
21
- from dotenv import load_dotenv
22
  from supabase import create_client
23
  from supabase_utils import batched_insert, update_sync_metadata
24
  from hubspot_utils import (
@@ -40,7 +40,7 @@ logging.basicConfig(
40
  )
41
 
42
  # Environment
43
- load_dotenv()
44
  HUBSPOT_TOKEN = os.getenv("HUBSPOT_TOKEN")
45
  SUPABASE_URL = os.getenv("SUPABASE_URL")
46
  SUPABASE_SERVICE_ROLE_KEY = os.getenv("SUPABASE_SERVICE_ROLE_KEY")
 
2
  HubSpot Audit → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
+ import hubspot_audit
6
+ hubspot_audit.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
+ python hubspot_audit.py 1754025600000
11
  # ISO-8601
12
+ python hubspot_audit.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
+ python hubspot_audit.py 2025-08-01
15
  """
16
  import os
17
  import logging
18
  import datetime
19
  from typing import Dict, List, Optional, Union
20
  import re
21
+ from dotenv import dotenv
22
  from supabase import create_client
23
  from supabase_utils import batched_insert, update_sync_metadata
24
  from hubspot_utils import (
 
40
  )
41
 
42
  # Environment
43
+ dotenv()
44
  HUBSPOT_TOKEN = os.getenv("HUBSPOT_TOKEN")
45
  SUPABASE_URL = os.getenv("SUPABASE_URL")
46
  SUPABASE_SERVICE_ROLE_KEY = os.getenv("SUPABASE_SERVICE_ROLE_KEY")
python/hubspot_billing.py CHANGED
@@ -2,16 +2,16 @@
2
  HubSpot Billing → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
- import load_hubspot_billing
6
- load_hubspot_billing.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
- python load_hubspot_billing.py 1754025600000
11
  # ISO-8601
12
- python load_hubspot_billing.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
- python load_hubspot_billing.py 2025-08-01
15
  """
16
  import os
17
  import re
 
2
  HubSpot Billing → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
+ import hubspot_billing
6
+ hubspot_billing.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
+ python hubspot_billing.py 1754025600000
11
  # ISO-8601
12
+ python hubspot_billing.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
+ python hubspot_billing.py 2025-08-01
15
  """
16
  import os
17
  import re
python/hubspot_companies.py CHANGED
@@ -2,16 +2,16 @@
2
  HubSpot Companies → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
- import load_hubspot_companies
6
- load_hubspot_companies.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
- python load_hubspot_companies.py 1754025600000
11
  # ISO-8601
12
- python load_hubspot_companies.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
- python load_hubspot_companies.py 2025-08-01
15
  """
16
 
17
  import os
@@ -23,7 +23,7 @@ from typing import List, Dict, Optional, Tuple, Union
23
 
24
  import httpx
25
  import hubspot
26
- from dotenv import load_dotenv
27
  from supabase import create_client
28
  from hubspot.crm.companies import ApiException as CompaniesApiException
29
 
@@ -31,7 +31,7 @@ from hubspot_utils import (
31
  try_parse_int, parse_ts, get_property_label_mapping,
32
  )
33
  from supabase_utils import (
34
- update_sync_metadata, enrich_supabase_row, upload_raw_json_to_supabase,
35
  batched_insert, fetch_supabase_table,
36
  )
37
 
@@ -48,7 +48,7 @@ logging.basicConfig(
48
  # -----------------------------------------------------------------------------
49
  # Environment
50
  # -----------------------------------------------------------------------------
51
- load_dotenv()
52
  HUBSPOT_TOKEN = os.getenv("HUBSPOT_TOKEN")
53
  SUPABASE_URL = os.getenv("SUPABASE_URL")
54
  SUPABASE_SERVICE_ROLE_KEY = os.getenv("SUPABASE_SERVICE_ROLE_KEY")
@@ -407,7 +407,7 @@ def upsert_companies(companies: List[Dict]) -> None:
407
  print(f"{len(rows_to_upsert)} companies to insert/update (out of {len(companies)} read).")
408
 
409
  if rows_to_upsert:
410
- # upload_raw_json_to_supabase(supabase_client, rows_to_upsert, object_type="companies")
411
  batched_insert(supabase_client, "hubspot_companies",
412
  rows_to_upsert, batch_size=1000)
413
 
 
2
  HubSpot Companies → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
+ import hubspot_companies
6
+ hubspot_companies.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
+ python hubspot_companies.py 1754025600000
11
  # ISO-8601
12
+ python hubspot_companies.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
+ python hubspot_companies.py 2025-08-01
15
  """
16
 
17
  import os
 
23
 
24
  import httpx
25
  import hubspot
26
+ from dotenv import dotenv
27
  from supabase import create_client
28
  from hubspot.crm.companies import ApiException as CompaniesApiException
29
 
 
31
  try_parse_int, parse_ts, get_property_label_mapping,
32
  )
33
  from supabase_utils import (
34
+ update_sync_metadata, enrich_supabase_row, upraw_json_to_supabase,
35
  batched_insert, fetch_supabase_table,
36
  )
37
 
 
48
  # -----------------------------------------------------------------------------
49
  # Environment
50
  # -----------------------------------------------------------------------------
51
+ dotenv()
52
  HUBSPOT_TOKEN = os.getenv("HUBSPOT_TOKEN")
53
  SUPABASE_URL = os.getenv("SUPABASE_URL")
54
  SUPABASE_SERVICE_ROLE_KEY = os.getenv("SUPABASE_SERVICE_ROLE_KEY")
 
407
  print(f"{len(rows_to_upsert)} companies to insert/update (out of {len(companies)} read).")
408
 
409
  if rows_to_upsert:
410
+ # upraw_json_to_supabase(supabase_client, rows_to_upsert, object_type="companies")
411
  batched_insert(supabase_client, "hubspot_companies",
412
  rows_to_upsert, batch_size=1000)
413
 
python/hubspot_contacts.py CHANGED
@@ -1,9 +1,17 @@
1
  """
2
- HubSpot Contacts → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
- import load_hubspot_contacts
6
- load_hubspot_contacts.main(since_ms=<int milliseconds since epoch UTC>)
 
 
 
 
 
 
 
 
7
  """
8
 
9
  import os
 
1
  """
2
+ HubSpot Companies → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
+ import hubspot_contacts
6
+ hubspot_contacts.main(since_ms=<int milliseconds since epoch UTC>)
7
+
8
+ Direct CLI:
9
+ # epoch ms
10
+ python hubspot_contacts.py 1754025600000
11
+ # ISO-8601
12
+ python hubspot_contacts.py 2025-08-01T09:30:00Z
13
+ # Back-compat date (floors to 00:00Z)
14
+ python hubspot_contacts.py 2025-08-01
15
  """
16
 
17
  import os
python/hubspot_deals.py CHANGED
@@ -2,16 +2,16 @@
2
  HubSpot Deals → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
- import load_hubspot_deals
6
- load_hubspot_deals.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
- python load_hubspot_deals.py 1754025600000
11
  # ISO-8601
12
- python load_hubspot_deals.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
- python load_hubspot_deals.py 2025-08-01
15
  """
16
  import os
17
  import re
 
2
  HubSpot Deals → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
+ import hubspot_deals
6
+ hubspot_deals.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
+ python hubspot_deals.py 1754025600000
11
  # ISO-8601
12
+ python hubspot_deals.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
+ python hubspot_deals.py 2025-08-01
15
  """
16
  import os
17
  import re
python/hubspot_emails.py CHANGED
@@ -2,18 +2,18 @@
2
  HubSpot Emails → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
- import load_hubspot_emails
6
- load_hubspot_emails.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
- python load_hubspot_emails.py 1754025600000
11
 
12
  # ISO-8601 (Z or offset)
13
- python load_hubspot_emails.py 2025-08-01T09:30:00Z
14
 
15
  # Back-compat date (floors to 00:00:00Z)
16
- python load_hubspot_emails.py 2025-08-01
17
  """
18
 
19
  import os
 
2
  HubSpot Emails → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
+ import hubspot_emails
6
+ hubspot_emails.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
+ python hubspot_emails.py 1754025600000
11
 
12
  # ISO-8601 (Z or offset)
13
+ python hubspot_emails.py 2025-08-01T09:30:00Z
14
 
15
  # Back-compat date (floors to 00:00:00Z)
16
+ python hubspot_emails.py 2025-08-01
17
  """
18
 
19
  import os
python/hubspot_tickets.py CHANGED
@@ -2,16 +2,16 @@
2
  HubSpot Tickets → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
- import load_hubspot_tickets
6
- load_hubspot_tickets.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
- python load_hubspot_tickets.py 1754025600000
11
  # ISO-8601
12
- python load_hubspot_tickets.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
- python load_hubspot_tickets.py 2025-08-01
15
  """
16
 
17
  import os
 
2
  HubSpot Tickets → Supabase (incremental since a millisecond cursor)
3
 
4
  Usage from orchestrator:
5
+ import hubspot_tickets
6
+ hubspot_tickets.main(since_ms=<int milliseconds since epoch UTC>)
7
 
8
  Direct CLI:
9
  # epoch ms
10
+ python hubspot_tickets.py 1754025600000
11
  # ISO-8601
12
+ python hubspot_tickets.py 2025-08-01T09:30:00Z
13
  # Back-compat date (floors to 00:00Z)
14
+ python hubspot_tickets.py 2025-08-01
15
  """
16
 
17
  import os
python/load_hubspot_data.py CHANGED
@@ -3,11 +3,11 @@ Unified orchestrator for HubSpot → Supabase pipelines with a timestamp cursor.
3
 
4
  CLI:
5
  # epoch ms
6
- python hubspot_orchestrator.py 1754025600000
7
  # ISO-8601
8
- python hubspot_orchestrator.py 2025-08-01T09:30:00Z
9
  # Back-compat date (floors to 00:00Z)
10
- python hubspot_orchestrator.py 2025-08-01
11
  # No arg: defaults to today@00:00Z
12
  """
13
 
 
3
 
4
  CLI:
5
  # epoch ms
6
+ python load_hubspot_data.py 1754025600000
7
  # ISO-8601
8
+ python load_hubspot_data.py 2025-08-01T09:30:00Z
9
  # Back-compat date (floors to 00:00Z)
10
+ python load_hubspot_data.py 2025-08-01
11
  # No arg: defaults to today@00:00Z
12
  """
13
 
requirements.txt CHANGED
@@ -6,4 +6,5 @@ pandas==2.2.2
6
  openpyxl==3.1.5
7
  phonenumbers
8
  tldextract
9
- rapidfuzz
 
 
6
  openpyxl==3.1.5
7
  phonenumbers
8
  tldextract
9
+ rapidfuzz
10
+ urllib3==2.5.0