findly.unified-reporting-sdk 0.7.12__tar.gz → 0.7.13__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 (36) hide show
  1. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/PKG-INFO +6 -6
  2. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/ga4/ga4_query_args_parser.py +8 -8
  3. findly_unified_reporting_sdk-0.7.13/findly/unified_reporting_sdk/data_sources/gsc/gsc_service.py +42 -0
  4. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/pyproject.toml +13 -13
  5. findly_unified_reporting_sdk-0.7.12/findly/unified_reporting_sdk/data_sources/gsc/gsc_service.py +0 -55
  6. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/LICENSE +0 -0
  7. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/README.md +0 -0
  8. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/__init__.py +0 -0
  9. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/__init__.py +0 -0
  10. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/__init__.py +0 -0
  11. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/common/__init__.py +0 -0
  12. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/common/common_parser.py +0 -0
  13. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/common/date_range_helper.py +0 -0
  14. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/common/entities.py +0 -0
  15. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/common/reports_client.py +0 -0
  16. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/common/where_string_comparison.py +0 -0
  17. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/fb_ads/__init__.py +0 -0
  18. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/fb_ads/fb_ads_client.py +0 -0
  19. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/fb_ads/fb_ads_query_args_parser.py +0 -0
  20. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/fb_ads/metadata/action_breakdowns.csv +0 -0
  21. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/fb_ads/metadata/breakdowns.csv +0 -0
  22. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/fb_ads/metadata/dimensions.jsonl +0 -0
  23. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/fb_ads/metadata/fields.csv +0 -0
  24. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/fb_ads/metadata/metrics.jsonl +0 -0
  25. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/ga4/__init__.py +0 -0
  26. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/ga4/ga4_client.py +0 -0
  27. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/ga4/metadata/dimensions.jsonl +0 -0
  28. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/gsc/__init__.py +0 -0
  29. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/gsc/gsc_client.py +0 -0
  30. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/protos/.gitignore +0 -0
  31. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/protos/__init__.py +0 -0
  32. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/protos/findly_semantic_layer_pb2.py +0 -0
  33. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/protos/findly_semantic_layer_pb2.pyi +0 -0
  34. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/urs.py +0 -0
  35. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/util/__init__.py +0 -0
  36. {findly_unified_reporting_sdk-0.7.12 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/util/create_numeric_string_series.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: findly.unified-reporting-sdk
3
- Version: 0.7.12
3
+ Version: 0.7.13
4
4
  Summary:
5
5
  License: GPL-3.0-only
6
6
  Requires-Python: >=3.9,<4.0
@@ -13,14 +13,14 @@ Classifier: Programming Language :: Python :: 3.12
13
13
  Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Dist: aiocache (>=0.12.2,<0.13.0)
15
15
  Requires-Dist: backoff (>=2.2.1,<3.0.0)
16
- Requires-Dist: facebook-business (>=21.0.5,<22.0.0)
17
- Requires-Dist: google-analytics-admin (>=0.22.7,<0.23.0)
18
- Requires-Dist: google-analytics-data (>=0.18.8,<0.19.0)
19
- Requires-Dist: google-api-python-client (>=2.122.0,<3.0.0)
16
+ Requires-Dist: facebook-business (>=22.0.5,<23.0.0)
17
+ Requires-Dist: google-analytics-admin (>=0.24.0,<0.25.0)
18
+ Requires-Dist: google-analytics-data (>=0.18.18,<0.19.0)
19
+ Requires-Dist: google-api-python-client (>=2.169.0,<3.0.0)
20
20
  Requires-Dist: oauth2client (>=4.1.3,<5.0.0)
21
21
  Requires-Dist: pandas (>=2.2.3,<3.0.0)
22
22
  Requires-Dist: protobuf (>=4.25.3,<5.0.0)
23
- Requires-Dist: sqlglot (>=25.25.1,<26.0.0)
23
+ Requires-Dist: sqlglot (>=26.17.1,<27.0.0)
24
24
  Description-Content-Type: text/markdown
25
25
 
26
26
  # Unified Reporting SDK (URS)
@@ -228,17 +228,17 @@ class GA4QueryArgsParser(CommonParser):
228
228
  # Remove duplicates from metrics and dimensions to avoid redundant processing.
229
229
  unique_metrics = list(dict.fromkeys(query_args.metrics))
230
230
  unique_dimensions = list(dict.fromkeys(query_args.group_by_columns))
231
-
231
+
232
232
  ga4_metrics_list = await self.get_metrics(
233
233
  metrics_name_list=unique_metrics,
234
234
  )
235
235
  LOGGER.info("sucessfully got metrics")
236
-
236
+
237
237
  ga4_dimensions_list = await self.get_dimensions(
238
238
  dimensions_name_list=unique_dimensions,
239
239
  )
240
240
  LOGGER.info("sucessfully got dimensions")
241
-
241
+
242
242
  ga4_date_ranges = self.get_date_ranges(
243
243
  date_str_range_list=(
244
244
  list(query_args.date_ranges)
@@ -248,7 +248,7 @@ class GA4QueryArgsParser(CommonParser):
248
248
  format_function=format_ga4_date_ranges_default,
249
249
  )
250
250
  LOGGER.info("sucessfully got date ranges")
251
-
251
+
252
252
  ga4_order_by_list = await self.get_order_by(
253
253
  order_by_list=(
254
254
  list(query_args.order_by) if query_args.order_by is not None else None
@@ -257,17 +257,17 @@ class GA4QueryArgsParser(CommonParser):
257
257
  order_by_dimensions_candidates=list(query_args.group_by_columns),
258
258
  )
259
259
  LOGGER.info("sucessfully got order by")
260
-
260
+
261
261
  ga4_dimension_filter_list = await self.get_filter_clause(
262
262
  filter_clause=query_args.where_clause
263
263
  )
264
264
  LOGGER.info("sucessfully got dimension filter")
265
-
265
+
266
266
  ga4_metrics_filter_list = await self.get_filter_clause(
267
267
  filter_clause=query_args.having_clause
268
268
  )
269
269
  LOGGER.info("sucessfully got metrics filter")
270
-
270
+
271
271
  LOGGER.info(
272
272
  {
273
273
  "msg": "query_parts",
@@ -283,7 +283,7 @@ class GA4QueryArgsParser(CommonParser):
283
283
  "limit": query_args.limit,
284
284
  }
285
285
  )
286
-
286
+
287
287
  ga4_request = {
288
288
  "metrics": ga4_metrics_list,
289
289
  "dimensions": ga4_dimensions_list,
@@ -0,0 +1,42 @@
1
+ # THIS IS VERY UNSTABLE AND MIGHT BE WRONG
2
+
3
+ from typing import Protocol, TypedDict, Any
4
+
5
+ from typing_extensions import Unpack
6
+ from googleapiclient.http import HttpRequest
7
+ from googleapiclient.discovery import Resource
8
+
9
+
10
+ class Sites(Protocol):
11
+ def add(self) -> None: ...
12
+
13
+ def delete(self) -> None: ...
14
+
15
+ def get(self) -> None: ...
16
+
17
+ def list(self) -> HttpRequest: ...
18
+
19
+
20
+ class SearchAnalytics(Protocol):
21
+ class SearchAnalyticsQueryKwargs(TypedDict):
22
+ siteUrl: str
23
+
24
+ def query(self, **kwargs: Unpack[SearchAnalyticsQueryKwargs]) -> HttpRequest: ...
25
+
26
+ def close(self) -> None: ...
27
+
28
+
29
+ class GscService(Protocol):
30
+ def close(self) -> None: ...
31
+
32
+ def new_batch_http_request(self) -> None: ...
33
+
34
+ def searchanalytics(self) -> SearchAnalytics: ...
35
+
36
+ def sitemaps(self) -> None: ...
37
+
38
+ def sites(self) -> Sites: ...
39
+
40
+ def urlInspection(self) -> None: ...
41
+
42
+ def urlTestingTools(self) -> None: ...
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "findly.unified-reporting-sdk"
3
- version = "0.7.12"
3
+ version = "0.7.13"
4
4
  license = "GPL-3.0-only"
5
5
  description = ""
6
6
  authors = []
@@ -18,22 +18,22 @@ pandas = "^2.2.3"
18
18
  protobuf = "^4.25.3"
19
19
  backoff = "^2.2.1"
20
20
  aiocache = "^0.12.2"
21
- facebook-business = "^21.0.5"
22
- sqlglot = "^25.25.1"
23
- google-analytics-admin = "^0.22.7"
24
- google-analytics-data = "^0.18.8"
25
- google-api-python-client = "^2.122.0"
21
+ facebook-business = "^22.0.5"
22
+ sqlglot = "^26.17.1"
23
+ google-analytics-admin = "^0.24.0"
24
+ google-analytics-data = "^0.18.18"
25
+ google-api-python-client = "^2.169.0"
26
26
  oauth2client = "^4.1.3"
27
27
 
28
28
  [tool.poetry.group.typing.dependencies]
29
- mypy = "^1.3.0"
30
- types-python-dateutil = "^2.8.19.20240106"
31
- types-protobuf = "^4.24.0.20240302"
29
+ mypy = "^1.15.0"
30
+ types-python-dateutil = "^2.9.0.20241206"
31
+ types-protobuf = "^6.30.2.20250506"
32
32
 
33
33
  [tool.poetry.group.dev.dependencies]
34
- pytest = "^8.1.1"
35
- pytest-asyncio = "^0.23.5.post1"
36
- mypy-protobuf = "^3.5.0"
34
+ pytest = "^8.3.5"
35
+ pytest-asyncio = "^0.26.0"
36
+ mypy-protobuf = "^3.6.0"
37
37
  python-dotenv = "^1.0.1"
38
38
 
39
39
  [build-system]
@@ -46,7 +46,7 @@ disallow_incomplete_defs = "True"
46
46
  check_untyped_defs = "True"
47
47
  disallow_untyped_defs = "True"
48
48
  warn_unused_ignores = "True"
49
- exclude = ["protos"]
49
+ exclude = ["protos", "dist"]
50
50
 
51
51
  [tool.pytest.ini_options]
52
52
  pythonpath = [
@@ -1,55 +0,0 @@
1
- # THIS IS VERY UNSTABLE AND MIGHT BE WRONG
2
-
3
- from typing import Protocol, TypedDict, Any
4
-
5
- from typing_extensions import Unpack
6
- from googleapiclient.http import HttpRequest
7
- from googleapiclient.discovery import Resource
8
-
9
-
10
- class Sites(Protocol):
11
- def add(self) -> None:
12
- ...
13
-
14
- def delete(self) -> None:
15
- ...
16
-
17
- def get(self) -> None:
18
- ...
19
-
20
- def list(self) -> HttpRequest:
21
- ...
22
-
23
-
24
- class SearchAnalytics(Protocol):
25
- class SearchAnalyticsQueryKwargs(TypedDict):
26
- siteUrl: str
27
-
28
- def query(self, **kwargs: Unpack[SearchAnalyticsQueryKwargs]) -> HttpRequest:
29
- ...
30
-
31
- def close(self) -> None:
32
- ...
33
-
34
-
35
- class GscService(Protocol):
36
- def close(self) -> None:
37
- ...
38
-
39
- def new_batch_http_request(self) -> None:
40
- ...
41
-
42
- def searchanalytics(self) -> SearchAnalytics:
43
- ...
44
-
45
- def sitemaps(self) -> None:
46
- ...
47
-
48
- def sites(self) -> Sites:
49
- ...
50
-
51
- def urlInspection(self) -> None:
52
- ...
53
-
54
- def urlTestingTools(self) -> None:
55
- ...