findly.unified-reporting-sdk 0.7.11__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.11 → findly_unified_reporting_sdk-0.7.13}/PKG-INFO +6 -6
  2. {findly_unified_reporting_sdk-0.7.11 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/ga4/ga4_query_args_parser.py +6 -2
  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.11 → findly_unified_reporting_sdk-0.7.13}/pyproject.toml +13 -13
  5. findly_unified_reporting_sdk-0.7.11/findly/unified_reporting_sdk/data_sources/gsc/gsc_service.py +0 -55
  6. {findly_unified_reporting_sdk-0.7.11 → findly_unified_reporting_sdk-0.7.13}/LICENSE +0 -0
  7. {findly_unified_reporting_sdk-0.7.11 → findly_unified_reporting_sdk-0.7.13}/README.md +0 -0
  8. {findly_unified_reporting_sdk-0.7.11 → findly_unified_reporting_sdk-0.7.13}/findly/__init__.py +0 -0
  9. {findly_unified_reporting_sdk-0.7.11 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/__init__.py +0 -0
  10. {findly_unified_reporting_sdk-0.7.11 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/data_sources/__init__.py +0 -0
  11. {findly_unified_reporting_sdk-0.7.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → 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.11 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/protos/.gitignore +0 -0
  31. {findly_unified_reporting_sdk-0.7.11 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/protos/__init__.py +0 -0
  32. {findly_unified_reporting_sdk-0.7.11 → 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.11 → 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.11 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/urs.py +0 -0
  35. {findly_unified_reporting_sdk-0.7.11 → findly_unified_reporting_sdk-0.7.13}/findly/unified_reporting_sdk/util/__init__.py +0 -0
  36. {findly_unified_reporting_sdk-0.7.11 → 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.11
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)
@@ -225,13 +225,17 @@ class GA4QueryArgsParser(CommonParser):
225
225
  query_args: QueryArgs,
226
226
  property_id: str,
227
227
  ) -> Dict[str, Any]:
228
+ # Remove duplicates from metrics and dimensions to avoid redundant processing.
229
+ unique_metrics = list(dict.fromkeys(query_args.metrics))
230
+ unique_dimensions = list(dict.fromkeys(query_args.group_by_columns))
231
+
228
232
  ga4_metrics_list = await self.get_metrics(
229
- metrics_name_list=list(query_args.metrics),
233
+ metrics_name_list=unique_metrics,
230
234
  )
231
235
  LOGGER.info("sucessfully got metrics")
232
236
 
233
237
  ga4_dimensions_list = await self.get_dimensions(
234
- dimensions_name_list=list(query_args.group_by_columns),
238
+ dimensions_name_list=unique_dimensions,
235
239
  )
236
240
  LOGGER.info("sucessfully got dimensions")
237
241
 
@@ -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.11"
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
- ...