
* use pathlib as much as possible
* fixstuff
* break locally to unbreak in CI 🤷
* add type on env
* debug attempt 1
* debugged
* oops, there is the actual fix
* fix 3.9 compat
75 lines
1.9 KiB
Python
75 lines
1.9 KiB
Python
"""Utility functions for the benchmarks."""
|
|
|
|
import os
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
import httpx
|
|
from httpx import HTTPError
|
|
|
|
|
|
def get_python_version(venv_path: Path, os_name):
|
|
"""Get the python version of python in a virtual env.
|
|
|
|
Args:
|
|
venv_path: Path to virtual environment.
|
|
os_name: Name of os.
|
|
|
|
Returns:
|
|
The python version.
|
|
"""
|
|
python_executable = (
|
|
venv_path / "bin" / "python"
|
|
if "windows" not in os_name
|
|
else venv_path / "Scripts" / "python.exe"
|
|
)
|
|
try:
|
|
output = subprocess.check_output(
|
|
[str(python_executable), "--version"], stderr=subprocess.STDOUT
|
|
)
|
|
python_version = output.decode("utf-8").strip().split()[1]
|
|
return ".".join(python_version.split(".")[:-1])
|
|
except subprocess.CalledProcessError:
|
|
return None
|
|
|
|
|
|
def get_directory_size(directory: Path):
|
|
"""Get the size of a directory in bytes.
|
|
|
|
Args:
|
|
directory: The directory to check.
|
|
|
|
Returns:
|
|
The size of the dir in bytes.
|
|
"""
|
|
total_size = 0
|
|
for dirpath, _, filenames in os.walk(directory):
|
|
for f in filenames:
|
|
fp = Path(dirpath) / f
|
|
total_size += fp.stat().st_size
|
|
return total_size
|
|
|
|
|
|
def send_data_to_posthog(event, properties):
|
|
"""Send data to PostHog.
|
|
|
|
Args:
|
|
event: The event to send.
|
|
properties: The properties to send.
|
|
|
|
Raises:
|
|
HTTPError: When there is an error sending data to PostHog.
|
|
"""
|
|
event_data = {
|
|
"api_key": "phc_JoMo0fOyi0GQAooY3UyO9k0hebGkMyFJrrCw1Gt5SGb",
|
|
"event": event,
|
|
"properties": properties,
|
|
}
|
|
|
|
with httpx.Client() as client:
|
|
response = client.post("https://app.posthog.com/capture/", json=event_data)
|
|
if response.status_code != 200:
|
|
raise HTTPError(
|
|
f"Error sending data to PostHog: {response.status_code} - {response.text}"
|
|
)
|