{"bomFormat":"CycloneDX","specVersion":"1.5","version":1,"serialNumber":"urn:uuid:e36c9e6b-7ce3-4c49-9bf1-de0ad41e69ec","metadata":{"timestamp":"2026-06-02T14:47:35Z","tools":[{"vendor":"Ecosystems","name":"Ecosystems SBOM Generator"}],"component":{"type":"application","name":"fluentpython/example-code-2e"}},"components":[{"type":"library","name":"geolib","version":"==1.0.7","purl":"pkg:pypi/geolib","properties":[{"name":"filePath","value":"08-def-type-hints/coordinates/requirements.txt"}]},{"type":"library","name":"future","version":"==0.18.2","purl":"pkg:pypi/future","properties":[{"name":"filePath","value":"08-def-type-hints/coordinates/requirements.txt"}]},{"type":"library","name":"mypy","version":"==0.910","purl":"pkg:pypi/mypy","properties":[{"name":"filePath","value":"10-dp-1class-func/requirements.txt"}]},{"type":"library","name":"pytest","version":"==6.2.4","purl":"pkg:pypi/pytest","properties":[{"name":"filePath","value":"10-dp-1class-func/requirements.txt"}]},{"type":"library","name":"anyio","version":"==3.3.2","purl":"pkg:pypi/anyio","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"certifi","version":"==2021.5.30","purl":"pkg:pypi/certifi","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"charset-normalizer","version":"==2.0.6","purl":"pkg:pypi/charset-normalizer","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"h11","version":"==0.12.0","purl":"pkg:pypi/h11","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"httpcore","version":"==0.13.7","purl":"pkg:pypi/httpcore","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"httpx","version":"==1.0.0b0","purl":"pkg:pypi/httpx","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"idna","version":"==3.2","purl":"pkg:pypi/idna","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"rfc3986","version":"==1.5.0","purl":"pkg:pypi/rfc3986","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"sniffio","version":"==1.2.0","purl":"pkg:pypi/sniffio","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"tqdm","version":"==4.62.3","purl":"pkg:pypi/tqdm","properties":[{"name":"filePath","value":"20-executors/getflags/requirements.txt"}]},{"type":"library","name":"curio","version":"==1.5","purl":"pkg:pypi/curio","properties":[{"name":"filePath","value":"21-async/domains/curio/requirements.txt"}]},{"type":"library","name":"click","version":"==7.1.2","purl":"pkg:pypi/click","properties":[{"name":"filePath","value":"21-async/mojifinder/requirements.txt"}]},{"type":"library","name":"fastapi","version":"==0.65.2","purl":"pkg:pypi/fastapi","properties":[{"name":"filePath","value":"21-async/mojifinder/requirements.txt"}]},{"type":"library","name":"h11","version":"==0.12.0","purl":"pkg:pypi/h11","properties":[{"name":"filePath","value":"21-async/mojifinder/requirements.txt"}]},{"type":"library","name":"pydantic","version":"==1.8.2","purl":"pkg:pypi/pydantic","properties":[{"name":"filePath","value":"21-async/mojifinder/requirements.txt"}]},{"type":"library","name":"starlette","version":"==0.13.6","purl":"pkg:pypi/starlette","properties":[{"name":"filePath","value":"21-async/mojifinder/requirements.txt"}]},{"type":"library","name":"typing-extensions","version":"==3.7.4.3","purl":"pkg:pypi/typing-extensions","properties":[{"name":"filePath","value":"21-async/mojifinder/requirements.txt"}]},{"type":"library","name":"uvicorn","version":"==0.13.4","purl":"pkg:pypi/uvicorn","properties":[{"name":"filePath","value":"21-async/mojifinder/requirements.txt"}]}]}