Skip to content

Commit 976bc4c

Browse files
authored
remove usage stats and various cleanup (#1596)
## Description Remove the usage_stats emit_usage telemetry from whylogs and various cleanup: * remove whylabs API key format length checks * more verbose retry warnings in failures using the whylabs_client * test cleanup - [x] I have reviewed the [Guidelines for Contributing](CONTRIBUTING.md) and the [Code of Conduct](CODE_OF_CONDUCT.md).
1 parent e5b5828 commit 976bc4c

18 files changed

Lines changed: 5 additions & 282 deletions

File tree

python/tests/api/writer/test_whylabs.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -342,22 +342,6 @@ def test_option_will_overwrite_defaults(self) -> None:
342342
assert writer._whylabs_client._dataset_id == "new_dataset_id"
343343
assert writer.key_id == "newkeynewk"
344344

345-
def test_api_key_prefers_parameter_over_env_var(self, results, caplog):
346-
with pytest.raises(ValueError):
347-
results.writer("whylabs").option(org_id="org_id", api_key="api_key_123.foo").write(dataset_id="dataset_id")
348-
349-
def test_writer_accepts_dest_param(self, results, caplog):
350-
# TODO: inspect error or mock better to avoid network call and keep test focused.
351-
with pytest.raises(ValueError):
352-
results.writer("whylabs").option(api_key="bad_key_format").write(dataset_id="dataset_id", dest="tmp")
353-
354-
def test_write_response(self, results):
355-
with pytest.raises(ValueError):
356-
response = (
357-
results.writer("whylabs").option(api_key="bad_key_format").write(dataset_id="dataset_id", dest="tmp")
358-
)
359-
assert response[0] is True
360-
361345
def test_changing_api_key_works(self) -> None:
362346
#
363347
# Defaults

python/whylogs/__init__.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
reader,
2727
write,
2828
)
29-
from .api.usage_stats import emit_usage as __emit_usage_stats
3029
from .api.whylabs import init
3130
from .core import DatasetProfileView
3231
from .migration.converters import v0_to_v1_view
@@ -65,5 +64,3 @@ def package_version(package: str = __package__) -> str:
6564
__version__,
6665
init,
6766
]
68-
69-
__emit_usage_stats("import")
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# flake8: noqa
2-
from whylogs.api.usage_stats import emit_usage
1+
from .profiler import fugue_profile
32

4-
# This import has a side effect
5-
from .profiler import fugue_profile # type: ignore
6-
7-
emit_usage("fugue")
3+
assert fugue_profile is not None

python/whylogs/api/logger/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
_log_segment,
2121
)
2222
from whylogs.api.logger.transient import TransientLogger
23-
from whylogs.api.usage_stats import emit_usage
2423
from whylogs.api.whylabs.session.notebook_logger import (
2524
notebook_session_log,
2625
notebook_session_log_comparison,
@@ -55,7 +54,6 @@ def log(
5554
) -> ResultSet:
5655
if multiple is not None:
5756
result_sets: Dict[str, ResultSet] = {}
58-
emit_usage("multiple")
5957
for alias, data in multiple.items():
6058
result_set = TransientLogger(schema=schema).log(data, trace_id=trace_id)
6159
if dataset_timestamp is not None:

python/whylogs/api/pyspark/experimental/profiler.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@
44
from typing import Dict, Iterable, Optional, Tuple
55

66
import whylogs as why
7-
from whylogs.api.usage_stats import emit_usage
87
from whylogs.core import DatasetSchema
98
from whylogs.core.metrics.metrics import conf
109
from whylogs.core.stubs import pd
1110
from whylogs.core.view.column_profile_view import ColumnProfileView
1211
from whylogs.core.view.dataset_profile_view import DatasetProfileView
1312

1413
logger = getLogger(__name__)
15-
emit_usage("pyspark")
1614

1715
try: # type: ignore
1816
from pyspark.ml.functions import vector_to_array

python/whylogs/api/pyspark/experimental/segmented_profiler.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import whylogs as why
99
from whylogs.api.logger.result_set import ResultSet, SegmentedResultSet
1010
from whylogs.api.pyspark.experimental.profiler import COL_NAME_FIELD, COL_PROFILE_FIELD
11-
from whylogs.api.usage_stats import emit_usage
1211
from whylogs.core import DatasetSchema
1312
from whylogs.core.segment import Segment
1413
from whylogs.core.segmentation_partition import SegmentationPartition
@@ -17,7 +16,6 @@
1716
from whylogs.core.view.dataset_profile_view import DatasetProfileView
1817

1918
logger = getLogger(__name__)
20-
emit_usage("pyspark")
2119

2220
try: # type: ignore
2321
from pyspark.ml.functions import vector_to_array

python/whylogs/api/usage_stats/__init__.py

Lines changed: 0 additions & 218 deletions
This file was deleted.

python/whylogs/api/whylabs/session/session.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,12 @@ def __init__(self, config: SessionConfig) -> None:
7777
If neither exist then this will attempt to create a new session and store the id in the config,
7878
which does require a successful service call to whylabs.
7979
"""
80-
from whylogs.api.usage_stats import emit_usage
8180

8281
super().__init__(config)
8382

8483
# Using lazy initialization to work around circular dependency issues
8584
self._whylabs_session_api = Lazy(self.__create_session_api)
8685
self._user_guid = self._get_or_create_user_guid()
87-
emit_usage("guest_session")
8886

8987
def __create_session_api(self) -> SessionsApi:
9088
from whylogs.api.whylabs.session.whylabs_client_cache import ClientCacheConfig
@@ -255,15 +253,12 @@ def upload_batch_profile(self, profile: ResultSet) -> Union[UploadResult, NotSup
255253

256254
class ApiKeySession(Session):
257255
def __init__(self, config: SessionConfig) -> None:
258-
from whylogs.api.usage_stats import emit_usage
259-
260256
super().__init__(config)
261257
self.api_key = config.get_api_key()
262258
self.org_id = config.get_org_id()
263259

264260
# Using lazy initialization to work around circular dependency issues
265261
self._whylabs_log_api = Lazy(partial(self.__create_log_api, config))
266-
emit_usage("api_key_session")
267262

268263
def __create_log_api(self, config: SessionConfig) -> LogApi:
269264
from whylogs.api.whylabs.session.whylabs_client_cache import ClientCacheConfig

python/whylogs/api/whylabs/session/whylabs_client_cache.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,6 @@ def __call__(self, config: Configuration) -> None:
2222
def _validate_api_key(self, api_key: Optional[str]) -> str:
2323
if api_key is None:
2424
raise ValueError("Missing API key. Set it via WHYLABS_API_KEY environment variable or as an api_key option")
25-
if len(api_key) < 12:
26-
raise ValueError("API key too short")
27-
if api_key[10] != ".":
28-
raise ValueError("Invalid format. Expecting a dot at an index 10")
2925
return api_key[:10]
3026

3127

python/whylogs/api/writer/mlflow.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import mlflow
77

8-
from whylogs.api.usage_stats import emit_usage
98
from whylogs.api.writer import Writer
109
from whylogs.api.writer.writer import _Writable
1110
from whylogs.core.utils import deprecated_alias
@@ -18,7 +17,6 @@ def __init__(self) -> None:
1817
self._file_dir = "whylogs"
1918
self._file_name = None
2019
self._end_run = True
21-
emit_usage("mlflow_writer")
2220

2321
@deprecated_alias(profile="file")
2422
def write(

0 commit comments

Comments
 (0)