{"spdxVersion":"SPDX-2.3","dataLicense":"CC0-1.0","SPDXID":"SPDXRef-DOCUMENT","name":"com.github.fluentpython/example-code-2e","documentNamespace":"https://spdx.org/spdxdocs/protobom/36f09bb7-b3b8-4b82-8f45-2984b4d107a9","creationInfo":{"creators":["Tool: protobom-v0.0.0-20251216165153-1f3f3060931e+dirty","Tool: GitHub.com-Dependency-Graph"],"created":"2025-12-22T02:41:42Z"},"packages":[{"name":"future","SPDXID":"SPDXRef-pypi-future-0.18.3-75c946","versionInfo":"0.18.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 1999-2002 by Fredrik Lundh, Copyright (c) 1999-2002 by Secret Labs AB., Copyright (c) 2000 Bastian Kleineidam, Copyright (c) 2000 Luke Kenneth Casson Leighton \u003clkcl@samba.org\u003e, Copyright (c) 2001-2006 Python Software Foundation, Copyright (c) 2001-2007 Python Software Foundation, Copyright (c) 2001-2010 Python Software Foundation, Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Python Software Foundation, Copyright (c) 2002-2006 Python Software Foundation, Copyright (c) 2002-2007 Python Software Foundation, Copyright (c) 2004-2006 Python Software Foundation, Copyright (c) 2010 by Armin Ronacher, Copyright (c) 2013 - Damian Avila, Copyright (c) 2013-2019 Python Charmers Pty Ltd, Australia, Copyright 2000 by Timothy O'Malley \u003ctimo@alum.mit.edu\u003e, Copyright 2006 Google, Inc., Copyright 2008 by Armin Ronacher, Copyright 2011 by Armin Ronacher. :license Flask Design, Copyright 2013 by the Jinja team, Copyright 2013-2019 Python Charmers Pty Ltd, Copyright 2013-2019 Python Charmers Pty Ltd, Australia, copyright u'2013-2019, Python Charmers Pty Ltd, Australia","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/future@0.18.3"}]},{"name":"geolib","SPDXID":"SPDXRef-pypi-geolib-1.0.7-75c946","versionInfo":"1.0.7","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/geolib@1.0.7"}]},{"name":"mypy","SPDXID":"SPDXRef-pypi-mypy-0.910-75c946","versionInfo":"0.910","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"(c) E Argument, (c) E Cannot, (c) E Incompatible, (c) E Name, (c) E Statement, (c) E Too, (c) N Revealed, Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands, Copyright (c) 1995-2001 Corporation for National Research Initiatives, Copyright (c) 1999-2001 Gregory P. Ward, Copyright (c) 1999-2001 Gregory P. Ward., Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Python Software Foundation, Copyright (c) 2002, 2003 Python Software Foundation, Copyright (c) 2002, 2003 Python Software Foundation., Copyright (c) 2003 Python Software Foundation, Copyright (c) 2015 Jukka Lehtosalo and contributors, Copyright (c) 2015-2021 Jukka Lehtosalo and contributors, Copyright 2003 Google Inc., Copyright 2005, Google Inc., Copyright 2006, Google Inc., Copyright 2007, Google Inc., Copyright 2008 Google Inc., Copyright 2008, Google Inc., Copyright 2009 Google Inc., Copyright 2015, Google Inc., copyright 2020, mypyc team, copyright u'2016, Jukka Lehtosalo, David Goodger \u003cdgoodger@bigfoot.com\u003e 2000-08-19","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/mypy@0.910"}]},{"name":"pytest","SPDXID":"SPDXRef-pypi-pytest-6.2.4-75c946","versionInfo":"6.2.4","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2004-2020 Holger Krekel and others, Copyright (c) 2014, Gregory Boissinot, copyright 2015-2020, holger krekel and pytest-dev team, Copyright Holger Krekel and others, 2004-2020","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pytest@6.2.4"}]},{"name":"httpcore","SPDXID":"SPDXRef-pypi-httpcore-0.13.7-75c946","versionInfo":"0.13.7","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/httpcore@0.13.7"}]},{"name":"anyio","SPDXID":"SPDXRef-pypi-anyio-3.3.2-75c946","versionInfo":"3.3.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Alex Gronholm copyright 2018, Copyright (c) 2018 Alex Gronholm","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/anyio@3.3.2"}]},{"name":"idna","SPDXID":"SPDXRef-pypi-idna-3.7-75c946","versionInfo":"3.7","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause AND BSD-3-Clause","copyrightText":"(c) 2019 Unicode(r), Inc., Copyright (c) 2013-2024, Kim Davies and contributors","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/idna@3.7"}]},{"name":"rfc3986","SPDXID":"SPDXRef-pypi-rfc3986-1.5.0-75c946","versionInfo":"1.5.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"Copyright (c) 2014 Rackspace, copyright (c) 2014 Rackspace :license Apache, Copyright (c) 2015 Ian Stapleton Cordasco, Copyright (c) 2017 Ian Stapleton Cordasco, Copyright 2014 Ian Cordasco, Rackspace, Copyright 2014 Rackspace 2016 Ian Stapleton Cordasco, copyright u'2017, Ian Stapleton Cordasco","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/rfc3986@1.5.0"}]},{"name":"sniffio","SPDXID":"SPDXRef-pypi-sniffio-1.2.0-75c946","versionInfo":"1.2.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"(Apache-2.0 AND BSD-3-Clause AND MIT) OR (Apache-2.0 AND MIT)","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sniffio@1.2.0"}]},{"name":"charset-normalizer","SPDXID":"SPDXRef-pypi-charset-normalizer-2.0.6-75c946","versionInfo":"2.0.6","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/charset-normalizer@2.0.6"}]},{"name":"httpx","SPDXID":"SPDXRef-pypi-httpx-1.0.0b0-75c946","versionInfo":"1.0.0b0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/httpx@1.0.0b0"}]},{"name":"h11","SPDXID":"SPDXRef-pypi-h11-0.16.0-75c946","versionInfo":"0.16.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2006-2008 Scipy Developers, Copyright (c) 2006, Jonathan E. Taylor, Copyright (c) 2009-2012 Statsmodels Developers, Copyright (c) 2016 Nathaniel J. Smith \u003cnjs@pobox.com\u003e and other contributors, Copyright 2007, 2008 Chris Wanstrath chris@ozmm.org, copyright 2016, Nathaniel J. Smith","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/h11@0.16.0"}]},{"name":"tqdm","SPDXID":"SPDXRef-pypi-tqdm-4.66.3-75c946","versionInfo":"4.66.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT AND MPL-2.0","copyrightText":"(c) Casper da Costa-Luis casperdcl (https://github.com/casperdcl), (c) Noam Yorav-Raphael, original author, Copyright (c) 2013 noamraph","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/tqdm@4.66.3"}]},{"name":"certifi","SPDXID":"SPDXRef-pypi-certifi-2024.7.4-75c946","versionInfo":"2024.7.4","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MPL-2.0","copyrightText":"(c) 1999 Entrust.net Limited, (c) 1999 Entrust.net Limited Label Entrust.net Premium 2048 Secure Server CA Serial, (c) 2006 Entrust, Inc., (c) 2006 Entrust, Inc. Label Entrust Root Certification, (c) 2009 Entrust, Inc. - for, (c) 2012 Entrust, Inc. - for, (c) 2015 Entrust, Inc. - for","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/certifi@2024.7.4"}]},{"name":"curio","SPDXID":"SPDXRef-pypi-curio-1.5-75c946","versionInfo":"1.5","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-3-Clause","copyrightText":"Copyright (c) 2015-2020 David Beazley (Dabeaz LLC, https://www.dabeaz.com), Copyright (c) Twisted Matrix Laboratories, copyright u'2016-2020, David Beazley","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/curio@1.5"}]},{"name":"starlette","SPDXID":"SPDXRef-pypi-starlette-0.40.0-75c946","versionInfo":"0.40.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause AND BSD-3-Clause","copyrightText":"Copyright (c) 2018, Encode OSS Ltd (https://www.encode.io/)","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/starlette@0.40.0"}]},{"name":"pydantic","SPDXID":"SPDXRef-pypi-pydantic-1.10.13-75c946","versionInfo":"1.10.13","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2017, 2018, 2019, 2020, 2021 Samuel Colvin and other contributors","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/pydantic@1.10.13"}]},{"name":"click","SPDXID":"SPDXRef-pypi-click-7.1.2-75c946","versionInfo":"7.1.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause AND BSD-3-Clause","copyrightText":"Copyright 2001-2006 Gregory P. Ward., Copyright 2002-2006 Python Software Foundation., copyright 2014 Pallets, Copyright 2014 Pallets","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/click@7.1.2"}]},{"name":"typing-extensions","SPDXID":"SPDXRef-pypi-typing-extensions-3.7.4.3-75c946","versionInfo":"3.7.4.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Python-2.0.1","copyrightText":"Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands, Copyright (c) 1995-2001 Corporation for National Research Initiatives, Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Python Software Foundation","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/typing-extensions@3.7.4.3"}]},{"name":"fastapi","SPDXID":"SPDXRef-pypi-fastapi-0.65.2-75c946","versionInfo":"0.65.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2018 Sebastian Ramirez","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/fastapi@0.65.2"}]},{"name":"uvicorn","SPDXID":"SPDXRef-pypi-uvicorn-0.13.4-75c946","versionInfo":"0.13.4","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause AND BSD-3-Clause","copyrightText":"Copyright (c) 2017-present, Encode OSS Ltd (http://www.encode.io/).","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/uvicorn@0.13.4"}]},{"name":"com.github.fluentpython/example-code-2e","SPDXID":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","versionInfo":"master","downloadLocation":"git+https://github.com/fluentpython/example-code-2e","filesAnalyzed":false,"licenseDeclared":"MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:github/fluentpython/example-code-2e@master"}]}],"relationships":[{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-click-7.1.2-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-typing-extensions-3.7.4.3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-fastapi-0.65.2-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-future-0.18.3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-pytest-6.2.4-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-anyio-3.3.2-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-rfc3986-1.5.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-charset-normalizer-2.0.6-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-h11-0.16.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-tqdm-4.66.3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-uvicorn-0.13.4-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-mypy-0.910-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-httpcore-0.13.7-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-httpx-1.0.0b0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-curio-1.5-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-pydantic-1.10.13-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-geolib-1.0.7-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-idna-3.7-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-sniffio-1.2.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-certifi-2024.7.4-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relatedSpdxElement":"SPDXRef-pypi-starlette-0.40.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-DOCUMENT","relatedSpdxElement":"SPDXRef-github-fluentpython-example-code-2e-master-b88f7d","relationshipType":"DESCRIBES"}]}