{"spdxVersion":"SPDX-2.3","dataLicense":"CC0-1.0","SPDXID":"SPDXRef-DOCUMENT","name":"com.github.talkpython/async-techniques-python-course","documentNamespace":"https://spdx.org/spdxdocs/protobom/986b4663-6fdf-4385-afa8-6befd0bf8a30","comment":"Exact versions could not be resolved for some packages. For more information: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph#dependencies-included.","creationInfo":{"creators":["Tool: protobom-v0.0.0-20251216165153-1f3f3060931e+dirty","Tool: GitHub.com-Dependency-Graph"],"created":"2025-12-22T12:58:00Z"},"packages":[{"name":"wsproto","SPDXID":"SPDXRef-pypi-wsproto-1.2.0-75c946","versionInfo":"1.2.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2017 Benno Rice and contributors, copyright 2020, Benno Rice","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/wsproto@1.2.0"}]},{"name":"hyperframe","SPDXID":"SPDXRef-pypi-hyperframe-6.1.0-75c946","versionInfo":"6.1.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2014 Cory Benfield, copyright 2020, Cory Benfield","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/hyperframe@6.1.0"}]},{"name":"propcache","SPDXID":"SPDXRef-pypi-propcache-0.4.1-75c946","versionInfo":"0.4.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"Copyright 2016-2021, Andrew Svetlov and aio-libs team, copyright f'2016, Andrew Svetlov, project","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/propcache@0.4.1"}]},{"name":"certifi","SPDXID":"SPDXRef-pypi-certifi-2025.10.5-75c946","versionInfo":"2025.10.5","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MPL-2.0","copyrightText":"(c) 2006 Entrust, Inc., (c) 2006 Entrust, Inc. Label Entrust Root Certification, (c) 2009 Entrust, Inc. - for, (c) 2012 Entrust, Inc. - for","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/certifi@2025.10.5"}]},{"name":"aiohappyeyeballs","SPDXID":"SPDXRef-pypi-aiohappyeyeballs-2.6.1-75c946","versionInfo":"2.6.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"0BSD AND BSD-3-Clause AND LicenseRef-scancode-unknown-license-reference AND PSF-2.0 AND Python-2.0","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, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/aiohappyeyeballs@2.6.1"}]},{"name":"trio","SPDXID":"SPDXRef-pypi-trio-0.31.0-75c946","versionInfo":"0.31.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0 AND MIT","copyrightText":"copyright 2017, Nathaniel J. Smith","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/trio@0.31.0"}]},{"name":"frozenlist","SPDXID":"SPDXRef-pypi-frozenlist-1.8.0-75c946","versionInfo":"1.8.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"Copyright 2013-2019 Nikolay Kim and Andrew Svetlov, copyright 2013, frozenlist contributors","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/frozenlist@1.8.0"}]},{"name":"charset-normalizer","SPDXID":"SPDXRef-pypi-charset-normalizer-3.4.4-75c946","versionInfo":"3.4.4","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"(c) 2012 Denny Vrandecic (http://simia.net/letters/), (c) https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input, copyright (c) 2021 by Ahmed TAHRI, Copyright (c) 2025 Ahmed TAHRI, Copyright (c) 2025 TAHRI Ahmed R., Copyright (c) Ahmed TAHRI @Ousret (https://github.com/Ousret), COPYRIGHT (c) FOOBAR, copyright 2023, Ahmed TAHRI","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/charset-normalizer@3.4.4"}]},{"name":"aiosignal","SPDXID":"SPDXRef-pypi-aiosignal-1.4.0-75c946","versionInfo":"1.4.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"Copyright 2013-2019 Nikolay Kim and Andrew Svetlov, copyright 2013-2019, aiosignal contributors","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/aiosignal@1.4.0"}]},{"name":"trio-asyncio","SPDXID":"SPDXRef-pypi-trio-asyncio-0.15.0-75c946","versionInfo":"0.15.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0 AND LicenseRef-scancode-unknown-license-reference AND MIT","copyrightText":"copyright (c) 2018, Matthias Urlichs","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/trio-asyncio@0.15.0"}]},{"name":"attrs","SPDXID":"SPDXRef-pypi-attrs-25.4.0-75c946","versionInfo":"25.4.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"(c) N Revealed, Copyright (c) 2015 Hynek Schlawack","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/attrs@25.4.0"}]},{"name":"urllib3","SPDXID":"SPDXRef-pypi-urllib3-2.5.0-75c946","versionInfo":"2.5.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"2019-2022, Pyodide contributors and Mozilla, Copyright (c) 2008-2020 Andrey Petrov and contributors, Copyright (c) 2019-2022, Pyodide contributors, Copyright 2019-2022, Pyodide contributors","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/urllib3@2.5.0"}]},{"name":"greenlet","SPDXID":"SPDXRef-pypi-greenlet-3.2.4-75c946","versionInfo":"3.2.4","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT AND PSF-2.0 AND Python-2.0","copyrightText":"Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Python Software Foundation, Copyright (c) 2018 gevent community, Copyright (c) 2021 greenlet community, Copyright (c) Armin Rigo, Christian Tismer and contributors","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/greenlet@3.2.4"}]},{"name":"colorama","SPDXID":"SPDXRef-pypi-colorama-0.4.6-75c946","versionInfo":"0.4.6","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause AND BSD-3-Clause","copyrightText":"Copyright (c) 2010 Jonathan Hartley, Copyright Jonathan Hartley \u0026 Arnon Yaari, 2013-2020, Copyright Jonathan Hartley 2013","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/colorama@0.4.6"}]},{"name":"sortedcontainers","SPDXID":"SPDXRef-pypi-sortedcontainers-2.4.0-75c946","versionInfo":"2.4.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"copyright (c) 2014-2019 by Grant Jenks. :license Apache, Copyright 2014-2019 Grant Jenks, copyright 2014-2019, Grant Jenks","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sortedcontainers@2.4.0"}]},{"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":"idna","SPDXID":"SPDXRef-pypi-idna-3.11-75c946","versionInfo":"3.11","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-3-Clause","copyrightText":"Copyright (c) 2013-2025, Kim Davies and contributors","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/idna@3.11"}]},{"name":"bs4","SPDXID":"SPDXRef-pypi-bs4-0.0.2-75c946","versionInfo":"0.0.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/bs4@0.0.2"}]},{"name":"itsdangerous","SPDXID":"SPDXRef-pypi-itsdangerous-2.2.0-75c946","versionInfo":"2.2.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause AND BSD-3-Clause","copyrightText":"copyright 2011 Pallets, Copyright 2011 Pallets","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/itsdangerous@2.2.0"}]},{"name":"quart","SPDXID":"SPDXRef-pypi-quart-0.20.0-75c946","versionInfo":"0.20.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/quart@0.20.0"}]},{"name":"markupsafe","SPDXID":"SPDXRef-pypi-markupsafe-3.0.3-75c946","versionInfo":"3.0.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-3-Clause","copyrightText":"copyright 2010 Pallets, Copyright 2010 Pallets","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/markupsafe@3.0.3"}]},{"name":"multidict","SPDXID":"SPDXRef-pypi-multidict-6.7.0-75c946","versionInfo":"6.7.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"Copyright 2016 Andrew Svetlov and aio-libs contributors, copyright 2016, Andrew Svetlov and aio-libs contributors, Copyright Contributors to the pythoncapi_compat project.","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/multidict@6.7.0"}]},{"name":"h2","SPDXID":"SPDXRef-pypi-h2-4.3.0-75c946","versionInfo":"4.3.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2014 Rackspace, Copyright (c) 2015-2020 Cory Benfield and contributors, copyright 2020, Cory Benfield","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/h2@4.3.0"}]},{"name":"yarl","SPDXID":"SPDXRef-pypi-yarl-1.22.0-75c946","versionInfo":"1.22.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"Copyright 2016-2021, Andrew Svetlov and aio-libs team, copyright f'2016, Andrew Svetlov, project","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/yarl@1.22.0"}]},{"name":"werkzeug","SPDXID":"SPDXRef-pypi-werkzeug-3.1.3-75c946","versionInfo":"3.1.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause AND BSD-3-Clause","copyrightText":"copyright 2007 Pallets, Copyright 2007 Pallets","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/werkzeug@3.1.3"}]},{"name":"requests","SPDXID":"SPDXRef-pypi-requests-2.32.5-75c946","versionInfo":"2.32.5","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"copyright (c) 2012 by Kenneth Reitz, copyright (c) 2017 by Kenneth Reitz, Copyright 2019 Kenneth Reitz, Copyright Kenneth Reitz","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/requests@2.32.5"}]},{"name":"blinker","SPDXID":"SPDXRef-pypi-blinker-1.9.0-75c946","versionInfo":"1.9.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"copyright 2010 Jason Kirtland, Copyright 2010 Jason Kirtland","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/blinker@1.9.0"}]},{"name":"hpack","SPDXID":"SPDXRef-pypi-hpack-4.1.0-75c946","versionInfo":"4.1.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2013 Tatsuhiro Tsujikawa, Copyright (c) 2014 Cory Benfield, copyright 2020, Cory Benfield","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/hpack@4.1.0"}]},{"name":"aiohttp","SPDXID":"SPDXRef-pypi-aiohttp-3.13.1-75c946","versionInfo":"3.13.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0 AND MIT","copyrightText":"Copyright aio-libs contributors, copyright f project contributors, Copyright Fedor Indutny, 2018","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/aiohttp@3.13.1"}]},{"name":"outcome","SPDXID":"SPDXRef-pypi-outcome-1.3.0.post0-75c946","versionInfo":"1.3.0.post0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0 OR (Apache-2.0 AND MIT)","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/outcome@1.3.0.post0"}]},{"name":"priority","SPDXID":"SPDXRef-pypi-priority-2.0.0-75c946","versionInfo":"2.0.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2015 Cory Benfield, copyright 2021, Cory Benfield","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/priority@2.0.0"}]},{"name":"flask","SPDXID":"SPDXRef-pypi-flask-3.1.2-75c946","versionInfo":"3.1.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-3-Clause","copyrightText":"(c) Copyright 2010 by http://domain.invalid/\u003e, Copyright (c) 2015 CERN., copyright 2010 Pallets, Copyright 2010 Pallets","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/flask@3.1.2"}]},{"name":"sniffio","SPDXID":"SPDXRef-pypi-sniffio-1.3.1-75c946","versionInfo":"1.3.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0 AND MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/sniffio@1.3.1"}]},{"name":"click","SPDXID":"SPDXRef-pypi-click-8.3.0-75c946","versionInfo":"8.3.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"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@8.3.0"}]},{"name":"jinja2","SPDXID":"SPDXRef-pypi-jinja2-3.1.6-75c946","versionInfo":"3.1.6","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"BSD-2-Clause AND BSD-3-Clause","copyrightText":"(c) Copyright 2008 by http://domain.invalid/\u003e, copyright 2007 Pallets, Copyright 2007 Pallets","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/jinja2@3.1.6"}]},{"name":"aiofiles","SPDXID":"SPDXRef-pypi-aiofiles-25.1.0-75c946","versionInfo":"25.1.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0","copyrightText":"Copyright 2016 Tin Tvrtkovic","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/aiofiles@25.1.0"}]},{"name":"typing-extensions","SPDXID":"SPDXRef-pypi-typing-extensions-4.15.0-75c946","versionInfo":"4.15.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Python-2.0 AND Python-2.0 AND BSD-3-Clause AND Python-2.0 AND BSD-3-Clause AND 0BSD","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, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/typing-extensions@4.15.0"}]},{"name":"unsync","SPDXID":"SPDXRef-pypi-unsync-1.4.0-75c946","versionInfo":"1.4.0","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/unsync@1.4.0"}]},{"name":"hypercorn","SPDXID":"SPDXRef-pypi-hypercorn-0.17.3-75c946","versionInfo":"0.17.3","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/hypercorn@0.17.3"}]},{"name":"soupsieve","SPDXID":"SPDXRef-pypi-soupsieve-2.8-75c946","versionInfo":"2.8","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"Copyright (c) 2018 - 2025 a href https://github.com/facelessuser, Copyright (c) 2018 - 2025 Isaac Muse \u003cisaacmuse@gmail.com\u003e, Copyright (c) 2018 Isaac Muse","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/soupsieve@2.8"}]},{"name":"beautifulsoup4","SPDXID":"SPDXRef-pypi-beautifulsoup4-4.14.2-75c946","versionInfo":"4.14.2","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"MIT","copyrightText":"(c) Copyright 2012, Leonard Richardson, (c) Copyright 2013, Leonard Richardson, Copyright (c) 2004-2025 Leonard Richardson, Copyright (c) Isaac Muse, Copyright (c) James Graham and other contributors, Copyright (c) Leonard Richardson, copyright 2004-2025 Leonard Richardson, Copyright 2007-2016 by the Sphinx team","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/beautifulsoup4@4.14.2"}]},{"name":"uvloop","SPDXID":"SPDXRef-pypi-uvloop-0.22.1-75c946","versionInfo":"0.22.1","downloadLocation":"NOASSERTION","filesAnalyzed":false,"licenseConcluded":"Apache-2.0 AND MIT","copyrightText":"(c) (c) L (c), Copyright (c) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, @ :@ Inc., Copyright (c) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, Inc., Copyright (c) 1994 X Consortium, Copyright (c) 1994-2021 Free Software Foundation, Inc., Copyright (c) 1996-1999 by Internet Software Consortium, Copyright (c) 1996-2001, 2003-2015 Free Software Foundation, Inc., Copyright (c) 1996-2015 Free Software Foundation, Inc., Copyright (c) 1996-2021 Free Software Foundation, Inc., Copyright (c) 1997-2021 Free Software Foundation, Inc., Copyright (c) 1999-2021 Free Software Foundation, Inc., Copyright (c) 2001-2021 Free Software Foundation, Inc., Copyright (c) 2002-2021 Free Software Foundation, Inc., Copyright (c) 2003-2021 Free Software Foundation, Inc., Copyright (c) 2004 by Internet Systems Consortium, Inc., Copyright (c) 2004-2005, 2007-2008, 2011-2015 Free Software Foundation, Inc., Copyright (c) 2004-2005, 2007-2009, 2011-2015 Free Software Foundation, Inc., Copyright (c) 2004-2005, 2007, 2009, 2011-2015 Free Software Foundation, Inc., Copyright (c) 2004-2015 Free Software Foundation, Inc., Copyright (c) 2004-2021 Free Software Foundation, Inc., Copyright (c) 2004, 2011-2015 Free Software Foundation, Inc., Copyright (c) 2006-2008 Diego Petteno, Copyright (c) 2006-2008 xine project, Copyright (c) 2006-2021 Free Software Foundation, Inc., Copyright (c) 2008 Steven G. Johnson \u003cstevenj@alum.mit.edu\u003e, Copyright (c) 2009-2021 Free Software Foundation, Inc., Copyright (c) 2010-2015 Free Software Foundation, Inc., Copyright (c) 2010-2021 Free Software Foundation, Inc., Copyright (c) 2011 Daniel Richard G. \u003cskunk@iSKUNK.ORG\u003e, Copyright (c) 2011 Free Software Foundation, Inc., Copyright (c) 2011-2021 Free Software Foundation, Inc., Copyright (c) 2013, Ben Noordhuis \u003cinfo@bnoordhuis.nl\u003e, Copyright (c) 2014 Free Software Foundation, Inc., Copyright (c) 2014, Ben Noordhuis \u003cinfo@bnoordhuis.nl\u003e, Copyright (c) 2015 Saul Ibarra Corretge \u003csaghul@gmail.com\u003e, Copyright (c) 2015-present libuv project contributors, Copyright (c) 2015-present MagicStack Inc. http://magic.io, Copyright (c) 2015, Ben Noordhuis \u003cinfo@bnoordhuis.nl\u003e, Copyright (c) 2016-present the uvloop authors and contributors, Copyright (c) 2021 Free Software Foundation, Inc., Copyright (c) 2021 libuv project, Copyright 1992-2022 Free Software Foundation, Inc., Copyright 2002 Niels Provos \u003cprovos@citi.umich.edu\u003e, copyright 2016-present, MagicStack, Inc, Copyright 2017 - Refael Ackermann Distributed, Copyright Bert Belder, Copyright Fedor Indutny, Copyright Joyent, Inc. and other Node contributors, Copyright libuv contributors, Copyright libuv project and contributors, Copyright libuv project and other Node contributors, Copyright libuv project contributors, copyright Niels Provos. Two, copyright the Internet Systems Consortium, Inc., Copyright The libuv project and contributors, Copyright the libuv project contributors","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/uvloop@0.22.1"}]},{"name":"cython","SPDXID":"SPDXRef-pypi-cython-3.1.6-75c946","versionInfo":"3.1.6","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/cython@3.1.6"}]},{"name":"requests","SPDXID":"SPDXRef-pypi-requests-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/requests"}]},{"name":"bs4","SPDXID":"SPDXRef-pypi-bs4-75c946","downloadLocation":"NOASSERTION","filesAnalyzed":false,"externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:pypi/bs4"}]},{"name":"com.github.talkpython/async-techniques-python-course","SPDXID":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","versionInfo":"master","downloadLocation":"git+https://github.com/talkpython/async-techniques-python-course","filesAnalyzed":false,"licenseDeclared":"MIT","externalRefs":[{"referenceCategory":"PACKAGE-MANAGER","referenceType":"purl","referenceLocator":"pkg:github/talkpython/async-techniques-python-course@master"}]}],"relationships":[{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-certifi-2025.10.5-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-aiohappyeyeballs-2.6.1-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-frozenlist-1.8.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-aiosignal-1.4.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-cython-3.1.6-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-charset-normalizer-3.4.4-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-attrs-25.4.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-h11-0.16.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-bs4-0.0.2-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-requests-2.32.5-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-blinker-1.9.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-soupsieve-2.8-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-greenlet-3.2.4-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-idna-3.11-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-markupsafe-3.0.3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-aiohttp-3.13.1-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-outcome-1.3.0.post0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-jinja2-3.1.6-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-beautifulsoup4-4.14.2-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-wsproto-1.2.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-trio-asyncio-0.15.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-yarl-1.22.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-aiofiles-25.1.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-hypercorn-0.17.3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-bs4-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-hyperframe-6.1.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-trio-0.31.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-itsdangerous-2.2.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-priority-2.0.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-flask-3.1.2-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-typing-extensions-4.15.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-uvloop-0.22.1-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-colorama-0.4.6-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-multidict-6.7.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-werkzeug-3.1.3-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-sniffio-1.3.1-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-unsync-1.4.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-propcache-0.4.1-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-urllib3-2.5.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-sortedcontainers-2.4.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-hpack-4.1.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-click-8.3.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-requests-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-quart-0.20.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relatedSpdxElement":"SPDXRef-pypi-h2-4.3.0-75c946","relationshipType":"DEPENDS_ON"},{"spdxElementId":"SPDXRef-DOCUMENT","relatedSpdxElement":"SPDXRef-github-talkpython-async-techniques-python-course-master-62a80e","relationshipType":"DESCRIBES"}]}