{"bomFormat":"CycloneDX","specVersion":"1.5","version":1,"serialNumber":"urn:uuid:fb7ae8e0-6074-4e31-8a94-16e587440f1b","metadata":{"timestamp":"2026-09-17T05:45:08Z","tools":[{"vendor":"Ecosystems","name":"Ecosystems SBOM Generator"}],"component":{"type":"application","name":"EuroPython/programapi-legacy"}},"components":[{"type":"library","name":"pdbpp","version":"*","purl":"pkg:pypi/pdbpp","properties":[{"name":"filePath","value":"requirements.in"}]},{"type":"library","name":"black","version":"*","purl":"pkg:pypi/black","properties":[{"name":"filePath","value":"requirements.in"}]},{"type":"library","name":"isort","version":"*","purl":"pkg:pypi/isort","properties":[{"name":"filePath","value":"requirements.in"}]},{"type":"library","name":"pytest","version":"*","purl":"pkg:pypi/pytest","properties":[{"name":"filePath","value":"requirements.in"}]},{"type":"library","name":"requests","version":"*","purl":"pkg:pypi/requests","properties":[{"name":"filePath","value":"requirements.in"}]},{"type":"library","name":"pydantic","version":"*","purl":"pkg:pypi/pydantic","properties":[{"name":"filePath","value":"requirements.in"}]},{"type":"library","name":"python-slugify","version":"*","purl":"pkg:pypi/python-slugify","properties":[{"name":"filePath","value":"requirements.in"}]},{"type":"library","name":"attrs","version":"==21.4.0","purl":"pkg:pypi/attrs","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"black","version":"==22.3.0","purl":"pkg:pypi/black","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"certifi","version":"==2021.10.8","purl":"pkg:pypi/certifi","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"charset-normalizer","version":"==2.0.12","purl":"pkg:pypi/charset-normalizer","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"click","version":"==8.1.3","purl":"pkg:pypi/click","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"fancycompleter","version":"==0.9.1","purl":"pkg:pypi/fancycompleter","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"idna","version":"==3.3","purl":"pkg:pypi/idna","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"iniconfig","version":"==1.1.1","purl":"pkg:pypi/iniconfig","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"isort","version":"==5.10.1","purl":"pkg:pypi/isort","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"mypy-extensions","version":"==0.4.3","purl":"pkg:pypi/mypy-extensions","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"packaging","version":"==21.3","purl":"pkg:pypi/packaging","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pathspec","version":"==0.9.0","purl":"pkg:pypi/pathspec","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pdbpp","version":"==0.10.3","purl":"pkg:pypi/pdbpp","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"platformdirs","version":"==2.5.2","purl":"pkg:pypi/platformdirs","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pluggy","version":"==1.0.0","purl":"pkg:pypi/pluggy","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"py","version":"==1.11.0","purl":"pkg:pypi/py","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pydantic","version":"==1.9.0","purl":"pkg:pypi/pydantic","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pygments","version":"==2.12.0","purl":"pkg:pypi/pygments","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pyparsing","version":"==3.0.9","purl":"pkg:pypi/pyparsing","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pyrepl","version":"==0.9.0","purl":"pkg:pypi/pyrepl","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"pytest","version":"==7.1.2","purl":"pkg:pypi/pytest","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"python-slugify","version":"==6.1.2","purl":"pkg:pypi/python-slugify","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"requests","version":"==2.27.1","purl":"pkg:pypi/requests","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"text-unidecode","version":"==1.3","purl":"pkg:pypi/text-unidecode","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"tomli","version":"==2.0.1","purl":"pkg:pypi/tomli","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"typing-extensions","version":"==4.2.0","purl":"pkg:pypi/typing-extensions","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"urllib3","version":"==1.26.9","purl":"pkg:pypi/urllib3","properties":[{"name":"filePath","value":"requirements.txt"}]},{"type":"library","name":"wmctrl","version":"==0.4","purl":"pkg:pypi/wmctrl","properties":[{"name":"filePath","value":"requirements.txt"}]}]}