Databricks SDK voor Python
Notitie
Databricks raadt Databricks Asset Bundles aan voor het maken, ontwikkelen, implementeren en testen van taken en andere Databricks-resources als broncode. Bekijk wat zijn Databricks Asset Bundles?.
In dit artikel leert u hoe u Azure Databricks-bewerkingen automatiseert en de ontwikkeling versnelt met de Databricks SDK voor Python. Dit artikel is een aanvulling op de Databricks SDK voor Python-documentatie over De Docs en de codevoorbeelden in de Databricks SDK voor Python-opslagplaats in GitHub.
Notitie
De Databricks SDK voor Python is bèta en mag niet worden gebruikt in productie.
Tijdens de bètaperiode raadt Databricks u aan een afhankelijkheid vast te maken van de specifieke secundaire versie van de Databricks SDK voor Python waarvan uw code afhankelijk is. U kunt bijvoorbeeld afhankelijkheden vastmaken in bestanden zoals requirements.txt
voor venv
, of pyproject.toml
voor poetry.lock
Poëzie. Zie Virtual Environments and Packages for , or Installing dependencies for Poetry (Afhankelijkheden voor poëzie installeren) voor venv
meer informatie over het vastmaken van afhankelijkheden.
Voordat u begint
U kunt de Databricks SDK voor Python gebruiken vanuit een Azure Databricks-notebook of vanaf uw lokale ontwikkelcomputer.
- Als u de Databricks SDK voor Python wilt gebruiken vanuit een Azure Databricks-notebook, gaat u verder met de Databricks SDK voor Python vanuit een Azure Databricks-notebook.
- Als u de Databricks SDK voor Python wilt gebruiken vanaf uw lokale ontwikkelcomputer, voert u de stappen in deze sectie uit.
Voordat u begint met het gebruik van de Databricks SDK voor Python, moet uw ontwikkelcomputer over het volgende beschikken:
- Azure Databricks-verificatie geconfigureerd.
- Python 3.8 of hoger geïnstalleerd. Voor het automatiseren van Azure Databricks-rekenresources raadt Databricks aan dat u de primaire en secundaire versies van Python hebt geïnstalleerd die overeenkomen met de versie die is geïnstalleerd op uw Azure Databricks-rekenresource. De voorbeelden van dit artikel zijn afhankelijk van het automatiseren van clusters met Databricks Runtime 13.3 LTS, waarop Python 3.10 is geïnstalleerd. Zie de releaseversies van Databricks Runtime en compatibiliteit voor de Databricks Runtime-versie van uw cluster voor de juiste versie.
- Databricks raadt u aan een virtuele Python-omgeving te maken en te activeren voor elk Python-project dat u gebruikt met de Databricks SDK voor Python. Virtuele Python-omgevingen helpen ervoor te zorgen dat uw codeproject compatibele versies van Python- en Python-pakketten gebruikt (in dit geval de Databricks SDK voor Python-pakket). Zie venv of Poëzie voor meer informatie over virtuele Python-omgevingen.
Aan de slag met de Databricks SDK voor Python
In deze sectie wordt beschreven hoe u aan de slag gaat met de Databricks SDK voor Python vanaf uw lokale ontwikkelcomputer. Als u de Databricks SDK voor Python wilt gebruiken vanuit een Azure Databricks-notebook, gaat u verder met de Databricks SDK voor Python vanuit een Azure Databricks-notebook.
Installeer op uw ontwikkelcomputer waarvoor Azure Databricks-verificatie is geconfigureerd, Python al is geïnstalleerd en uw virtuele Python-omgeving al is geactiveerd het databricks-sdk-pakket (en de bijbehorende afhankelijkheden) van de Python Package Index (PyPI), als volgt:
Venv
Gebruik
pip
dit om hetdatabricks-sdk
pakket te installeren. (Op sommige systemen moet u mogelijk hier en overal vervangen doorpip3
pip
.)pip3 install databricks-sdk
Poëzie
poetry add databricks-sdk
Zie de releasegeschiedenis van het pakket om een specifieke versie van het
databricks-sdk
pakket te installeren terwijl de Databricks SDK voor Python zich in de bètaversie bevindt. Als u bijvoorbeeld versie0.1.6
wilt installeren:Venv
pip3 install databricks-sdk==0.1.6
Poëzie
poetry add databricks-sdk==0.1.6
Als u een bestaande installatie van het Databricks SDK-pakket voor Python wilt upgraden naar de nieuwste versie, voert u de volgende opdracht uit:
Venv
pip3 install --upgrade databricks-sdk
Poëzie
poetry add databricks-sdk@latest
Voer de volgende opdracht uit om de Databricks SDK voor de huidige
Version
en andere details van het Python-pakket weer te geven:Venv
pip3 show databricks-sdk
Poëzie
poetry show databricks-sdk
Maak in uw virtuele Python-omgeving een Python-codebestand waarmee de Databricks SDK voor Python wordt geïmporteerd. In het volgende voorbeeld, in een bestand met de naam
main.py
met de volgende inhoud, worden alle clusters in uw Azure Databricks-werkruimte weergegeven:from databricks.sdk import WorkspaceClient w = WorkspaceClient() for c in w.clusters.list(): print(c.cluster_name)
Voer uw Python-codebestand uit, ervan uitgaande van een bestand met de naam
main.py
, door de opdracht uit tepython
voeren:Venv
python3.10 main.py
Poëzie
Als u zich in de shell van de virtuele omgeving bevindt:
python3.10 main.py
Als u zich niet in de shell van de virtuele omgeving bevindt:
poetry run python3.10 main.py
Notitie
Door geen argumenten in de voorgaande aanroep in te
w = WorkspaceClient()
stellen, gebruikt de Databricks SDK voor Python het standaardproces voor het uitvoeren van Azure Databricks-verificatie. Als u dit standaardgedrag wilt overschrijven, raadpleegt u de volgende verificatiesectie .
De Databricks SDK voor Python verifiëren met uw Azure Databricks-account of -werkruimte
In deze sectie wordt beschreven hoe u de Databricks SDK voor Python kunt verifiëren vanaf uw lokale ontwikkelcomputer naar uw Azure Databricks-account of -werkruimte. Als u de Databricks SDK voor Python wilt verifiëren vanuit een Azure Databricks-notebook, gaat u verder met de Databricks SDK voor Python vanuit een Azure Databricks-notebook.
De Databricks SDK voor Python implementeert de geïntegreerde verificatiestandaard van de Databricks-client, een geconsolideerde en consistente architectuur en programmatische benadering van verificatie. Deze aanpak helpt bij het instellen en automatiseren van verificatie met Azure Databricks gecentraliseerder en voorspelbaarder. Hiermee kunt u Databricks-verificatie eenmaal configureren en deze configuratie vervolgens gebruiken voor meerdere Databricks-hulpprogramma's en SDK's zonder verdere verificatieconfiguratiewijzigingen. Zie voor meer informatie, waaronder meer volledige codevoorbeelden in Python, geïntegreerde verificatie voor Databricks-clients.
Notitie
De Databricks SDK voor Python heeft nog geen verificatie van door Azure beheerde identiteiten geïmplementeerd.
Enkele van de beschikbare coderingspatronen voor het initialiseren van Databricks-verificatie met de Databricks SDK voor Python zijn:
Gebruik databricks-standaardverificatie door een van de volgende handelingen uit te voeren:
- Maak of identificeer een aangepast Databricks-configuratieprofiel met de vereiste velden voor het doelverificatietype Databricks. Stel vervolgens de
DATABRICKS_CONFIG_PROFILE
omgevingsvariabele in op de naam van het aangepaste configuratieprofiel. - Stel de vereiste omgevingsvariabelen in voor het doelverificatietype Databricks.
Maak vervolgens als volgt een instantie van een
WorkspaceClient
object met databricks-standaardverificatie:from databricks.sdk import WorkspaceClient w = WorkspaceClient() # ...
- Maak of identificeer een aangepast Databricks-configuratieprofiel met de vereiste velden voor het doelverificatietype Databricks. Stel vervolgens de
Het hard coderen van de vereiste velden wordt ondersteund, maar wordt niet aanbevolen, omdat het risico loopt dat gevoelige informatie in uw code wordt weergegeven, zoals persoonlijke toegangstokens van Azure Databricks. In het volgende voorbeeld worden azure Databricks-host- en toegangstokenwaarden vastgelegd voor databricks-tokenverificatie:
from databricks.sdk import WorkspaceClient w = WorkspaceClient( host = 'https://...', token = '...' ) # ...
Zie ook verificatie in de Databricks SDK voor Python-documentatie.
De Databricks SDK voor Python gebruiken vanuit een Azure Databricks-notebook
U kunt de Databricks SDK voor Python-functionaliteit aanroepen vanuit een Azure Databricks-notebook met een gekoppeld Azure Databricks-cluster waarop de Databricks SDK voor Python is geïnstalleerd. Deze wordt standaard geïnstalleerd op alle Azure Databricks-clusters die gebruikmaken van Databricks Runtime 13.3 LTS of hoger. Voor Azure Databricks-clusters die Databricks Runtime 12.2 LTS en hieronder gebruiken, moet u eerst de Databricks SDK voor Python installeren. Zie stap 1: De Databricks SDK voor Python installeren of upgraden.
Als u de Databricks SDK voor Python-versie wilt zien die is geïnstalleerd voor een specifieke Databricks Runtime-versie, raadpleegt u de sectie Geïnstalleerde Python-bibliotheken van de releaseopmerkingen van Databricks Runtime voor die versie.
Databricks raadt u aan om de nieuwste beschikbare versie van de SDK van PiPy te installeren, maar minimaal te installeren of upgraden naar Databricks SDK voor Python 0.6.0 of hoger, omdat standaardverificatie van Azure Databricks-notebooks wordt gebruikt door versie 0.6.0 en hoger op alle Databricks Runtime-versies.
Notitie
Databricks Runtime 15.1 is de eerste Databricks Runtime waarop een versie van de Databricks SDK voor Python (0.20.0) is geïnstalleerd die ondersteuning biedt voor standaardnotitieblokverificatie zonder upgrade vereist.
De volgende tabel bevat een overzicht van ondersteuning voor notebookverificatie voor Databricks SDK voor Python- en Databricks Runtime-versies:
SDK/DBR | 10.4 LTS | 11.3 LTS | 12.3 LTS | 13.3 LTS | 14.3 LTS | 15.1 en hoger |
---|---|---|---|---|---|---|
0.1.7 en lager | ||||||
0.1.10 | ✓ | ✓ | ✓ | ✓ | ✓ | |
0.6.0 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
0.20.0 en hoger | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Standaardverificatie van Azure Databricks-notebooks is afhankelijk van een tijdelijk persoonlijk Azure Databricks-toegangstoken dat azure Databricks automatisch op de achtergrond genereert voor eigen gebruik. Azure Databricks verwijdert dit tijdelijke token nadat het notebook niet meer actief is.
Belangrijk
- Standaardverificatie van Azure Databricks-notebooks werkt alleen op het stuurprogrammaknooppunt van het cluster en niet op een van de werk- of uitvoerknooppunten van het cluster.
- Verificatie van Azure Databricks-notebook werkt niet met Azure Databricks-configuratieprofielen.
Als u API's op accountniveau van Azure Databricks wilt aanroepen of als u een ander Databricks-verificatietype wilt gebruiken dan standaardverificatie voor Databricks-notebooks, worden de volgende verificatietypen ook ondersteund:
Authentication type | Databricks SDK voor Python-versies |
---|---|
OAuth-verificatie van machine-naar-machine (M2M) | 0.18.0 en hoger |
OAuth-verificatie van gebruiker naar machine (U2M) | 0.19.0 en hoger |
Verificatie van Microsoft Entra-ID Service-principal | Alle versies |
Azure CLI-verificatie | Alle versies |
Verificatie van persoonlijke toegangstokens van Databricks | Alle versies |
Verificatie van door Azure beheerde identiteiten wordt nog niet ondersteund.
Stap 1: De Databricks SDK voor Python installeren of upgraden
Azure Databricks Python-notebooks kunnen de Databricks SDK voor Python gebruiken, net als elke andere Python-bibliotheek. Als u de Databricks SDK voor Python-bibliotheek wilt installeren of upgraden op het gekoppelde Azure Databricks-cluster, voert u de
%pip
magic-opdracht uit vanuit een notebookcel als volgt:%pip install databricks-sdk --upgrade
Nadat u de
%pip
magic-opdracht hebt uitgevoerd, moet u Python opnieuw starten om de geïnstalleerde of bijgewerkte bibliotheek beschikbaar te maken voor het notebook. Voer hiervoor de volgende opdracht uit vanuit een notebookcel direct na de cel met de%pip
magic-opdracht:dbutils.library.restartPython()
Als u de geïnstalleerde versie van de Databricks SDK voor Python wilt weergeven, voert u de volgende opdracht uit vanuit een notebookcel:
%pip show databricks-sdk | grep -oP '(?<=Version: )\S+'
Stap 2: Uw code uitvoeren
Maak in uw notebookcellen Python-code die de Databricks SDK voor Python importeert en vervolgens aanroept. In het volgende voorbeeld wordt standaardverificatie van Azure Databricks-notebook gebruikt om alle clusters in uw Azure Databricks-werkruimte weer te geven:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
for c in w.clusters.list():
print(c.cluster_name)
Wanneer u deze cel uitvoert, wordt er een lijst weergegeven met de namen van alle beschikbare clusters in uw Azure Databricks-werkruimte.
Als u een ander verificatietype voor Azure Databricks wilt gebruiken, raadpleegt u De verificatiemethoden van Azure Databricks en klikt u op de bijbehorende koppeling voor aanvullende technische details.
Databricks Utilities gebruiken
U kunt databricks Utilities (dbutils) aanroepen vanuit de Databricks SDK voor Python-code die wordt uitgevoerd op uw lokale ontwikkelcomputer of vanuit een Azure Databricks-notebook.
- Vanaf uw lokale ontwikkelcomputer heeft Databricks Utilities alleen toegang tot de
dbutils.fs
,dbutils.secrets
endbutils.widgets
dbutils.jobs
opdrachtgroepen. - Vanuit een Azure Databricks-notebook dat is gekoppeld aan een Azure Databricks-cluster, heeft Databricks Utilities toegang tot alle beschikbare Databricks Utilities-opdrachtgroepen, niet alleen
dbutils.fs
,dbutils.secrets
endbutils.widgets
. Daarnaast is dedbutils.notebook
opdrachtgroep beperkt tot slechts twee niveaus van opdrachten, bijvoorbeelddbutils.notebook.run
ofdbutils.notebook.exit
.
Als u Databricks Utilities wilt aanroepen vanaf uw lokale ontwikkelcomputer of een Azure Databricks-notebook, gebruikt u dbutils
binnen WorkspaceClient
. In dit codevoorbeeld wordt standaardverificatie van Azure Databricks-notebook gebruikt om de paden van alle objecten in de DBFS-hoofdmap van de werkruimte weer te dbutils
WorkspaceClient
geven.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
d = w.dbutils.fs.ls('/')
for f in d:
print(f.path)
U kunt ook rechtstreeks bellen dbutils
. U bent echter beperkt tot het gebruik van standaardverificatie van Azure Databricks-notebooks. Dit codevoorbeeld roept dbutils
rechtstreeks aan om alle objecten in de DBFS-hoofdmap van de werkruimte weer te geven.
from databricks.sdk.runtime import *
d = dbutils.fs.ls('/')
for f in d:
print(f.path)
Als u toegang wilt krijgen tot Unity Catalog-volumes, gebruikt u files
binnen WorkspaceClient
. Zie Bestanden beheren in Unity Catalog-volumes. U kunt deze niet dbutils
zelf of binnen WorkspaceClient
gebruiken om toegang te krijgen tot volumes.
Zie ook Interactie met dbutils.
Codevoorbeelden
In de volgende codevoorbeelden ziet u hoe u de Databricks SDK voor Python gebruikt om clusters te maken en te verwijderen, taken uit te voeren en groepen op accountniveau weer te geven. In deze codevoorbeelden wordt standaardverificatie voor Azure Databricks-notebooks gebruikt. Zie De Databricks SDK voor Python gebruiken vanuit een Azure Databricks-notebook voor meer informatie over de standaardverificatie van Azure Databricks-notebooks. Zie De Databricks SDK voor Python verifiëren met uw Azure Databricks-account of -werkruimte voor meer informatie over standaardverificatie buiten notebooks.
Zie de voorbeelden in de Databricks SDK voor Python-opslagplaats in GitHub voor aanvullende codevoorbeelden . Zie ook:
Een cluster maken
In dit codevoorbeeld wordt een cluster gemaakt met de opgegeven Databricks Runtime-versie en het type clusterknooppunt. Dit cluster heeft één werkrol en het cluster wordt na 15 minuten niet-actieve tijd automatisch beëindigd.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
print("Attempting to create cluster. Please wait...")
c = w.clusters.create_and_wait(
cluster_name = 'my-cluster',
spark_version = '12.2.x-scala2.12',
node_type_id = 'Standard_DS3_v2',
autotermination_minutes = 15,
num_workers = 1
)
print(f"The cluster is now ready at " \
f"{w.config.host}#setting/clusters/{c.cluster_id}/configuration\n")
Een cluster definitief verwijderen
In dit codevoorbeeld wordt het cluster definitief verwijderd met de opgegeven cluster-id uit de werkruimte.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
c_id = input('ID of cluster to delete (for example, 1234-567890-ab123cd4): ')
w.clusters.permanent_delete(cluster_id = c_id)
Een taak maken
In dit codevoorbeeld wordt een Azure Databricks-taak gemaakt waarmee het opgegeven notebook op het opgegeven cluster wordt uitgevoerd. Wanneer de code wordt uitgevoerd, worden het pad van het bestaande notebook, de bestaande cluster-id en de gerelateerde taakinstellingen van de gebruiker in de terminal opgehaald.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.jobs import Task, NotebookTask, Source
w = WorkspaceClient()
job_name = input("Some short name for the job (for example, my-job): ")
description = input("Some short description for the job (for example, My job): ")
existing_cluster_id = input("ID of the existing cluster in the workspace to run the job on (for example, 1234-567890-ab123cd4): ")
notebook_path = input("Workspace path of the notebook to run (for example, /Users/someone@example.com/my-notebook): ")
task_key = input("Some key to apply to the job's tasks (for example, my-key): ")
print("Attempting to create the job. Please wait...\n")
j = w.jobs.create(
name = job_name,
tasks = [
Task(
description = description,
existing_cluster_id = existing_cluster_id,
notebook_task = NotebookTask(
base_parameters = dict(""),
notebook_path = notebook_path,
source = Source("WORKSPACE")
),
task_key = task_key
)
]
)
print(f"View the job at {w.config.host}/#job/{j.job_id}\n")
Een taak maken die gebruikmaakt van serverloze compute
In het volgende voorbeeld wordt een taak gemaakt die gebruikmaakt van serverloze compute voor taken:
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.jobs import NotebookTask, Source, Task
w = WorkspaceClient()
j = w.jobs.create(
name = "My Serverless Job",
tasks = [
Task(
notebook_task = NotebookTask(
notebook_path = "/Users/user@databricks.com/MyNotebook",
source = Source("WORKSPACE")
),
task_key = "MyTask",
)
]
)
Bestanden beheren in Unity Catalog-volumes
In dit codevoorbeeld ziet u verschillende aanroepen naar files
functionaliteit binnen WorkspaceClient
om toegang te krijgen tot een Unity Catalog-volume.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
# Define volume, folder, and file details.
catalog = 'main'
schema = 'default'
volume = 'my-volume'
volume_path = f"/Volumes/{catalog}/{schema}/{volume}" # /Volumes/main/default/my-volume
volume_folder = 'my-folder'
volume_folder_path = f"{volume_path}/{volume_folder}" # /Volumes/main/default/my-volume/my-folder
volume_file = 'data.csv'
volume_file_path = f"{volume_folder_path}/{volume_file}" # /Volumes/main/default/my-volume/my-folder/data.csv
upload_file_path = './data.csv'
# Create an empty folder in a volume.
w.files.create_directory(volume_folder_path)
# Upload a file to a volume.
with open(upload_file_path, 'rb') as file:
file_bytes = file.read()
binary_data = io.BytesIO(file_bytes)
w.files.upload(volume_file_path, binary_data, overwrite = True)
# List the contents of a volume.
for item in w.files.list_directory_contents(volume_path):
print(item.path)
# List the contents of a folder in a volume.
for item in w.files.list_directory_contents(volume_folder_path):
print(item.path)
# Print the contents of a file in a volume.
resp = w.files.download(volume_file_path)
print(str(resp.contents.read(), encoding='utf-8'))
# Delete a file from a volume.
w.files.delete(volume_file_path)
# Delete a folder from a volume.
w.files.delete_directory(volume_folder_path)
Groepen op accountniveau weergeven
In dit codevoorbeeld worden de weergavenamen voor alle beschikbare groepen in het Azure Databricks-account weergegeven.
from databricks.sdk import AccountClient
a = AccountClient()
for g in a.groups.list():
print(g.display_name)
Testen
Als u uw code wilt testen, gebruikt u Python-testframeworks zoals pytest. Als u uw code wilt testen onder gesimuleerde omstandigheden zonder Azure Databricks REST API-eindpunten aan te roepen of de status van uw Azure Databricks-accounts of -werkruimten te wijzigen, gebruikt u Python-mockbibliotheken zoals unittest.mock.
Tip
Databricks Labs biedt een pytest-invoegtoepassing om integratietests met Databricks en een pylint-invoegtoepassing te vereenvoudigen om codekwaliteit te garanderen.
Het volgende voorbeeldbestand met de naam helpers.py
bevat een create_cluster
functie die informatie retourneert over het nieuwe cluster:
# helpers.py
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.compute import ClusterDetails
def create_cluster(
w: WorkspaceClient,
cluster_name: str,
spark_version: str,
node_type_id: str,
autotermination_minutes: int,
num_workers: int
) -> ClusterDetails:
response = w.clusters.create(
cluster_name = cluster_name,
spark_version = spark_version,
node_type_id = node_type_id,
autotermination_minutes = autotermination_minutes,
num_workers = num_workers
)
return response
Op basis van het volgende bestand met de naam main.py
waarmee de create_cluster
functie wordt aangeroepen:
# main.py
from databricks.sdk import WorkspaceClient
from helpers import *
w = WorkspaceClient()
# Replace <spark-version> with the target Spark version string.
# Replace <node-type-id> with the target node type string.
response = create_cluster(
w = w,
cluster_name = 'Test Cluster',
spark_version = '<spark-version>',
node_type_id = '<node-type-id>',
autotermination_minutes = 15,
num_workers = 1
)
print(response.cluster_id)
Het volgende bestand met de naam test_helpers.py
test of de create_cluster
functie het verwachte antwoord retourneert. In plaats van een cluster te maken in de doelwerkruimte, wordt met deze test een WorkspaceClient
object gesimuleerd, worden de instellingen van het gesimuleerde object gedefinieerd en wordt het gesimuleerde object vervolgens doorgegeven aan de create_cluster
functie. De test controleert vervolgens of de functie de verwachte id van het nieuwe gesimuleerde cluster retourneert.
# test_helpers.py
from databricks.sdk import WorkspaceClient
from helpers import *
from unittest.mock import create_autospec # Included with the Python standard library.
def test_create_cluster():
# Create a mock WorkspaceClient.
mock_workspace_client = create_autospec(WorkspaceClient)
# Set the mock WorkspaceClient's clusters.create().cluster_id value.
mock_workspace_client.clusters.create.return_value.cluster_id = '123abc'
# Call the actual function but with the mock WorkspaceClient.
# Replace <spark-version> with the target Spark version string.
# Replace <node-type-id> with the target node type string.
response = create_cluster(
w = mock_workspace_client,
cluster_name = 'Test Cluster',
spark_version = '<spark-version>',
node_type_id = '<node-type-id>',
autotermination_minutes = 15,
num_workers = 1
)
# Assert that the function returned the mocked cluster ID.
assert response.cluster_id == '123abc'
Als u deze test wilt uitvoeren, voert u de pytest
opdracht uit vanuit de hoofdmap van het codeproject, wat testresultaten moet opleveren die vergelijkbaar zijn met de volgende:
$ pytest
=================== test session starts ====================
platform darwin -- Python 3.12.2, pytest-8.1.1, pluggy-1.4.0
rootdir: <project-rootdir>
collected 1 item
test_helpers.py . [100%]
======================== 1 passed ==========================
Aanvullende bronnen
Zie voor meer informatie: