Skip to content

Commit

Permalink
Acknowledge send_anonymous_usage_stats setting for python models (#933
Browse files Browse the repository at this point in the history
)

* add draft integration test demonstrating the issue
* changie
* condition on the send_anonymous_usage_stats setting when building a python model
  • Loading branch information
mikealfare authored Mar 21, 2024
1 parent 73b6a12 commit ad7ea4d
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 2 deletions.
6 changes: 6 additions & 0 deletions .changes/unreleased/Fixes-20240318-203635.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
kind: Fixes
body: Acknowledge `send_anonymous_usage_stats` setting for python models
time: 2024-03-18T20:36:35.396323-04:00
custom:
Author: mikealfare
Issue: "830"
7 changes: 5 additions & 2 deletions dbt/adapters/snowflake/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,10 +217,13 @@ def submit_python_job(self, parsed_model: dict, compiled_code: str):
if imports:
imports = f"IMPORTS = ('{imports}')"

snowpark_telemetry_string = "dbtLabs_dbtPython"
snowpark_telemetry_snippet = f"""
if self.config.args.SEND_ANONYMOUS_USAGE_STATS:
snowpark_telemetry_string = "dbtLabs_dbtPython"
snowpark_telemetry_snippet = f"""
import sys
sys._xoptions['snowflake_partner_attribution'].append("{snowpark_telemetry_string}")"""
else:
snowpark_telemetry_snippet = ""

common_procedure_code = f"""
RETURNS STRING
Expand Down
43 changes: 43 additions & 0 deletions tests/functional/adapter/test_anonymous_usage_stats.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from dbt.tests.util import run_dbt_and_capture
import pytest


ANONYMOUS_USAGE_MESSAGE = """
sys._xoptions['snowflake_partner_attribution'].append("dbtLabs_dbtPython")
""".strip()


MY_PYTHON_MODEL = """
import pandas
def model(dbt, session):
dbt.config(materialized='table')
data = [[1,2]] * 10
return pandas.DataFrame(data, columns=['test', 'test2'])
"""


class AnonymousUsageStatsBase:
@pytest.fixture(scope="class")
def models(self):
return {"my_python_model.py": MY_PYTHON_MODEL}


class TestAnonymousUsageStatsOn(AnonymousUsageStatsBase):
@pytest.fixture(scope="class")
def project_config_update(self):
return {"flags": {"send_anonymous_usage_stats": True}}

def test_stats_get_sent(self, project):
_, logs = run_dbt_and_capture(["--debug", "run"])
assert ANONYMOUS_USAGE_MESSAGE in logs


class TestAnonymousUsageStatsOff(AnonymousUsageStatsBase):
@pytest.fixture(scope="class")
def project_config_update(self, dbt_profile_target):
return {"flags": {"send_anonymous_usage_stats": False}}

def test_stats_do_not_get_sent(self, project):
_, logs = run_dbt_and_capture(["--debug", "run"])
assert ANONYMOUS_USAGE_MESSAGE not in logs

0 comments on commit ad7ea4d

Please sign in to comment.