findly.unified-reporting-sdk 0.7.12__py3-none-any.whl → 0.7.14__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.
- findly/unified_reporting_sdk/data_sources/fb_ads/fb_ads_query_args_parser.py +0 -9
- findly/unified_reporting_sdk/data_sources/ga4/ga4_query_args_parser.py +10 -10
- findly/unified_reporting_sdk/data_sources/gsc/gsc_service.py +13 -26
- findly/unified_reporting_sdk/protos/findly_semantic_layer_pb2.py +32 -32
- {findly_unified_reporting_sdk-0.7.12.dist-info → findly_unified_reporting_sdk-0.7.14.dist-info}/METADATA +6 -6
- {findly_unified_reporting_sdk-0.7.12.dist-info → findly_unified_reporting_sdk-0.7.14.dist-info}/RECORD +8 -10
- findly/unified_reporting_sdk/util/__init__.py +0 -0
- findly/unified_reporting_sdk/util/create_numeric_string_series.py +0 -16
- {findly_unified_reporting_sdk-0.7.12.dist-info → findly_unified_reporting_sdk-0.7.14.dist-info}/LICENSE +0 -0
- {findly_unified_reporting_sdk-0.7.12.dist-info → findly_unified_reporting_sdk-0.7.14.dist-info}/WHEEL +0 -0
|
@@ -11,10 +11,6 @@ from findly.unified_reporting_sdk.data_sources.common.common_parser import (
|
|
|
11
11
|
RESERVED_TOTAL,
|
|
12
12
|
)
|
|
13
13
|
|
|
14
|
-
from findly.unified_reporting_sdk.util.create_numeric_string_series import (
|
|
15
|
-
create_numeric_string_series,
|
|
16
|
-
)
|
|
17
|
-
|
|
18
14
|
from findly.unified_reporting_sdk.data_sources.common.where_string_comparison import (
|
|
19
15
|
parse_where_column_condition,
|
|
20
16
|
WhereClauseInformation,
|
|
@@ -333,8 +329,6 @@ class FbAdsQueryArgsParser(CommonParser):
|
|
|
333
329
|
|
|
334
330
|
# remove duplicates from explosions and reset index
|
|
335
331
|
df = df.drop_duplicates().reset_index(drop=True)
|
|
336
|
-
# Also cap float columns to 2 decimal places
|
|
337
|
-
df = df.apply(create_numeric_string_series)
|
|
338
332
|
|
|
339
333
|
# At last, return that if there is only one date range,
|
|
340
334
|
# else, we need to split the dataframe into multiple dataframes
|
|
@@ -555,9 +549,6 @@ class FbAdsQueryArgsParser(CommonParser):
|
|
|
555
549
|
# Keep only the first row
|
|
556
550
|
summary_df = summary_df.head(1)
|
|
557
551
|
|
|
558
|
-
# Also cap float columns to 2 decimal places
|
|
559
|
-
summary_df = summary_df.apply(create_numeric_string_series)
|
|
560
|
-
|
|
561
552
|
return [summary_df]
|
|
562
553
|
|
|
563
554
|
async def parse_query_args_to_request_params(
|
|
@@ -83,14 +83,14 @@ class GA4QueryArgsParser(CommonParser):
|
|
|
83
83
|
# Check if the metric header ends with 'Rate'
|
|
84
84
|
if header.endswith("Rate"):
|
|
85
85
|
# Convert the value to a float and multiply by 100
|
|
86
|
-
value_number =
|
|
86
|
+
value_number = float(value) * 100
|
|
87
87
|
else:
|
|
88
88
|
# Cap float values to 2 decimal places
|
|
89
89
|
value_number = float(value)
|
|
90
90
|
if value_number.is_integer():
|
|
91
91
|
value_number = int(value_number)
|
|
92
92
|
else:
|
|
93
|
-
value_number =
|
|
93
|
+
value_number = value_number
|
|
94
94
|
row_dict[header] = value_number
|
|
95
95
|
|
|
96
96
|
rows.append(row_dict)
|
|
@@ -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,
|
|
@@ -8,48 +8,35 @@ from googleapiclient.discovery import Resource
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class Sites(Protocol):
|
|
11
|
-
def add(self) -> None:
|
|
12
|
-
...
|
|
11
|
+
def add(self) -> None: ...
|
|
13
12
|
|
|
14
|
-
def delete(self) -> None:
|
|
15
|
-
...
|
|
13
|
+
def delete(self) -> None: ...
|
|
16
14
|
|
|
17
|
-
def get(self) -> None:
|
|
18
|
-
...
|
|
15
|
+
def get(self) -> None: ...
|
|
19
16
|
|
|
20
|
-
def list(self) -> HttpRequest:
|
|
21
|
-
...
|
|
17
|
+
def list(self) -> HttpRequest: ...
|
|
22
18
|
|
|
23
19
|
|
|
24
20
|
class SearchAnalytics(Protocol):
|
|
25
21
|
class SearchAnalyticsQueryKwargs(TypedDict):
|
|
26
22
|
siteUrl: str
|
|
27
23
|
|
|
28
|
-
def query(self, **kwargs: Unpack[SearchAnalyticsQueryKwargs]) -> HttpRequest:
|
|
29
|
-
...
|
|
24
|
+
def query(self, **kwargs: Unpack[SearchAnalyticsQueryKwargs]) -> HttpRequest: ...
|
|
30
25
|
|
|
31
|
-
def close(self) -> None:
|
|
32
|
-
...
|
|
26
|
+
def close(self) -> None: ...
|
|
33
27
|
|
|
34
28
|
|
|
35
29
|
class GscService(Protocol):
|
|
36
|
-
def close(self) -> None:
|
|
37
|
-
...
|
|
30
|
+
def close(self) -> None: ...
|
|
38
31
|
|
|
39
|
-
def new_batch_http_request(self) -> None:
|
|
40
|
-
...
|
|
32
|
+
def new_batch_http_request(self) -> None: ...
|
|
41
33
|
|
|
42
|
-
def searchanalytics(self) -> SearchAnalytics:
|
|
43
|
-
...
|
|
34
|
+
def searchanalytics(self) -> SearchAnalytics: ...
|
|
44
35
|
|
|
45
|
-
def sitemaps(self) -> None:
|
|
46
|
-
...
|
|
36
|
+
def sitemaps(self) -> None: ...
|
|
47
37
|
|
|
48
|
-
def sites(self) -> Sites:
|
|
49
|
-
...
|
|
38
|
+
def sites(self) -> Sites: ...
|
|
50
39
|
|
|
51
|
-
def urlInspection(self) -> None:
|
|
52
|
-
...
|
|
40
|
+
def urlInspection(self) -> None: ...
|
|
53
41
|
|
|
54
|
-
def urlTestingTools(self) -> None:
|
|
55
|
-
...
|
|
42
|
+
def urlTestingTools(self) -> None: ...
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
3
|
# source: findly_semantic_layer.proto
|
|
4
4
|
"""Generated protocol buffer code."""
|
|
5
|
-
from google.protobuf.internal import builder as _builder
|
|
6
5
|
from google.protobuf import descriptor as _descriptor
|
|
7
6
|
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
7
|
from google.protobuf import symbol_database as _symbol_database
|
|
8
|
+
from google.protobuf.internal import builder as _builder
|
|
9
9
|
# @@protoc_insertion_point(imports)
|
|
10
10
|
|
|
11
11
|
_sym_db = _symbol_database.Default()
|
|
@@ -15,37 +15,37 @@ _sym_db = _symbol_database.Default()
|
|
|
15
15
|
|
|
16
16
|
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1b\x66indly_semantic_layer.proto\x12\x15\x66indly_semantic_layer\"\xd4\x02\n\tDimension\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x02 \x01(\t\x12\x0c\n\x04\x65xpr\x18\x03 \x01(\t\x12\x32\n\x04type\x18\x04 \x01(\x0e\x32$.findly_semantic_layer.DimensionType\x12?\n\x0btype_params\x18\x05 \x01(\x0b\x32*.findly_semantic_layer.DimensionTypeParams\x12\x14\n\x0ctop_n_values\x18\x06 \x03(\t\x12\x16\n\nvalue_type\x18\x07 \x01(\tB\x02\x18\x01\x12\x19\n\x11\x64\x61ta_source_names\x18\x08 \x03(\t\x12\x14\n\x0c\x64isplay_name\x18\t \x01(\t\x12\x42\n\x0fvalue_type_enum\x18\n \x01(\x0e\x32).findly_semantic_layer.DimensionValueType\"k\n\x13\x44imensionTypeParams\x12@\n\x10time_granularity\x18\x01 \x01(\x0e\x32&.findly_semantic_layer.DateGranularity\x12\x12\n\nis_primary\x18\x02 \x01(\x08\"\x8b\x03\n\x06Metric\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\t\x12\x12\n\nexpression\x18\x04 \x01(\t\x12\x18\n\x10view_id_of_table\x18\x05 \x01(\t\x12\x12\n\ntable_name\x18\x06 \x01(\t\x12\x10\n\x08measures\x18\x07 \x03(\t\x12\x11\n\tnumerator\x18\x08 \x01(\t\x12\x13\n\x0b\x64\x65nominator\x18\t \x01(\t\x12/\n\x04type\x18\n \x01(\x0e\x32!.findly_semantic_layer.MetricType\x12\x10\n\x06window\x18\x0b \x01(\tH\x00\x12\x17\n\rgrain_to_date\x18\x0c \x01(\tH\x00\x12:\n\nvalue_type\x18\r \x01(\x0e\x32&.findly_semantic_layer.MetricValueType\x12\x14\n\x0c\x64isplay_name\x18\x0e \x01(\t\x12\x12\n\nis_numeric\x18\x0f \x01(\x08\x42\x14\n\x12\x63umulative_process\"4\n\x0c\x44\x61teStrRange\x12\x12\n\nstart_date\x18\x01 \x01(\t\x12\x10\n\x08\x65nd_date\x18\x02 \x01(\t\"\x93\x03\n\tQueryArgs\x12\x14\n\x0cwhere_clause\x18\x01 \x01(\t\x12\x18\n\x10group_by_columns\x18\x02 \x03(\t\x12\x1a\n\x12metrics_expression\x18\x03 \x03(\t\x12\r\n\x05limit\x18\x04 \x01(\t\x12\x10\n\x08order_by\x18\x05 \x03(\t\x12\x19\n\x11\x64\x61te_where_clause\x18\x06 \x01(\t\x12\x0f\n\x07metrics\x18\x07 \x03(\t\x12\x15\n\rhaving_clause\x18\x08 \x01(\t\x12\x1c\n\x14incompatible_metrics\x18\t \x03(\t\x12\x1f\n\x17incompatible_dimensions\x18\n \x03(\t\x12\x38\n\x0b\x64\x61te_ranges\x18\x0b \x03(\x0b\x32#.findly_semantic_layer.DateStrRange\x12\x17\n\x0fsql_explanation\x18\x0c \x01(\t\x12\r\n\x05level\x18\r \x01(\t\x12\x16\n\x0etime_increment\x18\x0e \x01(\t\x12\x1d\n\x15main_data_source_name\x18\x0f \x01(\t\"\x80\x01\n\x12\x44\x61tasourceMetadata\x12>\n\x08location\x18\x01 \x01(\x0e\x32,.findly_semantic_layer.DataSourceIntegration\x12\x13\n\x0bproperty_id\x18\x02 \x01(\t\x12\x15\n\rproperty_name\x18\x03 \x01(\t*b\n\x15\x44\x61taSourceIntegration\x12 \n\x1c\x44\x41TA_SOURCE_LOCATION_UNKNOWN\x10\x00\x12\x12\n\x0eSEMANTIC_LAYER\x10\x01\x12\x07\n\x03GA4\x10\x02\x12\n\n\x06\x46\x42_ADS\x10\x03*S\n\x0f\x44\x61teGranularity\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x07\n\x03\x44\x41Y\x10\x01\x12\x08\n\x04WEEK\x10\x02\x12\t\n\x05MONTH\x10\x03\x12\x0b\n\x07QUARTER\x10\x04\x12\x08\n\x04YEAR\x10\x05*\x7f\n\x0b\x41ggregation\x12\x17\n\x13\x41GGREGATION_UNKNOWN\x10\x00\x12\x07\n\x03SUM\x10\x01\x12\x0f\n\x0bSUM_BOOLEAN\x10\x02\x12\x12\n\x0e\x43OUNT_DISTINCT\x10\x03\x12\x07\n\x03MIN\x10\x04\x12\x07\n\x03MAX\x10\x05\x12\x0b\n\x07\x41VERAGE\x10\x06\x12\n\n\x06MEDIAN\x10\x07*\xab\x01\n\rDimensionType\x12\x15\n\x11\x44IMENSION_UNKNOWN\x10\x00\x12\x0f\n\x0b\x43\x41TEGORICAL\x10\x01\x12\x08\n\x04TIME\x10\x02\x12\x10\n\x0c\x46\x42_ADS_FIELD\x10\x03\x12\x14\n\x10\x46\x42_ADS_BREAKDOWN\x10\x04\x12\x1b\n\x17\x46\x42_ADS_ACTION_BREAKDOWN\x10\x05\x12#\n\x1f\x46\x42_ADS_SUMMARY_ACTION_BREAKDOWN\x10\x06*\x84\x01\n\x12\x44imensionValueType\x12\x16\n\x12VALUE_TYPE_UNKNOWN\x10\x00\x12\n\n\x06STRING\x10\x01\x12\x0b\n\x07INTEGER\x10\x02\x12\t\n\x05\x46LOAT\x10\x03\x12\x0b\n\x07\x42OOLEAN\x10\x04\x12\x08\n\x04\x44\x41TE\x10\x05\x12\x0c\n\x08\x44\x41TETIME\x10\x06\x12\r\n\tTIMESTAMP\x10\x07*o\n\nMetricType\x12\x12\n\x0eMETRIC_UNKNOWN\x10\x00\x12\x11\n\rMEASURE_PROXY\x10\x01\x12\x0e\n\nCUMULATIVE\x10\x02\x12\t\n\x05RATIO\x10\x03\x12\x0b\n\x07\x44\x45RIVED\x10\x04\x12\x12\n\x0eSQL_EXPRESSION\x10\x05*\xf9\x04\n\x0fMetricValueType\x12\x1d\n\x19METRIC_VALUE_TYPE_UNKNOWN\x10\x00\x12\x1d\n\x19METRIC_VALUE_TYPE_INTEGER\x10\x01\x12\x1b\n\x17METRIC_VALUE_TYPE_FLOAT\x10\x02\x12\x1d\n\x19METRIC_VALUE_TYPE_SECONDS\x10\x03\x12\"\n\x1eMETRIC_VALUE_TYPE_MILLISECONDS\x10\x04\x12\x1d\n\x19METRIC_VALUE_TYPE_MINUTES\x10\x05\x12\x1b\n\x17METRIC_VALUE_TYPE_HOURS\x10\x06\x12\x1e\n\x1aMETRIC_VALUE_TYPE_STANDARD\x10\x07\x12\x1e\n\x1aMETRIC_VALUE_TYPE_CURRENCY\x10\x08\x12\x1a\n\x16METRIC_VALUE_TYPE_FEET\x10\t\x12\x1b\n\x17METRIC_VALUE_TYPE_MILES\x10\n\x12\x1c\n\x18METRIC_VALUE_TYPE_METERS\x10\x0b\x12 \n\x1cMETRIC_VALUE_TYPE_KILOMETERS\x10\x0c\x12\x1c\n\x18METRIC_VALUE_TYPE_STRING\x10\r\x12$\n METRIC_VALUE_TYPE_NUMERIC_STRING\x10\x0e\x12+\n\'METRIC_VALUE_TYPE_LIST_ADS_ACTION_STATS\x10\x0f\x12\x32\n.METRIC_VALUE_TYPE_LIST_ADS_INSIGHTS_DDA_RESULT\x10\x10\x12.\n*METRIC_VALUE_TYPE_LIST_ADS_HISTOGRAM_STATS\x10\x11\x62\x06proto3')
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
_builder.
|
|
18
|
+
_globals = globals()
|
|
19
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
20
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'findly_semantic_layer_pb2', _globals)
|
|
20
21
|
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
21
|
-
|
|
22
22
|
DESCRIPTOR._options = None
|
|
23
|
-
_DIMENSION.fields_by_name['value_type']._options = None
|
|
24
|
-
_DIMENSION.fields_by_name['value_type']._serialized_options = b'\030\001'
|
|
25
|
-
_DATASOURCEINTEGRATION._serialized_start=1495
|
|
26
|
-
_DATASOURCEINTEGRATION._serialized_end=1593
|
|
27
|
-
_DATEGRANULARITY._serialized_start=1595
|
|
28
|
-
_DATEGRANULARITY._serialized_end=1678
|
|
29
|
-
_AGGREGATION._serialized_start=1680
|
|
30
|
-
_AGGREGATION._serialized_end=1807
|
|
31
|
-
_DIMENSIONTYPE._serialized_start=1810
|
|
32
|
-
_DIMENSIONTYPE._serialized_end=1981
|
|
33
|
-
_DIMENSIONVALUETYPE._serialized_start=1984
|
|
34
|
-
_DIMENSIONVALUETYPE._serialized_end=2116
|
|
35
|
-
_METRICTYPE._serialized_start=2118
|
|
36
|
-
_METRICTYPE._serialized_end=2229
|
|
37
|
-
_METRICVALUETYPE._serialized_start=2232
|
|
38
|
-
_METRICVALUETYPE._serialized_end=2865
|
|
39
|
-
_DIMENSION._serialized_start=55
|
|
40
|
-
_DIMENSION._serialized_end=395
|
|
41
|
-
_DIMENSIONTYPEPARAMS._serialized_start=397
|
|
42
|
-
_DIMENSIONTYPEPARAMS._serialized_end=504
|
|
43
|
-
_METRIC._serialized_start=507
|
|
44
|
-
_METRIC._serialized_end=902
|
|
45
|
-
_DATESTRRANGE._serialized_start=904
|
|
46
|
-
_DATESTRRANGE._serialized_end=956
|
|
47
|
-
_QUERYARGS._serialized_start=959
|
|
48
|
-
_QUERYARGS._serialized_end=1362
|
|
49
|
-
_DATASOURCEMETADATA._serialized_start=1365
|
|
50
|
-
_DATASOURCEMETADATA._serialized_end=1493
|
|
23
|
+
_globals['_DIMENSION'].fields_by_name['value_type']._options = None
|
|
24
|
+
_globals['_DIMENSION'].fields_by_name['value_type']._serialized_options = b'\030\001'
|
|
25
|
+
_globals['_DATASOURCEINTEGRATION']._serialized_start=1495
|
|
26
|
+
_globals['_DATASOURCEINTEGRATION']._serialized_end=1593
|
|
27
|
+
_globals['_DATEGRANULARITY']._serialized_start=1595
|
|
28
|
+
_globals['_DATEGRANULARITY']._serialized_end=1678
|
|
29
|
+
_globals['_AGGREGATION']._serialized_start=1680
|
|
30
|
+
_globals['_AGGREGATION']._serialized_end=1807
|
|
31
|
+
_globals['_DIMENSIONTYPE']._serialized_start=1810
|
|
32
|
+
_globals['_DIMENSIONTYPE']._serialized_end=1981
|
|
33
|
+
_globals['_DIMENSIONVALUETYPE']._serialized_start=1984
|
|
34
|
+
_globals['_DIMENSIONVALUETYPE']._serialized_end=2116
|
|
35
|
+
_globals['_METRICTYPE']._serialized_start=2118
|
|
36
|
+
_globals['_METRICTYPE']._serialized_end=2229
|
|
37
|
+
_globals['_METRICVALUETYPE']._serialized_start=2232
|
|
38
|
+
_globals['_METRICVALUETYPE']._serialized_end=2865
|
|
39
|
+
_globals['_DIMENSION']._serialized_start=55
|
|
40
|
+
_globals['_DIMENSION']._serialized_end=395
|
|
41
|
+
_globals['_DIMENSIONTYPEPARAMS']._serialized_start=397
|
|
42
|
+
_globals['_DIMENSIONTYPEPARAMS']._serialized_end=504
|
|
43
|
+
_globals['_METRIC']._serialized_start=507
|
|
44
|
+
_globals['_METRIC']._serialized_end=902
|
|
45
|
+
_globals['_DATESTRRANGE']._serialized_start=904
|
|
46
|
+
_globals['_DATESTRRANGE']._serialized_end=956
|
|
47
|
+
_globals['_QUERYARGS']._serialized_start=959
|
|
48
|
+
_globals['_QUERYARGS']._serialized_end=1362
|
|
49
|
+
_globals['_DATASOURCEMETADATA']._serialized_start=1365
|
|
50
|
+
_globals['_DATASOURCEMETADATA']._serialized_end=1493
|
|
51
51
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: findly.unified-reporting-sdk
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.14
|
|
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 (>=
|
|
17
|
-
Requires-Dist: google-analytics-admin (>=0.
|
|
18
|
-
Requires-Dist: google-analytics-data (>=0.18.
|
|
19
|
-
Requires-Dist: google-api-python-client (>=2.
|
|
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 (>=
|
|
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)
|
|
@@ -9,7 +9,7 @@ findly/unified_reporting_sdk/data_sources/common/reports_client.py,sha256=zvr6it
|
|
|
9
9
|
findly/unified_reporting_sdk/data_sources/common/where_string_comparison.py,sha256=rraEwXe_bo0R1Fbq6-C_Ooz0_J5C0tr1VwHvajKWfsg,8298
|
|
10
10
|
findly/unified_reporting_sdk/data_sources/fb_ads/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
11
11
|
findly/unified_reporting_sdk/data_sources/fb_ads/fb_ads_client.py,sha256=K4Z6cIBNdQWBrD_NKT_QRz8-gJE7YnoOeZmxGhgUT8A,22004
|
|
12
|
-
findly/unified_reporting_sdk/data_sources/fb_ads/fb_ads_query_args_parser.py,sha256=
|
|
12
|
+
findly/unified_reporting_sdk/data_sources/fb_ads/fb_ads_query_args_parser.py,sha256=GKzJXCgQd4FUziMSXKch4eyLk8rK9DsIyLQN7rAc2NY,31442
|
|
13
13
|
findly/unified_reporting_sdk/data_sources/fb_ads/metadata/action_breakdowns.csv,sha256=FUjp_e4aPnkKPIjCmEq4gOmSInFefAZQNsSs3-rRcLg,1492
|
|
14
14
|
findly/unified_reporting_sdk/data_sources/fb_ads/metadata/breakdowns.csv,sha256=-i_hd5NAJjHkcfMboqemRmnAalZ4Z8TczNzeYuaFnsw,5778
|
|
15
15
|
findly/unified_reporting_sdk/data_sources/fb_ads/metadata/dimensions.jsonl,sha256=066M3G-khDomEBN3BwE2wf5QVTZDucC7Cqr_77CZfN8,16133
|
|
@@ -17,19 +17,17 @@ findly/unified_reporting_sdk/data_sources/fb_ads/metadata/fields.csv,sha256=9FQ8
|
|
|
17
17
|
findly/unified_reporting_sdk/data_sources/fb_ads/metadata/metrics.jsonl,sha256=k46VIKAOZiuefpo-umQ7SYZnl8I5NIzP7_KITLfL974,19606
|
|
18
18
|
findly/unified_reporting_sdk/data_sources/ga4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
19
19
|
findly/unified_reporting_sdk/data_sources/ga4/ga4_client.py,sha256=_HDaDyxecq5CRxyGi1FcGeMismxhqgg598ISMrpIvrQ,39901
|
|
20
|
-
findly/unified_reporting_sdk/data_sources/ga4/ga4_query_args_parser.py,sha256
|
|
20
|
+
findly/unified_reporting_sdk/data_sources/ga4/ga4_query_args_parser.py,sha256=-s9iLTuFvpxx4NGll6GrUNQ_Exc_3UDZOFJ8EdPBYiA,30200
|
|
21
21
|
findly/unified_reporting_sdk/data_sources/ga4/metadata/dimensions.jsonl,sha256=nSecS8Pi0ZTjsd1PlIyqAbYF56Chw2zLYRWetLkG9VQ,33511
|
|
22
22
|
findly/unified_reporting_sdk/data_sources/gsc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
23
|
findly/unified_reporting_sdk/data_sources/gsc/gsc_client.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
findly/unified_reporting_sdk/data_sources/gsc/gsc_service.py,sha256=
|
|
24
|
+
findly/unified_reporting_sdk/data_sources/gsc/gsc_service.py,sha256=C6wm38Hu-UozFll71G3b03e2hgLFiC4I5yjcuo9hB4M,934
|
|
25
25
|
findly/unified_reporting_sdk/protos/.gitignore,sha256=jyvVCY11J1OlOGM-nZCWKSR1vfO6fP65lnH65qf5W20,27
|
|
26
26
|
findly/unified_reporting_sdk/protos/__init__.py,sha256=sfz7Yn3hvQrnhTfoZPGTbo0F1_Fw4X494wPSZojRajA,137
|
|
27
|
-
findly/unified_reporting_sdk/protos/findly_semantic_layer_pb2.py,sha256=
|
|
27
|
+
findly/unified_reporting_sdk/protos/findly_semantic_layer_pb2.py,sha256=SaY46pOt8sDiVWrpY_f0uDwfgm_OPcHUkCdetnbPnUw,7279
|
|
28
28
|
findly/unified_reporting_sdk/protos/findly_semantic_layer_pb2.pyi,sha256=jjoQm4TljpS8pcF6bqj21ygTQ-ayCzS3ScrRtbd5hPA,31043
|
|
29
29
|
findly/unified_reporting_sdk/urs.py,sha256=-vhOFpi-M0uo_tZ_O_hTDDEGO-ATf78nqEf5JhIcaz4,2956
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
findly_unified_reporting_sdk-0.7.
|
|
33
|
-
findly_unified_reporting_sdk-0.7.
|
|
34
|
-
findly_unified_reporting_sdk-0.7.12.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
35
|
-
findly_unified_reporting_sdk-0.7.12.dist-info/RECORD,,
|
|
30
|
+
findly_unified_reporting_sdk-0.7.14.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
31
|
+
findly_unified_reporting_sdk-0.7.14.dist-info/METADATA,sha256=0zNhdl6yBerd1pxBEOGD0qA-K67Hni8_yLi63-8brvo,3213
|
|
32
|
+
findly_unified_reporting_sdk-0.7.14.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
33
|
+
findly_unified_reporting_sdk-0.7.14.dist-info/RECORD,,
|
|
File without changes
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import pandas as pd
|
|
2
|
-
|
|
3
|
-
DEFAULT_FLOAT_PRECISION = 2
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def create_numeric_string_series(
|
|
7
|
-
col: pd.Series, precision: int = DEFAULT_FLOAT_PRECISION
|
|
8
|
-
) -> pd.Series:
|
|
9
|
-
try:
|
|
10
|
-
numeric_col: pd.Series = pd.to_numeric(col)
|
|
11
|
-
if (numeric_col.dropna() % 1 == 0).all():
|
|
12
|
-
return numeric_col.astype(int).astype(str)
|
|
13
|
-
else:
|
|
14
|
-
return numeric_col.astype(float).round(precision).astype(str)
|
|
15
|
-
except Exception:
|
|
16
|
-
return col
|
|
File without changes
|
|
File without changes
|