Skip to content

Commit

Permalink
[Backport 1.7.latest] Acknowledge send_anonymous_usage_stats settin…
Browse files Browse the repository at this point in the history
…g for python models (#948)

* Acknowledge `send_anonymous_usage_stats` setting for python models (#933)

* add draft integration test demonstrating the issue
* changie
* condition on the send_anonymous_usage_stats setting when building a python model

(cherry picked from commit ad7ea4d)

* update how to turn send_anonymous_usage_stats on and off for 1.7 in the test fixtures

---------

Co-authored-by: Mike Alfare <[email protected]>
Co-authored-by: Mike Alfare <[email protected]>
  • Loading branch information
3 people authored Mar 21, 2024
1 parent bdc975e commit 7cb4059
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 @@ -216,10 +216,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 profiles_config_update(self):
return {"config": {"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 profiles_config_update(self):
return {"config": {"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 7cb4059

Please sign in to comment.