Skip to content

Commit

Permalink
more efficient system info
Browse files Browse the repository at this point in the history
  • Loading branch information
edublancas committed Jan 12, 2024
1 parent 8a8cfe9 commit e2047b5
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 22 deletions.
21 changes: 21 additions & 0 deletions src/ploomber_core/telemetry/system_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,24 @@ def is_airflow():
def is_argo():
"""Returns: True for Argo env"""
return "ARGO_AGENT_TASK_WORKERS" in os.environ or "ARGO_KUBELET_PORT" in os.environ


def safe_call(function):
try:
return function()
except Exception:
return None


def get_system_info():
return {
"os": safe_call(get_os),
"python_version": safe_call(python_version),
"env": safe_call(get_env),
"is_docker": safe_call(is_docker),
"is_colab": safe_call(is_colab),
"is_paperspace": safe_call(is_paperspace),
"is_slurm": safe_call(is_slurm),
"is_airflow": safe_call(is_airflow),
"is_argo": safe_call(is_argo),
}
40 changes: 18 additions & 22 deletions src/ploomber_core/telemetry/telemetry.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,7 @@

from ploomber_core.telemetry import validate_inputs
from ploomber_core.config import Config
from ploomber_core.telemetry.system_info import (
get_env,
get_os,
is_airflow,
is_argo,
is_colab,
is_docker,
is_paperspace,
is_slurm,
python_version,
)
from ploomber_core.telemetry.system_info import get_system_info

TELEMETRY_VERSION = "0.5"
DEFAULT_HOME_DIR = str(Path.home() / ".ploomber")
Expand All @@ -69,6 +59,9 @@
logging.getLogger("posthog").disabled = True


SYSTEM_INFO = get_system_info()


class UserSettings(Config):
"""User-customizable settings"""

Expand Down Expand Up @@ -443,35 +436,38 @@ def log_api(self, action, client_time=None, total_runtime=None, metadata=None):
metadata["uid_issue"] = uid
uid = None

py_version = python_version()
docker_container = is_docker()
cloud = is_cloud_user()
email = email_registered()
colab = is_colab()
colab = SYSTEM_INFO["is_colab"]

if colab:
metadata["colab"] = colab

paperspace = is_paperspace()
paperspace = SYSTEM_INFO["is_paperspace"]

if paperspace:
metadata["paperspace"] = paperspace

slurm = is_slurm()
slurm = SYSTEM_INFO["is_slurm"]

if slurm:
metadata["slurm"] = slurm

airflow = is_airflow()
airflow = SYSTEM_INFO["is_airflow"]

if airflow:
metadata["airflow"] = airflow

argo = is_argo()
argo = SYSTEM_INFO["is_argo"]

if argo:
metadata["argo"] = argo

if "dag" in metadata:
metadata["dag"] = parse_dag(metadata["dag"])

os = get_os()
environment = get_env()
os = SYSTEM_INFO["os"]
environment = SYSTEM_INFO["env"]

if telemetry_enabled:
(event_id, uid, action, client_time, elapsed_time) = validate_entries(
Expand All @@ -483,10 +479,10 @@ def log_api(self, action, client_time=None, total_runtime=None, metadata=None):
"action": action,
"client_time": str(client_time),
"total_runtime": total_runtime,
"python_version": py_version,
"python_version": SYSTEM_INFO["python_version"],
"version": self.version,
"package_name": self.package_name,
"docker_container": docker_container,
"docker_container": SYSTEM_INFO["is_docker"],
"cloud": cloud,
"email": email,
"os": os,
Expand Down
15 changes: 15 additions & 0 deletions tests/telemetry/test_system_info.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from ploomber_core.telemetry.system_info import get_system_info


def test_get_system_info():
assert set(get_system_info()) == {
"env",
"is_airflow",
"is_argo",
"is_colab",
"is_docker",
"is_paperspace",
"is_slurm",
"os",
"python_version",
}

0 comments on commit e2047b5

Please sign in to comment.