From 83663d879dafeabc7f0d772e5a45d7a74c921989 Mon Sep 17 00:00:00 2001 From: Elijas <4084885+Elijas@users.noreply.github.com> Date: Thu, 12 Oct 2023 13:55:22 +0300 Subject: [PATCH] feat: add to_dict() methods and remove e2e tests --- Taskfile.yml | 13 - docs/rtd_requirements.txt | 410 +++++++++++++----- poetry.lock | 119 ++++- pyproject.toml | 1 + sec_parser/processing_engine/html_tag.py | 35 ++ .../abstract_semantic_element.py | 16 +- .../composite_semantic_element.py | 8 +- .../highlighted_text_element.py | 8 +- tests/e2e/__init__.py | 0 tests/e2e/_metrics.py | 86 ---- tests/e2e/sec_parser.py | 246 ----------- .../10q_apple_000032019323000077.html | 22 - .../10q_goog_000165204423000070.html | 22 - tests/unit/processing_engine/test_html_tag.py | 20 +- .../test_abstract_level_element.py | 14 + .../test_composite_semantic_element.py | 16 + .../test_highlighted_text_element.py | 21 +- 17 files changed, 553 insertions(+), 504 deletions(-) delete mode 100644 tests/e2e/__init__.py delete mode 100644 tests/e2e/_metrics.py delete mode 100644 tests/e2e/sec_parser.py delete mode 100644 tests/e2e/test_data/10q_apple_000032019323000077.html delete mode 100644 tests/e2e/test_data/10q_goog_000165204423000070.html diff --git a/Taskfile.yml b/Taskfile.yml index 00d259f..b035d36 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -11,7 +11,6 @@ tasks: cmds: - task unit - task lint-fix - - task e2e-smoke p: desc: Shortcut for `task pre-commit`. @@ -23,7 +22,6 @@ tasks: cmds: - task unit - task lint - - task e2e ###################### ### Run Unit Tests ### @@ -64,18 +62,7 @@ tasks: ### Run End-to-end Tests ### ############################ - e2e: - desc: Run repeated end-to-end tests. - cmds: - # The CLI_ARGS variable allows passing custom arguments to the end-to-end test after "--". - # For instance, to run the test with specific parameters, use the command: - # task e2e -- --tests-per-core=5 --cores=2 --limit_documents=2 - - poetry run python -m tests.e2e.sec_parser {{.CLI_ARGS}} - e2e-smoke: - desc: Run a single end-to-end test for a single document. This is a useful way to verify if the parser is functioning (a so-called "smoke" test). - cmds: - - poetry run python -m tests.e2e.sec_parser --tests-per-core=1 --cores=1 --limit_documents=1 ####################### ### Developer Tools ### diff --git a/docs/rtd_requirements.txt b/docs/rtd_requirements.txt index 1fafffa..ddc34c3 100644 --- a/docs/rtd_requirements.txt +++ b/docs/rtd_requirements.txt @@ -7,18 +7,50 @@ anyascii==0.3.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and anyio==4.0.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:cfdb2b588b9fc25ede96d8db56ed50848b0b649dca3dd1df0b11f683bb9e0b5f \ --hash=sha256:f7ed51751b2c2add651e5747c891b47e26d2a21be5d32d9311dfe9692f3e5d7a +appnope==0.1.3 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" and sys_platform == "darwin" \ + --hash=sha256:02bd91c4de869fbb1e1c50aafc4098827a7a54ab2f39d9dcba6c9547ed920e24 \ + --hash=sha256:265a455292d0bd8a72453494fa24df5a11eb18373a60c7c0430889f22548605e astroid==3.0.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:1defdbca052635dd29657ea674edfc45e4b5be9cd53630c5b084fcfed94344a8 \ --hash=sha256:f2510e7fdcd6cfda4ec50014726d4857abf79acfc010084ce8c26091913f1b25 +asttokens==2.4.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:2e0171b991b2c959acc6c49318049236844a5da1d65ba2672c4880c1c894834e \ + --hash=sha256:cf8fc9e61a86461aa9fb161a14a0841a03c405fa829ac6b202670b3495d2ce69 attrs==23.1.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04 \ --hash=sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015 babel==2.13.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:04c3e2d28d2b7681644508f836be388ae49e0cfe91465095340395b60d00f210 \ --hash=sha256:fbfcae1575ff78e26c7449136f1abbefc3c13ce542eeb13d43d50d8b047216ec +backcall==0.2.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e \ + --hash=sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255 beautifulsoup4==4.12.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:492bbc69dca35d12daac71c4db1bfff0c876c00ef4a2ffacce226d4638eb72da \ --hash=sha256:bd2520ca0d9d7d12694a53d44ac482d181b4ec1888909b035a3dbf40d0f57d4a +black==23.9.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:031e8c69f3d3b09e1aa471a926a1eeb0b9071f80b17689a655f7885ac9325a6f \ + --hash=sha256:13a2e4a93bb8ca74a749b6974925c27219bb3df4d42fc45e948a5d9feb5122b7 \ + --hash=sha256:13ef033794029b85dfea8032c9d3b92b42b526f1ff4bf13b2182ce4e917f5100 \ + --hash=sha256:14f04c990259576acd093871e7e9b14918eb28f1866f91968ff5524293f9c573 \ + --hash=sha256:24b6b3ff5c6d9ea08a8888f6977eae858e1f340d7260cf56d70a49823236b62d \ + --hash=sha256:403397c033adbc45c2bd41747da1f7fc7eaa44efbee256b53842470d4ac5a70f \ + --hash=sha256:50254ebfa56aa46a9fdd5d651f9637485068a1adf42270148cd101cdf56e0ad9 \ + --hash=sha256:538efb451cd50f43aba394e9ec7ad55a37598faae3348d723b59ea8e91616300 \ + --hash=sha256:638619a559280de0c2aa4d76f504891c9860bb8fa214267358f0a20f27c12948 \ + --hash=sha256:6a3b50e4b93f43b34a9d3ef00d9b6728b4a722c997c99ab09102fd5efdb88325 \ + --hash=sha256:6ccd59584cc834b6d127628713e4b6b968e5f79572da66284532525a042549f9 \ + --hash=sha256:75a2dc41b183d4872d3a500d2b9c9016e67ed95738a3624f4751a0cb4818fe71 \ + --hash=sha256:7d30ec46de88091e4316b17ae58bbbfc12b2de05e069030f6b747dfc649ad186 \ + --hash=sha256:8431445bf62d2a914b541da7ab3e2b4f3bc052d2ccbf157ebad18ea126efb91f \ + --hash=sha256:8fc1ddcf83f996247505db6b715294eba56ea9372e107fd54963c7553f2b6dfe \ + --hash=sha256:a732b82747235e0542c03bf352c126052c0fbc458d8a239a94701175b17d4855 \ + --hash=sha256:adc3e4442eef57f99b5590b245a328aad19c99552e0bdc7f0b04db6656debd80 \ + --hash=sha256:c46767e8df1b7beefb0899c4a95fb43058fa8500b6db144f4ff3ca38eb2f6393 \ + --hash=sha256:c619f063c2d68f19b2d7270f4cf3192cb81c9ec5bc5ba02df91471d0b88c4c5c \ + --hash=sha256:cf3a4d00e4cdb6734b64bf23cd4341421e8953615cba6b3670453737a72ec204 \ + --hash=sha256:cf99f3de8b3273a8317681d8194ea222f10e0133a24a7548c73ce44ea1679377 \ + --hash=sha256:d6bc09188020c9ac2555a498949401ab35bb6bf76d4e0f8ee251694664df6301 bleach==6.1.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe \ --hash=sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6 @@ -169,12 +201,18 @@ charset-normalizer==3.3.0 ; python_version >= "3.9" and python_full_version != " --hash=sha256:f5969baeaea61c97efa706b9b107dcba02784b1601c74ac84f2a532ea079403e \ --hash=sha256:f8888e31e3a85943743f8fc15e71536bda1c81d5aa36d014a3c0c44481d7db6e \ --hash=sha256:fc52b79d83a3fe3a360902d3f5d79073a993597d48114c29485e9431092905d8 +click==8.1.7 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28 \ + --hash=sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de colorama==0.4.6 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \ --hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6 cssutils==2.7.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:1e92e0d9dab2ec8af9f38d715393964ba533dc3beacab9b072511dfc241db775 \ --hash=sha256:340ecfd9835d21df8f98500f0dfcea0aee41cb4e19ecbc2cf94f0a6d36d7cb6c +decorator==5.1.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:637996211036b6385ef91435e4fae22989472f9d571faba8927ba8253acbc330 \ + --hash=sha256:b8c3f85900b9dc423225913c5aace94729fe1fa9763b38939a95226f02d37186 defusedxml==0.7.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69 \ --hash=sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 @@ -184,6 +222,9 @@ docutils==0.18.1 ; python_version >= "3.9" and python_full_version != "3.9.7" an exceptiongroup==1.1.3 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "3.11" \ --hash=sha256:097acd85d473d75af5bb98e41b61ff7fe35efe6675e4f9370ec6ec5126d160e9 \ --hash=sha256:343280667a4585d195ca1cf9cef84a4e178c4b6cf2274caef9859782b567d5e3 +executing==2.0.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:06df6183df67389625f4e763921c6cf978944721abf3e714000200aab95b0657 \ + --hash=sha256:0ff053696fdeef426cda5bd18eacd94f82c91f49823a2e9090124212ceea9b08 fastjsonschema==2.18.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:06dc8680d937628e993fa0cd278f196d20449a1adc087640710846b324d422ea \ --hash=sha256:aec6a19e9f66e9810ab371cc913ad5f4e9e479b63a7072a2cd060a9369e329a8 @@ -243,6 +284,12 @@ imagesize==1.4.1 ; python_version >= "3.9" and python_full_version != "3.9.7" an importlib-metadata==6.8.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "3.10" \ --hash=sha256:3ebb78df84a805d7698245025b975d9d67053cd94c79245ba4b3eb694abe68bb \ --hash=sha256:dbace7892d8c0c4ac1ad096662232f831d4e64f4c4545bd53016a3e9d4654743 +ipython==8.16.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:0852469d4d579d9cd613c220af7bf0c9cc251813e12be647cb9d463939db9b1e \ + --hash=sha256:ad52f58fca8f9f848e256c629eff888efc0528c12fe0f8ec14f33205f23ef938 +jedi==0.19.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:cf0496f3651bc65d7174ac1b7d043eff454892c708a87d1b683e57b569927ffd \ + --hash=sha256:e983c654fe5c02867aef4cdfce5a2fbb4a50adc0af145f70504238f18ef5e7e0 jinja2==3.1.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \ --hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61 @@ -252,12 +299,15 @@ jsonschema-specifications==2023.7.1 ; python_version >= "3.9" and python_full_ve jsonschema==4.19.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:cd5f1f9ed9444e554b38ba003af06c0a8c2868131e56bfbef0550fb450c0330e \ --hash=sha256:ec84cc37cfa703ef7cd4928db24f9cb31428a5d0fa77747b8b51a847458e0bbf -jupyter-client==8.3.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ - --hash=sha256:5eb9f55eb0650e81de6b7e34308d8b92d04fe4ec41cd8193a913979e33d8e1a5 \ - --hash=sha256:60294b2d5b869356c893f57b1a877ea6510d60d45cf4b38057f1672d85699ac9 -jupyter-core==5.3.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ - --hash=sha256:0c28db6cbe2c37b5b398e1a1a5b22f84fd64cd10afc1f6c05b02fb09481ba45f \ - --hash=sha256:a4af53c3fa3f6330cebb0d9f658e148725d15652811d1c32dc0f63bb96f2e6d6 +jupyter-black==0.3.4 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:2a38f33d4c321eb768f426103635ac9b80b40c9e42aa06072a729e3caddca4c3 \ + --hash=sha256:8690ec1d16d173a74eecc44419755ca7209c494b213e0d7b04c40a878239e247 +jupyter-client==8.4.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:6a2a950ec23a8f62f9e4c66acec7f0ea6c7d1f80ba0992e747b10c56ce2e6dbe \ + --hash=sha256:dc1b857d5d7d76ac101766c6e9b646bf18742721126e72e5d484c75a993cada2 +jupyter-core==5.4.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:66e252f675ac04dcf2feb6ed4afb3cd7f68cf92f483607522dc251f32d471571 \ + --hash=sha256:e4b98344bb94ee2e3e6c4519a97d001656009f9cb2b7f2baf15b3c205770011d jupyterlab-pygments==0.2.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:2405800db07c9f770863bcf8049a529c3dd4d3e28536638bd7c1c01d2748309f \ --hash=sha256:7405d7fde60819d905a9fa8ce89e4cd830e318cdad22a0030f7a901da705585d @@ -421,6 +471,9 @@ markupsafe==2.1.3 ; python_version >= "3.9" and python_full_version != "3.9.7" a --hash=sha256:f698de3fd0c4e6972b92290a45bd9b1536bffe8c6759c62471efaa8acb4c37bc \ --hash=sha256:fec21693218efe39aa7f8599346e90c705afa52c5b31ae019b2e57e8f6542bb2 \ --hash=sha256:ffcc3f7c66b5f5b7931a5aa68fc9cecc51e685ef90282f4a82f0f5e9b704ad11 +matplotlib-inline==0.1.6 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:f1f41aab5328aa5aaea9b16d083b128102f8712542f819fe7e6a420ff581b311 \ + --hash=sha256:f887e5f10ba98e8d2b150ddcf4702c1e5f8b3a20005eb0f74bfdbd360ee6f304 mdit-py-plugins==0.4.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:b51b3bb70691f57f974e257e367107857a93b36f322a9e6d44ca5bf28ec2def9 \ --hash=sha256:d8ab27e9aed6c38aa716819fedfde15ca275715955f8a185a8e1cf90fb1d2c1b @@ -430,6 +483,9 @@ mdurl==0.1.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and py mistune==3.0.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:71481854c30fdbc938963d3605b72501f5c10a9320ecd412c121c163a1c7d205 \ --hash=sha256:fc7f93ded930c92394ef2cb6f04a8aabab4117a91449e72dcc8dfa646a508be8 +mypy-extensions==1.0.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:4392f6c0eb8a5668a69e23d168ffa70f0be9ccfd32b5cc2d26a34ae5b844552d \ + --hash=sha256:75dbf8955dc00442a438fc4d0666508a9a97b6bd41aa2f0ffe9d2f2725af0782 myst-parser==2.0.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14 \ --hash=sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead @@ -451,9 +507,30 @@ packaging==23.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and pandocfilters==1.5.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:0b679503337d233b4339a817bfc8c50064e2eff681314376a47cb582305a7a38 \ --hash=sha256:33aae3f25fd1a026079f5d27bdd52496f0e0803b3469282162bafdcbdf6ef14f +parso==0.8.3 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0 \ + --hash=sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75 +pathspec==0.11.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:1d6ed233af05e679efb96b1851550ea95bbb64b7c490b0f5aa52996c11e92a20 \ + --hash=sha256:e0d8d0ac2f12da61956eb2306b69f9469b42f4deb0f3cb6ed47b9cce9996ced3 +pexpect==4.8.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" and sys_platform != "win32" \ + --hash=sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937 \ + --hash=sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c +pickleshare==0.7.5 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:87683d47965c1da65cdacaf31c8441d12b8044cdec9aca500cd78fc2c683afca \ + --hash=sha256:9649af414d74d4df115d5d718f82acb59c9d418196b7b4290ed47a12ce62df56 platformdirs==3.11.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:cf8ee52a3afdb965072dcc652433e0c7e3e40cf5ea1477cd4b3b1d2eb75495b3 \ --hash=sha256:e9d171d00af68be50e9202731309c4e658fd8bc76f55c11c7dd760d023bda68e +prompt-toolkit==3.0.39 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:04505ade687dc26dc4284b1ad19a83be2f2afe83e7a828ace0c72f3a1df72aac \ + --hash=sha256:9dffbe1d8acf91e3de75f3b544e4842382fc06c6babe903ac9acb74dc6e08d88 +ptyprocess==0.7.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" and sys_platform != "win32" \ + --hash=sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 \ + --hash=sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220 +pure-eval==0.2.2 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350 \ + --hash=sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3 pycparser==2.21 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" and implementation_name == "pypy" \ --hash=sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9 \ --hash=sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206 @@ -632,106 +709,106 @@ referencing==0.30.2 ; python_version >= "3.9" and python_full_version != "3.9.7" requests==2.31.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f \ --hash=sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1 -rpds-py==0.10.4 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ - --hash=sha256:00a88003db3cc953f8656b59fc9af9d0637a1fb93c235814007988f8c153b2f2 \ - --hash=sha256:049098dabfe705e9638c55a3321137a821399c50940041a6fcce267a22c70db2 \ - --hash=sha256:08f07150c8ebbdbce1d2d51b8e9f4d588749a2af6a98035485ebe45c7ad9394e \ - --hash=sha256:125776d5db15162fdd9135372bef7fe4fb7c5f5810cf25898eb74a06a0816aec \ - --hash=sha256:13cbd79ccedc6b39c279af31ebfb0aec0467ad5d14641ddb15738bf6e4146157 \ - --hash=sha256:18d5ff7fbd305a1d564273e9eb22de83ae3cd9cd6329fddc8f12f6428a711a6a \ - --hash=sha256:1c27942722cd5039bbf5098c7e21935a96243fed00ea11a9589f3c6c6424bd84 \ - --hash=sha256:255a23bded80605e9f3997753e3a4b89c9aec9efb07ec036b1ca81440efcc1a9 \ - --hash=sha256:2573ec23ad3a59dd2bc622befac845695972f3f2d08dc1a4405d017d20a6c225 \ - --hash=sha256:2603e084054351cc65097da326570102c4c5bd07426ba8471ceaefdb0b642cc9 \ - --hash=sha256:28b4942ec7d9d6114c1e08cace0157db92ef674636a38093cab779ace5742d3a \ - --hash=sha256:28e29dac59df890972f73c511948072897f512974714a803fe793635b80ff8c7 \ - --hash=sha256:2a97406d5e08b7095428f01dac0d3c091dc072351151945a167e7968d2755559 \ - --hash=sha256:2a9e864ec051a58fdb6bb2e6da03942adb20273897bc70067aee283e62bbac4d \ - --hash=sha256:2e0e2e01c5f61ddf47e3ed2d1fe1c9136e780ca6222d57a2517b9b02afd4710c \ - --hash=sha256:2e79eeeff8394284b09577f36316d410525e0cf0133abb3de10660e704d3d38e \ - --hash=sha256:2f2ac8bb01f705c5caaa7fe77ffd9b03f92f1b5061b94228f6ea5eaa0fca68ad \ - --hash=sha256:32819b662e3b4c26355a4403ea2f60c0a00db45b640fe722dd12db3d2ef807fb \ - --hash=sha256:3507c459767cf24c11e9520e2a37c89674266abe8e65453e5cb66398aa47ee7b \ - --hash=sha256:362faeae52dc6ccc50c0b6a01fa2ec0830bb61c292033f3749a46040b876f4ba \ - --hash=sha256:3650eae998dc718960e90120eb45d42bd57b18b21b10cb9ee05f91bff2345d48 \ - --hash=sha256:36ff30385fb9fb3ac23a28bffdd4a230a5229ed5b15704b708b7c84bfb7fce51 \ - --hash=sha256:3bc561c183684636c0099f9c3fbab8c1671841942edbce784bb01b4707d17924 \ - --hash=sha256:3bd38b80491ef9686f719c1ad3d24d14fbd0e069988fdd4e7d1a6ffcdd7f4a13 \ - --hash=sha256:3e37f1f134037601eb4b1f46854194f0cc082435dac2ee3de11e51529f7831f2 \ - --hash=sha256:40f6e53461b19ddbb3354fe5bcf3d50d4333604ae4bf25b478333d83ca68002c \ - --hash=sha256:49db6c0a0e6626c2b97f5e7f8f7074da21cbd8ec73340c25e839a2457c007efa \ - --hash=sha256:4bcb1abecd998a72ad4e36a0fca93577fd0c059a6aacc44f16247031b98f6ff4 \ - --hash=sha256:4cb55454a20d1b935f9eaab52e6ceab624a2efd8b52927c7ae7a43e02828dbe0 \ - --hash=sha256:4f92d2372ec992c82fd7c74aa21e2a1910b3dcdc6a7e6392919a138f21d528a3 \ - --hash=sha256:576d48e1e45c211e99fc02655ade65c32a75d3e383ccfd98ce59cece133ed02c \ - --hash=sha256:58bae860d1d116e6b4e1aad0cdc48a187d5893994f56d26db0c5534df7a47afd \ - --hash=sha256:5bb3f3cb6072c73e6ec1f865d8b80419b599f1597acf33f63fbf02252aab5a03 \ - --hash=sha256:5db93f9017b384a4f194e1d89e1ce82d0a41b1fafdbbd3e0c8912baf13f2950f \ - --hash=sha256:5e41d5b334e8de4bc3f38843f31b2afa9a0c472ebf73119d3fd55cde08974bdf \ - --hash=sha256:60018626e637528a1fa64bb3a2b3e46ab7bf672052316d61c3629814d5e65052 \ - --hash=sha256:6090ba604ea06b525a231450ae5d343917a393cbf50423900dea968daf61d16f \ - --hash=sha256:628fbb8be71a103499d10b189af7764996ab2634ed7b44b423f1e19901606e0e \ - --hash=sha256:6baea8a4f6f01e69e75cfdef3edd4a4d1c4b56238febbdf123ce96d09fbff010 \ - --hash=sha256:6c5ca3eb817fb54bfd066740b64a2b31536eb8fe0b183dc35b09a7bd628ed680 \ - --hash=sha256:70563a1596d2e0660ca2cebb738443437fc0e38597e7cbb276de0a7363924a52 \ - --hash=sha256:7089d8bfa8064b28b2e39f5af7bf12d42f61caed884e35b9b4ea9e6fb1175077 \ - --hash=sha256:72e9b1e92830c876cd49565d8404e4dcc9928302d348ea2517bc3f9e3a873a2a \ - --hash=sha256:7c7ca791bedda059e5195cf7c6b77384657a51429357cdd23e64ac1d4973d6dc \ - --hash=sha256:7f050ceffd8c730c1619a16bbf0b9cd037dcdb94b54710928ba38c7bde67e4a4 \ - --hash=sha256:83da147124499fe41ed86edf34b4e81e951b3fe28edcc46288aac24e8a5c8484 \ - --hash=sha256:86e8d6ff15fa7a9590c0addaf3ce52fb58bda4299cab2c2d0afa404db6848dab \ - --hash=sha256:8709eb4ab477c533b7d0a76cd3065d7d95c9e25e6b9f6e27caeeb8c63e8799c9 \ - --hash=sha256:8e69bbe0ede8f7fe2616e779421bbdb37f025c802335a90f6416e4d98b368a37 \ - --hash=sha256:8f90fc6dd505867514c8b8ef68a712dc0be90031a773c1ae2ad469f04062daef \ - --hash=sha256:9123ba0f3f98ff79780eebca9984a2b525f88563844b740f94cffb9099701230 \ - --hash=sha256:927e3461dae0c09b1f2e0066e50c1a9204f8a64a3060f596e9a6742d3b307785 \ - --hash=sha256:94876c21512535955a960f42a155213315e6ab06a4ce8ce372341a2a1b143eeb \ - --hash=sha256:98c0aecf661c175ce9cb17347fc51a5c98c3e9189ca57e8fcd9348dae18541db \ - --hash=sha256:9c7e7bd1fa1f535af71dfcd3700fc83a6dc261a1204f8f5327d8ffe82e52905d \ - --hash=sha256:9e7b3ad9f53ea9e085b3d27286dd13f8290969c0a153f8a52c8b5c46002c374b \ - --hash=sha256:9f9184744fb800c9f28e155a5896ecb54816296ee79d5d1978be6a2ae60f53c4 \ - --hash=sha256:a3628815fd170a64624001bfb4e28946fd515bd672e68a1902d9e0290186eaf3 \ - --hash=sha256:a5c330cb125983c5d380fef4a4155248a276297c86d64625fdaf500157e1981c \ - --hash=sha256:aa45cc71bf23a3181b8aa62466b5a2b7b7fb90fdc01df67ca433cd4fce7ec94d \ - --hash=sha256:aab24b9bbaa3d49e666e9309556591aa00748bd24ea74257a405f7fed9e8b10d \ - --hash=sha256:ac83f5228459b84fa6279e4126a53abfdd73cd9cc183947ee5084153880f65d7 \ - --hash=sha256:ad21c60fc880204798f320387164dcacc25818a7b4ec2a0bf6b6c1d57b007d23 \ - --hash=sha256:ae8a32ab77a84cc870bbfb60645851ca0f7d58fd251085ad67464b1445d632ca \ - --hash=sha256:b0f1d336786cb62613c72c00578c98e5bb8cd57b49c5bae5d4ab906ca7872f98 \ - --hash=sha256:b28b9668a22ca2cfca4433441ba9acb2899624a323787a509a3dc5fbfa79c49d \ - --hash=sha256:b953d11b544ca5f2705bb77b177d8e17ab1bfd69e0fd99790a11549d2302258c \ - --hash=sha256:b9d8884d58ea8801e5906a491ab34af975091af76d1a389173db491ee7e316bb \ - --hash=sha256:ba3246c60303eab3d0e562addf25a983d60bddc36f4d1edc2510f056d19df255 \ - --hash=sha256:bd0ad98c7d72b0e4cbfe89cdfa12cd07d2fd6ed22864341cdce12b318a383442 \ - --hash=sha256:bf032367f921201deaecf221d4cc895ea84b3decf50a9c73ee106f961885a0ad \ - --hash=sha256:c31ecfc53ac03dad4928a1712f3a2893008bfba1b3cde49e1c14ff67faae2290 \ - --hash=sha256:cbec8e43cace64e63398155dc585dc479a89fef1e57ead06c22d3441e1bd09c3 \ - --hash=sha256:cc688a59c100f038fa9fec9e4ab457c2e2d1fca350fe7ea395016666f0d0a2dc \ - --hash=sha256:cd7da2adc721ccf19ac7ec86cae3a4fcaba03d9c477d5bd64ded6e9bb817bf3f \ - --hash=sha256:cd7e62e7d5bcfa38a62d8397fba6d0428b970ab7954c2197501cd1624f7f0bbb \ - --hash=sha256:d0f7f77a77c37159c9f417b8dd847f67a29e98c6acb52ee98fc6b91efbd1b2b6 \ - --hash=sha256:d230fddc60caced271cc038e43e6fb8f4dd6b2dbaa44ac9763f2d76d05b0365a \ - --hash=sha256:d37f27ad80f742ef82796af3fe091888864958ad0bc8bab03da1830fa00c6004 \ - --hash=sha256:d5ad7b1a1f6964d19b1a8acfc14bf7864f39587b3e25c16ca04f6cd1815026b3 \ - --hash=sha256:d81359911c3bb31c899c6a5c23b403bdc0279215e5b3bc0d2a692489fed38632 \ - --hash=sha256:d98802b78093c7083cc51f83da41a5be5a57d406798c9f69424bd75f8ae0812a \ - --hash=sha256:db0589e0bf41ff6ce284ab045ca89f27be1adf19e7bce26c2e7de6739a70c18b \ - --hash=sha256:ddbd113a37307638f94be5ae232a325155fd24dbfae2c56455da8724b471e7be \ - --hash=sha256:e3ece9aa6d07e18c966f14b4352a4c6f40249f6174d3d2c694c1062e19c6adbb \ - --hash=sha256:e3f9c9e5dd8eba4768e15f19044e1b5e216929a43a54b4ab329e103aed9f3eda \ - --hash=sha256:e41824343c2c129599645373992b1ce17720bb8a514f04ff9567031e1c26951e \ - --hash=sha256:e5dba1c11e089b526379e74f6c636202e4c5bad9a48c7416502b8a5b0d026c91 \ - --hash=sha256:e791e3d13b14d0a7921804d0efe4d7bd15508bbcf8cb7a0c1ee1a27319a5f033 \ - --hash=sha256:ec001689402b9104700b50a005c2d3d0218eae90eaa8bdbbd776fe78fe8a74b7 \ - --hash=sha256:efffa359cc69840c8793f0c05a7b663de6afa7b9078fa6c80309ee38b9db677d \ - --hash=sha256:f1f191befea279cb9669b57be97ab1785781c8bab805900e95742ebfaa9cbf1d \ - --hash=sha256:f3331a3684192659fa1090bf2b448db928152fcba08222e58106f44758ef25f7 \ - --hash=sha256:f40413d2859737ce6d95c29ce2dde0ef7cdc3063b5830ae4342fef5922c3bba7 \ - --hash=sha256:f7ea49ddf51d5ec0c3cbd95190dd15e077a3153c8d4b22a33da43b5dd2b3c640 \ - --hash=sha256:f82abb5c5b83dc30e96be99ce76239a030b62a73a13c64410e429660a5602bfd \ - --hash=sha256:fc20dadb102140dff63529e08ce6f9745dbd36e673ebb2b1c4a63e134bca81c2 \ - --hash=sha256:fd37ab9a24021821b715478357af1cf369d5a42ac7405e83e5822be00732f463 \ - --hash=sha256:ffd539d213c1ea2989ab92a5b9371ae7159c8c03cf2bcb9f2f594752f755ecd3 +rpds-py==0.10.6 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:023574366002bf1bd751ebaf3e580aef4a468b3d3c216d2f3f7e16fdabd885ed \ + --hash=sha256:031f76fc87644a234883b51145e43985aa2d0c19b063e91d44379cd2786144f8 \ + --hash=sha256:052a832078943d2b2627aea0d19381f607fe331cc0eb5df01991268253af8417 \ + --hash=sha256:0699ab6b8c98df998c3eacf51a3b25864ca93dab157abe358af46dc95ecd9801 \ + --hash=sha256:0713631d6e2d6c316c2f7b9320a34f44abb644fc487b77161d1724d883662e31 \ + --hash=sha256:0774a46b38e70fdde0c6ded8d6d73115a7c39d7839a164cc833f170bbf539116 \ + --hash=sha256:0898173249141ee99ffcd45e3829abe7bcee47d941af7434ccbf97717df020e5 \ + --hash=sha256:09586f51a215d17efdb3a5f090d7cbf1633b7f3708f60a044757a5d48a83b393 \ + --hash=sha256:102eac53bb0bf0f9a275b438e6cf6904904908562a1463a6fc3323cf47d7a532 \ + --hash=sha256:10f32b53f424fc75ff7b713b2edb286fdbfc94bf16317890260a81c2c00385dc \ + --hash=sha256:150eec465dbc9cbca943c8e557a21afdcf9bab8aaabf386c44b794c2f94143d2 \ + --hash=sha256:1d7360573f1e046cb3b0dceeb8864025aa78d98be4bb69f067ec1c40a9e2d9df \ + --hash=sha256:1f36a9d751f86455dc5278517e8b65580eeee37d61606183897f122c9e51cef3 \ + --hash=sha256:24656dc36f866c33856baa3ab309da0b6a60f37d25d14be916bd3e79d9f3afcf \ + --hash=sha256:25860ed5c4e7f5e10c496ea78af46ae8d8468e0be745bd233bab9ca99bfd2647 \ + --hash=sha256:26857f0f44f0e791f4a266595a7a09d21f6b589580ee0585f330aaccccb836e3 \ + --hash=sha256:2bb2e4826be25e72013916eecd3d30f66fd076110de09f0e750163b416500721 \ + --hash=sha256:2f6da6d842195fddc1cd34c3da8a40f6e99e4a113918faa5e60bf132f917c247 \ + --hash=sha256:30adb75ecd7c2a52f5e76af50644b3e0b5ba036321c390b8e7ec1bb2a16dd43c \ + --hash=sha256:3339eca941568ed52d9ad0f1b8eb9fe0958fa245381747cecf2e9a78a5539c42 \ + --hash=sha256:34ad87a831940521d462ac11f1774edf867c34172010f5390b2f06b85dcc6014 \ + --hash=sha256:3777cc9dea0e6c464e4b24760664bd8831738cc582c1d8aacf1c3f546bef3f65 \ + --hash=sha256:3953c6926a63f8ea5514644b7afb42659b505ece4183fdaaa8f61d978754349e \ + --hash=sha256:3c4eff26eddac49d52697a98ea01b0246e44ca82ab09354e94aae8823e8bda02 \ + --hash=sha256:40578a6469e5d1df71b006936ce95804edb5df47b520c69cf5af264d462f2cbb \ + --hash=sha256:40f93086eef235623aa14dbddef1b9fb4b22b99454cb39a8d2e04c994fb9868c \ + --hash=sha256:4134aa2342f9b2ab6c33d5c172e40f9ef802c61bb9ca30d21782f6e035ed0043 \ + --hash=sha256:442626328600bde1d09dc3bb00434f5374948838ce75c41a52152615689f9403 \ + --hash=sha256:4a5ee600477b918ab345209eddafde9f91c0acd931f3776369585a1c55b04c57 \ + --hash=sha256:4ce5a708d65a8dbf3748d2474b580d606b1b9f91b5c6ab2a316e0b0cf7a4ba50 \ + --hash=sha256:516a611a2de12fbea70c78271e558f725c660ce38e0006f75139ba337d56b1f6 \ + --hash=sha256:52c215eb46307c25f9fd2771cac8135d14b11a92ae48d17968eda5aa9aaf5071 \ + --hash=sha256:53c43e10d398e365da2d4cc0bcaf0854b79b4c50ee9689652cdc72948e86f487 \ + --hash=sha256:5752b761902cd15073a527b51de76bbae63d938dc7c5c4ad1e7d8df10e765138 \ + --hash=sha256:5e8a78bd4879bff82daef48c14d5d4057f6856149094848c3ed0ecaf49f5aec2 \ + --hash=sha256:5ed505ec6305abd2c2c9586a7b04fbd4baf42d4d684a9c12ec6110deefe2a063 \ + --hash=sha256:5ee97c683eaface61d38ec9a489e353d36444cdebb128a27fe486a291647aff6 \ + --hash=sha256:61fa268da6e2e1cd350739bb61011121fa550aa2545762e3dc02ea177ee4de35 \ + --hash=sha256:64ccc28683666672d7c166ed465c09cee36e306c156e787acef3c0c62f90da5a \ + --hash=sha256:66414dafe4326bca200e165c2e789976cab2587ec71beb80f59f4796b786a238 \ + --hash=sha256:68fe9199184c18d997d2e4293b34327c0009a78599ce703e15cd9a0f47349bba \ + --hash=sha256:6a555ae3d2e61118a9d3e549737bb4a56ff0cec88a22bd1dfcad5b4e04759175 \ + --hash=sha256:6bdc11f9623870d75692cc33c59804b5a18d7b8a4b79ef0b00b773a27397d1f6 \ + --hash=sha256:6cf4393c7b41abbf07c88eb83e8af5013606b1cdb7f6bc96b1b3536b53a574b8 \ + --hash=sha256:6eef672de005736a6efd565577101277db6057f65640a813de6c2707dc69f396 \ + --hash=sha256:734c41f9f57cc28658d98270d3436dba65bed0cfc730d115b290e970150c540d \ + --hash=sha256:73e0a78a9b843b8c2128028864901f55190401ba38aae685350cf69b98d9f7c9 \ + --hash=sha256:775049dfa63fb58293990fc59473e659fcafd953bba1d00fc5f0631a8fd61977 \ + --hash=sha256:7854a207ef77319ec457c1eb79c361b48807d252d94348305db4f4b62f40f7f3 \ + --hash=sha256:78ca33811e1d95cac8c2e49cb86c0fb71f4d8409d8cbea0cb495b6dbddb30a55 \ + --hash=sha256:79edd779cfc46b2e15b0830eecd8b4b93f1a96649bcb502453df471a54ce7977 \ + --hash=sha256:7bf347b495b197992efc81a7408e9a83b931b2f056728529956a4d0858608b80 \ + --hash=sha256:7fde6d0e00b2fd0dbbb40c0eeec463ef147819f23725eda58105ba9ca48744f4 \ + --hash=sha256:81de24a1c51cfb32e1fbf018ab0bdbc79c04c035986526f76c33e3f9e0f3356c \ + --hash=sha256:879fb24304ead6b62dbe5034e7b644b71def53c70e19363f3c3be2705c17a3b4 \ + --hash=sha256:8e7f2219cb72474571974d29a191714d822e58be1eb171f229732bc6fdedf0ac \ + --hash=sha256:9164ec8010327ab9af931d7ccd12ab8d8b5dc2f4c6a16cbdd9d087861eaaefa1 \ + --hash=sha256:945eb4b6bb8144909b203a88a35e0a03d22b57aefb06c9b26c6e16d72e5eb0f0 \ + --hash=sha256:99a57006b4ec39dbfb3ed67e5b27192792ffb0553206a107e4aadb39c5004cd5 \ + --hash=sha256:9e9184fa6c52a74a5521e3e87badbf9692549c0fcced47443585876fcc47e469 \ + --hash=sha256:9ff93d3aedef11f9c4540cf347f8bb135dd9323a2fc705633d83210d464c579d \ + --hash=sha256:a360cfd0881d36c6dc271992ce1eda65dba5e9368575663de993eeb4523d895f \ + --hash=sha256:a5d7ed104d158c0042a6a73799cf0eb576dfd5fc1ace9c47996e52320c37cb7c \ + --hash=sha256:ac17044876e64a8ea20ab132080ddc73b895b4abe9976e263b0e30ee5be7b9c2 \ + --hash=sha256:ad857f42831e5b8d41a32437f88d86ead6c191455a3499c4b6d15e007936d4cf \ + --hash=sha256:b2039f8d545f20c4e52713eea51a275e62153ee96c8035a32b2abb772b6fc9e5 \ + --hash=sha256:b455492cab07107bfe8711e20cd920cc96003e0da3c1f91297235b1603d2aca7 \ + --hash=sha256:b4a9fe992887ac68256c930a2011255bae0bf5ec837475bc6f7edd7c8dfa254e \ + --hash=sha256:b5a53f5998b4bbff1cb2e967e66ab2addc67326a274567697379dd1e326bded7 \ + --hash=sha256:b788276a3c114e9f51e257f2a6f544c32c02dab4aa7a5816b96444e3f9ffc336 \ + --hash=sha256:bddd4f91eede9ca5275e70479ed3656e76c8cdaaa1b354e544cbcf94c6fc8ac4 \ + --hash=sha256:c0503c5b681566e8b722fe8c4c47cce5c7a51f6935d5c7012c4aefe952a35eed \ + --hash=sha256:c1b3cd23d905589cb205710b3988fc8f46d4a198cf12862887b09d7aaa6bf9b9 \ + --hash=sha256:c48f3fbc3e92c7dd6681a258d22f23adc2eb183c8cb1557d2fcc5a024e80b094 \ + --hash=sha256:c63c3ef43f0b3fb00571cff6c3967cc261c0ebd14a0a134a12e83bdb8f49f21f \ + --hash=sha256:c6c45a2d2b68c51fe3d9352733fe048291e483376c94f7723458cfd7b473136b \ + --hash=sha256:caa1afc70a02645809c744eefb7d6ee8fef7e2fad170ffdeacca267fd2674f13 \ + --hash=sha256:cc435d059f926fdc5b05822b1be4ff2a3a040f3ae0a7bbbe672babb468944722 \ + --hash=sha256:cf693eb4a08eccc1a1b636e4392322582db2a47470d52e824b25eca7a3977b53 \ + --hash=sha256:cf71343646756a072b85f228d35b1d7407da1669a3de3cf47f8bbafe0c8183a4 \ + --hash=sha256:d08f63561c8a695afec4975fae445245386d645e3e446e6f260e81663bfd2e38 \ + --hash=sha256:d29ddefeab1791e3c751e0189d5f4b3dbc0bbe033b06e9c333dca1f99e1d523e \ + --hash=sha256:d7f5e15c953ace2e8dde9824bdab4bec50adb91a5663df08d7d994240ae6fa31 \ + --hash=sha256:d858532212f0650be12b6042ff4378dc2efbb7792a286bee4489eaa7ba010586 \ + --hash=sha256:d97dd44683802000277bbf142fd9f6b271746b4846d0acaf0cefa6b2eaf2a7ad \ + --hash=sha256:dcdc88b6b01015da066da3fb76545e8bb9a6880a5ebf89e0f0b2e3ca557b3ab7 \ + --hash=sha256:dd609fafdcdde6e67a139898196698af37438b035b25ad63704fd9097d9a3482 \ + --hash=sha256:defa2c0c68734f4a82028c26bcc85e6b92cced99866af118cd6a89b734ad8e0d \ + --hash=sha256:e22260a4741a0e7a206e175232867b48a16e0401ef5bce3c67ca5b9705879066 \ + --hash=sha256:e225a6a14ecf44499aadea165299092ab0cba918bb9ccd9304eab1138844490b \ + --hash=sha256:e3df0bc35e746cce42579826b89579d13fd27c3d5319a6afca9893a9b784ff1b \ + --hash=sha256:e6fcc026a3f27c1282c7ed24b7fcac82cdd70a0e84cc848c0841a3ab1e3dea2d \ + --hash=sha256:e782379c2028a3611285a795b89b99a52722946d19fc06f002f8b53e3ea26ea9 \ + --hash=sha256:e8cdd52744f680346ff8c1ecdad5f4d11117e1724d4f4e1874f3a67598821069 \ + --hash=sha256:e9616f5bd2595f7f4a04b67039d890348ab826e943a9bfdbe4938d0eba606971 \ + --hash=sha256:e98c4c07ee4c4b3acf787e91b27688409d918212dfd34c872201273fdd5a0e18 \ + --hash=sha256:ebdab79f42c5961682654b851f3f0fc68e6cc7cd8727c2ac4ffff955154123c1 \ + --hash=sha256:f0f17f2ce0f3529177a5fff5525204fad7b43dd437d017dd0317f2746773443d \ + --hash=sha256:f4e56860a5af16a0fcfa070a0a20c42fbb2012eed1eb5ceeddcc7f8079214281 six==1.16.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254 @@ -777,9 +854,18 @@ sphinxcontrib-qthelp==1.0.6 ; python_version >= "3.9" and python_full_version != sphinxcontrib-serializinghtml==1.1.9 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:0c64ff898339e1fac29abd2bf5f11078f3ec413cfe9c046d3120d7ca65530b54 \ --hash=sha256:9b36e503703ff04f20e9675771df105e58aa029cfcbc23b8ed716019b7416ae1 +stack-data==0.6.3 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9 \ + --hash=sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695 tinycss2==1.2.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:2b80a96d41e7c3914b8cda8bc7f705a4d9c49275616e886103dd839dfc847847 \ --hash=sha256:8cff3a8f066c2ec677c06dbc7b45619804a6938478d9d73c284b29d14ecb0627 +tokenize-rt==5.2.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:9fe80f8a5c1edad2d3ede0f37481cc0cc1538a2f442c9c2f9e4feacd2792d054 \ + --hash=sha256:b79d41a65cfec71285433511b50271b05da3584a1da144a0752e9c621a285289 +tomli==2.0.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "3.11" \ + --hash=sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc \ + --hash=sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f tornado==6.3.3 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:1bd19ca6c16882e4d37368e0152f99c099bad93e0950ce55e71daed74045908f \ --hash=sha256:22d3c2fa10b5793da13c807e6fc38ff49a4f6e1e3868b0a6f4164768bb8e20f5 \ @@ -801,9 +887,121 @@ typing-extensions==4.8.0 ; python_version >= "3.9" and python_full_version != "3 urllib3==2.0.6 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:7a7c7003b000adf9e7ca2a377c9688bbc54ed41b985789ed576570342a375cd2 \ --hash=sha256:b19e1a85d206b56d7df1d5e683df4a7725252a964e3993648dd0fb5a1c157564 +wcwidth==0.2.8 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:77f719e01648ed600dfa5402c347481c0992263b81a027344f3e1ba25493a704 \ + --hash=sha256:8705c569999ffbb4f6a87c6d1b80f324bd6db952f5eb0b95bc07517f4c1813d4 webencodings==0.5.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ --hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 +xxhash==3.4.1 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "4.0" \ + --hash=sha256:00f2fdef6b41c9db3d2fc0e7f94cb3db86693e5c45d6de09625caad9a469635b \ + --hash=sha256:0379d6cf1ff987cd421609a264ce025e74f346e3e145dd106c0cc2e3ec3f99a9 \ + --hash=sha256:0aac5010869240e95f740de43cd6a05eae180c59edd182ad93bf12ee289484fa \ + --hash=sha256:0c786a6cd74e8765c6809892a0d45886e7c3dc54de4985b4a5eb8b630f3b8e3b \ + --hash=sha256:0e041ce5714f95251a88670c114b748bca3bf80cc72400e9f23e6d0d59cf2681 \ + --hash=sha256:10e0a619cdd1c0980e25eb04e30fe96cf8f4324758fa497080af9c21a6de573f \ + --hash=sha256:11f11357c86d83e53719c592021fd524efa9cf024dc7cb1dfb57bbbd0d8713f2 \ + --hash=sha256:1d03f1c0d16d24ea032e99f61c552cb2b77d502e545187338bea461fde253583 \ + --hash=sha256:1d0ae4c2e7698adef58710d6e7a32ff518b66b98854b1c68e70eee504ad061d8 \ + --hash=sha256:200a5a3ad9c7c0c02ed1484a1d838b63edcf92ff538770ea07456a3732c577f4 \ + --hash=sha256:2070b6d5bbef5ee031666cf21d4953c16e92c2f8a24a94b5c240f8995ba3b1d0 \ + --hash=sha256:21287bcdd299fdc3328cc0fbbdeaa46838a1c05391264e51ddb38a3f5b09611f \ + --hash=sha256:23cfd9ca09acaf07a43e5a695143d9a21bf00f5b49b15c07d5388cadf1f9ce11 \ + --hash=sha256:248d3e83d119770f96003271fe41e049dd4ae52da2feb8f832b7a20e791d2920 \ + --hash=sha256:25dc66be3db54f8a2d136f695b00cfe88018e59ccff0f3b8f545869f376a8a46 \ + --hash=sha256:2a8ba6181514681c2591840d5632fcf7356ab287d4aff1c8dea20f3c78097088 \ + --hash=sha256:2be491723405e15cc099ade1280133ccfbf6322d2ef568494fb7d07d280e7eee \ + --hash=sha256:312eba88ffe0a05e332e3a6f9788b73883752be63f8588a6dc1261a3eaaaf2b2 \ + --hash=sha256:36ad4457644c91a966f6fe137d7467636bdc51a6ce10a1d04f365c70d6a16d7e \ + --hash=sha256:3b685fab18876b14a8f94813fa2ca80cfb5ab6a85d31d5539b7cd749ce9e3624 \ + --hash=sha256:4178f78d70e88f1c4a89ff1ffe9f43147185930bb962ee3979dba15f2b1cc799 \ + --hash=sha256:419ffe34c17ae2df019a4685e8d3934d46b2e0bbe46221ab40b7e04ed9f11137 \ + --hash=sha256:41ddeae47cf2828335d8d991f2d2b03b0bdc89289dc64349d712ff8ce59d0647 \ + --hash=sha256:431625fad7ab5649368c4849d2b49a83dc711b1f20e1f7f04955aab86cd307bc \ + --hash=sha256:43984c0a92f06cac434ad181f329a1445017c33807b7ae4f033878d860a4b0f2 \ + --hash=sha256:450401f42bbd274b519d3d8dcf3c57166913381a3d2664d6609004685039f9d3 \ + --hash=sha256:4603a0f642a1e8d7f3ba5c4c25509aca6a9c1cc16f85091004a7028607ead663 \ + --hash=sha256:4c76a77dbd169450b61c06fd2d5d436189fc8ab7c1571d39265d4822da16df22 \ + --hash=sha256:4cb11d8debab1626181633d184b2372aaa09825bde709bf927704ed72765bed1 \ + --hash=sha256:543c7fcbc02bbb4840ea9915134e14dc3dc15cbd5a30873a7a5bf66039db97ec \ + --hash=sha256:562d8b8f783c6af969806aaacf95b6c7b776929ae26c0cd941d54644ea7ef51e \ + --hash=sha256:58c49083801885273e262c0f5bbeac23e520564b8357fbb18fb94ff09d3d3ea5 \ + --hash=sha256:595b252943b3552de491ff51e5bb79660f84f033977f88f6ca1605846637b7c6 \ + --hash=sha256:5bef2a7dc7b4f4beb45a1edbba9b9194c60a43a89598a87f1a0226d183764189 \ + --hash=sha256:5dab508ac39e0ab988039bc7f962c6ad021acd81fd29145962b068df4148c476 \ + --hash=sha256:6066d88c9329ab230e18998daec53d819daeee99d003955c8db6fc4971b45ca3 \ + --hash=sha256:6127813abc1477f3a83529b6bbcfeddc23162cece76fa69aee8f6a8a97720562 \ + --hash=sha256:64da57d5ed586ebb2ecdde1e997fa37c27fe32fe61a656b77fabbc58e6fbff6e \ + --hash=sha256:665a65c2a48a72068fcc4d21721510df5f51f1142541c890491afc80451636d2 \ + --hash=sha256:672b273040d5d5a6864a36287f3514efcd1d4b1b6a7480f294c4b1d1ee1b8de0 \ + --hash=sha256:696b4e18b7023527d5c50ed0626ac0520edac45a50ec7cf3fc265cd08b1f4c03 \ + --hash=sha256:6a9ff50a3cf88355ca4731682c168049af1ca222d1d2925ef7119c1a78e95b3b \ + --hash=sha256:6d3472fd4afef2a567d5f14411d94060099901cd8ce9788b22b8c6f13c606a93 \ + --hash=sha256:6d42b24d1496deb05dee5a24ed510b16de1d6c866c626c2beb11aebf3be278b9 \ + --hash=sha256:6e66df260fed01ed8ea790c2913271641c58481e807790d9fca8bfd5a3c13844 \ + --hash=sha256:6fa45e8cbfbadb40a920fe9ca40c34b393e0b067082d94006f7f64e70c7490a6 \ + --hash=sha256:719a378930504ab159f7b8e20fa2aa1896cde050011af838af7e7e3518dd82de \ + --hash=sha256:71be94265b6c6590f0018bbf73759d21a41c6bda20409782d8117e76cd0dfa8b \ + --hash=sha256:743612da4071ff9aa4d055f3f111ae5247342931dedb955268954ef7201a71ff \ + --hash=sha256:74fb5cb9406ccd7c4dd917f16630d2e5e8cbbb02fc2fca4e559b2a47a64f4940 \ + --hash=sha256:7688d7c02149a90a3d46d55b341ab7ad1b4a3f767be2357e211b4e893efbaaf6 \ + --hash=sha256:7a97322e9a7440bf3c9805cbaac090358b43f650516486746f7fa482672593df \ + --hash=sha256:8106d88da330f6535a58a8195aa463ef5281a9aa23b04af1848ff715c4398fb4 \ + --hash=sha256:8c59f3e46e7daf4c589e8e853d700ef6607afa037bfad32c390175da28127e8c \ + --hash=sha256:8cc07256eff0795e0f642df74ad096f8c5d23fe66bc138b83970b50fc7f7f6c5 \ + --hash=sha256:911035345932a153c427107397c1518f8ce456f93c618dd1c5b54ebb22e73747 \ + --hash=sha256:91dbfa55346ad3e18e738742236554531a621042e419b70ad8f3c1d9c7a16e7f \ + --hash=sha256:92693c487e39523a80474b0394645b393f0ae781d8db3474ccdcead0559ccf45 \ + --hash=sha256:93805bc3233ad89abf51772f2ed3355097a5dc74e6080de19706fc447da99cd3 \ + --hash=sha256:961d948b7b1c1b6c08484bbce3d489cdf153e4122c3dfb07c2039621243d8795 \ + --hash=sha256:9804b9eb254d4b8cc83ab5a2002128f7d631dd427aa873c8727dba7f1f0d1c2b \ + --hash=sha256:9c0f7b2d547d72c7eda7aa817acf8791f0146b12b9eba1d4432c531fb0352228 \ + --hash=sha256:9ecb6c987b62437c2f99c01e97caf8d25660bf541fe79a481d05732e5236719c \ + --hash=sha256:9f3025a0d5d8cf406a9313cd0d5789c77433ba2004b1c75439b67678e5136537 \ + --hash=sha256:9fd28a9da300e64e434cfc96567a8387d9a96e824a9be1452a1e7248b7763b78 \ + --hash=sha256:a15cbf3a9c40672523bdb6ea97ff74b443406ba0ab9bca10ceccd9546414bd84 \ + --hash=sha256:a162840cf4de8a7cd8720ff3b4417fbc10001eefdd2d21541a8226bb5556e3bb \ + --hash=sha256:a55e0506fdb09640a82ec4f44171273eeabf6f371a4ec605633adb2837b5d9d5 \ + --hash=sha256:a8b4977963926f60b0d4f830941c864bed16aa151206c01ad5c531636da5708e \ + --hash=sha256:a90356ead70d715fe64c30cd0969072de1860e56b78adf7c69d954b43e29d9fa \ + --hash=sha256:aabf37fb8fa27430d50507deeab2ee7b1bcce89910dd10657c38e71fee835594 \ + --hash=sha256:ac56eebb364e44c85e1d9e9cc5f6031d78a34f0092fea7fc80478139369a8b4a \ + --hash=sha256:b2746035f518f0410915e247877f7df43ef3372bf36cfa52cc4bc33e85242641 \ + --hash=sha256:b29728cff2c12f3d9f1d940528ee83918d803c0567866e062683f300d1d2eff3 \ + --hash=sha256:b41edaf05734092f24f48c0958b3c6cbaaa5b7e024880692078c6b1f8247e2fc \ + --hash=sha256:b526015a973bfbe81e804a586b703f163861da36d186627e27524f5427b0d520 \ + --hash=sha256:b5beb1c6a72fdc7584102f42c4d9df232ee018ddf806e8c90906547dfb43b2da \ + --hash=sha256:b736a2a2728ba45017cb67785e03125a79d246462dfa892d023b827007412c52 \ + --hash=sha256:b9097af00ebf429cc7c0e7d2fdf28384e4e2e91008130ccda8d5ae653db71e54 \ + --hash=sha256:bb11628470a6004dc71a09fe90c2f459ff03d611376c1debeec2d648f44cb693 \ + --hash=sha256:bbe750d512982ee7d831838a5dee9e9848f3fb440e4734cca3f298228cc957a6 \ + --hash=sha256:c09c49473212d9c87261d22c74370457cfff5db2ddfc7fd1e35c80c31a8c14ce \ + --hash=sha256:c44d584afdf3c4dbb3277e32321d1a7b01d6071c1992524b6543025fb8f4206f \ + --hash=sha256:c4bbba9b182697a52bc0c9f8ec0ba1acb914b4937cd4a877ad78a3b3eeabefb3 \ + --hash=sha256:c9e1b646af61f1fc7083bb7b40536be944f1ac67ef5e360bca2d73430186971a \ + --hash=sha256:ca7783b20e3e4f3f52f093538895863f21d18598f9a48211ad757680c3bd006f \ + --hash=sha256:d6322c4291c3ff174dcd104fae41500e75dad12be6f3085d119c2c8a80956c51 \ + --hash=sha256:d699b921af0dcde50ab18be76c0d832f803034d80470703700cb7df0fbec2832 \ + --hash=sha256:d77d09a1113899fad5f354a1eb4f0a9afcf58cefff51082c8ad643ff890e30cf \ + --hash=sha256:dd59ed668801c3fae282f8f4edadf6dc7784db6d18139b584b6d9677ddde1b6b \ + --hash=sha256:dfd7a6cc483e20b4ad90224aeb589e64ec0f31e5610ab9957ff4314270b2bf31 \ + --hash=sha256:e01226b6b6a1ffe4e6bd6d08cfcb3ca708b16f02eb06dd44f3c6e53285f03e4f \ + --hash=sha256:e17032f5a4fea0a074717fe33477cb5ee723a5f428de7563e75af64bfc1b1e10 \ + --hash=sha256:e867f68a8f381ea12858e6d67378c05359d3a53a888913b5f7d35fbf68939d5f \ + --hash=sha256:e9f749999ed80f3955a4af0eb18bb43993f04939350b07b8dd2f44edc98ffee9 \ + --hash=sha256:ebbb1616435b4a194ce3466d7247df23499475c7ed4eb2681a1fa42ff766aff6 \ + --hash=sha256:ef2e194262f5db16075caea7b3f7f49392242c688412f386d3c7b07c7733a70a \ + --hash=sha256:ef73a53fe90558a4096e3256752268a8bdc0322f4692ed928b6cd7ce06ad4fe3 \ + --hash=sha256:f1d7c69a1e9ca5faa75546fdd267f214f63f52f12692f9b3a2f6467c9e67d5e7 \ + --hash=sha256:f31ce76489f8601cc7b8713201ce94b4bd7b7ce90ba3353dccce7e9e1fee71fa \ + --hash=sha256:f3ff8dbd0ec97aec842476cb8ccc3e17dd288cd6ce3c8ef38bff83d6eb927817 \ + --hash=sha256:fa122124d2e3bd36581dd78c0efa5f429f5220313479fb1072858188bc2d5ff1 \ + --hash=sha256:faec30437919555b039a8bdbaba49c013043e8f76c999670aef146d33e05b3a0 \ + --hash=sha256:fc6dbd5fc3c9886a9e041848508b7fb65fd82f94cc793253990f81617b61fe49 \ + --hash=sha256:fc860d887c5cb2f524899fb8338e1bb3d5789f75fac179101920d9afddef284b \ + --hash=sha256:fd79d4087727daf4d5b8afe594b37d611ab95dc8e29fe1a7517320794837eb7d \ + --hash=sha256:fd7bddb3a5b86213cc3f2c61500c16945a1b80ecd572f3078ddbbe68f9dabdfb \ + --hash=sha256:fe0a98d990e433013f41827b62be9ab43e3cf18e08b1483fcc343bda0d691182 zipp==3.17.0 ; python_version >= "3.9" and python_full_version != "3.9.7" and python_version < "3.10" \ --hash=sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31 \ --hash=sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0 diff --git a/poetry.lock b/poetry.lock index ba2eede..56d5b63 100644 --- a/poetry.lock +++ b/poetry.lock @@ -4780,6 +4780,123 @@ files = [ {file = "widgetsnbextension-4.0.9.tar.gz", hash = "sha256:3c1f5e46dc1166dfd40a42d685e6a51396fd34ff878742a3e47c6f0cc4a2a385"}, ] +[[package]] +name = "xxhash" +version = "3.4.1" +description = "Python binding for xxHash" +optional = false +python-versions = ">=3.7" +files = [ + {file = "xxhash-3.4.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:91dbfa55346ad3e18e738742236554531a621042e419b70ad8f3c1d9c7a16e7f"}, + {file = "xxhash-3.4.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:665a65c2a48a72068fcc4d21721510df5f51f1142541c890491afc80451636d2"}, + {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb11628470a6004dc71a09fe90c2f459ff03d611376c1debeec2d648f44cb693"}, + {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5bef2a7dc7b4f4beb45a1edbba9b9194c60a43a89598a87f1a0226d183764189"}, + {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c0f7b2d547d72c7eda7aa817acf8791f0146b12b9eba1d4432c531fb0352228"}, + {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:00f2fdef6b41c9db3d2fc0e7f94cb3db86693e5c45d6de09625caad9a469635b"}, + {file = "xxhash-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:23cfd9ca09acaf07a43e5a695143d9a21bf00f5b49b15c07d5388cadf1f9ce11"}, + {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6a9ff50a3cf88355ca4731682c168049af1ca222d1d2925ef7119c1a78e95b3b"}, + {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f1d7c69a1e9ca5faa75546fdd267f214f63f52f12692f9b3a2f6467c9e67d5e7"}, + {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:672b273040d5d5a6864a36287f3514efcd1d4b1b6a7480f294c4b1d1ee1b8de0"}, + {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:4178f78d70e88f1c4a89ff1ffe9f43147185930bb962ee3979dba15f2b1cc799"}, + {file = "xxhash-3.4.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:9804b9eb254d4b8cc83ab5a2002128f7d631dd427aa873c8727dba7f1f0d1c2b"}, + {file = "xxhash-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c09c49473212d9c87261d22c74370457cfff5db2ddfc7fd1e35c80c31a8c14ce"}, + {file = "xxhash-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:ebbb1616435b4a194ce3466d7247df23499475c7ed4eb2681a1fa42ff766aff6"}, + {file = "xxhash-3.4.1-cp310-cp310-win_arm64.whl", hash = "sha256:25dc66be3db54f8a2d136f695b00cfe88018e59ccff0f3b8f545869f376a8a46"}, + {file = "xxhash-3.4.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:58c49083801885273e262c0f5bbeac23e520564b8357fbb18fb94ff09d3d3ea5"}, + {file = "xxhash-3.4.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b526015a973bfbe81e804a586b703f163861da36d186627e27524f5427b0d520"}, + {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36ad4457644c91a966f6fe137d7467636bdc51a6ce10a1d04f365c70d6a16d7e"}, + {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:248d3e83d119770f96003271fe41e049dd4ae52da2feb8f832b7a20e791d2920"}, + {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2070b6d5bbef5ee031666cf21d4953c16e92c2f8a24a94b5c240f8995ba3b1d0"}, + {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2746035f518f0410915e247877f7df43ef3372bf36cfa52cc4bc33e85242641"}, + {file = "xxhash-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2a8ba6181514681c2591840d5632fcf7356ab287d4aff1c8dea20f3c78097088"}, + {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:0aac5010869240e95f740de43cd6a05eae180c59edd182ad93bf12ee289484fa"}, + {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4cb11d8debab1626181633d184b2372aaa09825bde709bf927704ed72765bed1"}, + {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b29728cff2c12f3d9f1d940528ee83918d803c0567866e062683f300d1d2eff3"}, + {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:a15cbf3a9c40672523bdb6ea97ff74b443406ba0ab9bca10ceccd9546414bd84"}, + {file = "xxhash-3.4.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6e66df260fed01ed8ea790c2913271641c58481e807790d9fca8bfd5a3c13844"}, + {file = "xxhash-3.4.1-cp311-cp311-win32.whl", hash = "sha256:e867f68a8f381ea12858e6d67378c05359d3a53a888913b5f7d35fbf68939d5f"}, + {file = "xxhash-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:200a5a3ad9c7c0c02ed1484a1d838b63edcf92ff538770ea07456a3732c577f4"}, + {file = "xxhash-3.4.1-cp311-cp311-win_arm64.whl", hash = "sha256:1d03f1c0d16d24ea032e99f61c552cb2b77d502e545187338bea461fde253583"}, + {file = "xxhash-3.4.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c4bbba9b182697a52bc0c9f8ec0ba1acb914b4937cd4a877ad78a3b3eeabefb3"}, + {file = "xxhash-3.4.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9fd28a9da300e64e434cfc96567a8387d9a96e824a9be1452a1e7248b7763b78"}, + {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6066d88c9329ab230e18998daec53d819daeee99d003955c8db6fc4971b45ca3"}, + {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93805bc3233ad89abf51772f2ed3355097a5dc74e6080de19706fc447da99cd3"}, + {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:64da57d5ed586ebb2ecdde1e997fa37c27fe32fe61a656b77fabbc58e6fbff6e"}, + {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a97322e9a7440bf3c9805cbaac090358b43f650516486746f7fa482672593df"}, + {file = "xxhash-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bbe750d512982ee7d831838a5dee9e9848f3fb440e4734cca3f298228cc957a6"}, + {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fd79d4087727daf4d5b8afe594b37d611ab95dc8e29fe1a7517320794837eb7d"}, + {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:743612da4071ff9aa4d055f3f111ae5247342931dedb955268954ef7201a71ff"}, + {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:b41edaf05734092f24f48c0958b3c6cbaaa5b7e024880692078c6b1f8247e2fc"}, + {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:a90356ead70d715fe64c30cd0969072de1860e56b78adf7c69d954b43e29d9fa"}, + {file = "xxhash-3.4.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ac56eebb364e44c85e1d9e9cc5f6031d78a34f0092fea7fc80478139369a8b4a"}, + {file = "xxhash-3.4.1-cp312-cp312-win32.whl", hash = "sha256:911035345932a153c427107397c1518f8ce456f93c618dd1c5b54ebb22e73747"}, + {file = "xxhash-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:f31ce76489f8601cc7b8713201ce94b4bd7b7ce90ba3353dccce7e9e1fee71fa"}, + {file = "xxhash-3.4.1-cp312-cp312-win_arm64.whl", hash = "sha256:b5beb1c6a72fdc7584102f42c4d9df232ee018ddf806e8c90906547dfb43b2da"}, + {file = "xxhash-3.4.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6d42b24d1496deb05dee5a24ed510b16de1d6c866c626c2beb11aebf3be278b9"}, + {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b685fab18876b14a8f94813fa2ca80cfb5ab6a85d31d5539b7cd749ce9e3624"}, + {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:419ffe34c17ae2df019a4685e8d3934d46b2e0bbe46221ab40b7e04ed9f11137"}, + {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0e041ce5714f95251a88670c114b748bca3bf80cc72400e9f23e6d0d59cf2681"}, + {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc860d887c5cb2f524899fb8338e1bb3d5789f75fac179101920d9afddef284b"}, + {file = "xxhash-3.4.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:312eba88ffe0a05e332e3a6f9788b73883752be63f8588a6dc1261a3eaaaf2b2"}, + {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e01226b6b6a1ffe4e6bd6d08cfcb3ca708b16f02eb06dd44f3c6e53285f03e4f"}, + {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:9f3025a0d5d8cf406a9313cd0d5789c77433ba2004b1c75439b67678e5136537"}, + {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:6d3472fd4afef2a567d5f14411d94060099901cd8ce9788b22b8c6f13c606a93"}, + {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:43984c0a92f06cac434ad181f329a1445017c33807b7ae4f033878d860a4b0f2"}, + {file = "xxhash-3.4.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a55e0506fdb09640a82ec4f44171273eeabf6f371a4ec605633adb2837b5d9d5"}, + {file = "xxhash-3.4.1-cp37-cp37m-win32.whl", hash = "sha256:faec30437919555b039a8bdbaba49c013043e8f76c999670aef146d33e05b3a0"}, + {file = "xxhash-3.4.1-cp37-cp37m-win_amd64.whl", hash = "sha256:c9e1b646af61f1fc7083bb7b40536be944f1ac67ef5e360bca2d73430186971a"}, + {file = "xxhash-3.4.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:961d948b7b1c1b6c08484bbce3d489cdf153e4122c3dfb07c2039621243d8795"}, + {file = "xxhash-3.4.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:719a378930504ab159f7b8e20fa2aa1896cde050011af838af7e7e3518dd82de"}, + {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:74fb5cb9406ccd7c4dd917f16630d2e5e8cbbb02fc2fca4e559b2a47a64f4940"}, + {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5dab508ac39e0ab988039bc7f962c6ad021acd81fd29145962b068df4148c476"}, + {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8c59f3e46e7daf4c589e8e853d700ef6607afa037bfad32c390175da28127e8c"}, + {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cc07256eff0795e0f642df74ad096f8c5d23fe66bc138b83970b50fc7f7f6c5"}, + {file = "xxhash-3.4.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e9f749999ed80f3955a4af0eb18bb43993f04939350b07b8dd2f44edc98ffee9"}, + {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7688d7c02149a90a3d46d55b341ab7ad1b4a3f767be2357e211b4e893efbaaf6"}, + {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a8b4977963926f60b0d4f830941c864bed16aa151206c01ad5c531636da5708e"}, + {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:8106d88da330f6535a58a8195aa463ef5281a9aa23b04af1848ff715c4398fb4"}, + {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4c76a77dbd169450b61c06fd2d5d436189fc8ab7c1571d39265d4822da16df22"}, + {file = "xxhash-3.4.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:11f11357c86d83e53719c592021fd524efa9cf024dc7cb1dfb57bbbd0d8713f2"}, + {file = "xxhash-3.4.1-cp38-cp38-win32.whl", hash = "sha256:0c786a6cd74e8765c6809892a0d45886e7c3dc54de4985b4a5eb8b630f3b8e3b"}, + {file = "xxhash-3.4.1-cp38-cp38-win_amd64.whl", hash = "sha256:aabf37fb8fa27430d50507deeab2ee7b1bcce89910dd10657c38e71fee835594"}, + {file = "xxhash-3.4.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6127813abc1477f3a83529b6bbcfeddc23162cece76fa69aee8f6a8a97720562"}, + {file = "xxhash-3.4.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ef2e194262f5db16075caea7b3f7f49392242c688412f386d3c7b07c7733a70a"}, + {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71be94265b6c6590f0018bbf73759d21a41c6bda20409782d8117e76cd0dfa8b"}, + {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10e0a619cdd1c0980e25eb04e30fe96cf8f4324758fa497080af9c21a6de573f"}, + {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fa122124d2e3bd36581dd78c0efa5f429f5220313479fb1072858188bc2d5ff1"}, + {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17032f5a4fea0a074717fe33477cb5ee723a5f428de7563e75af64bfc1b1e10"}, + {file = "xxhash-3.4.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca7783b20e3e4f3f52f093538895863f21d18598f9a48211ad757680c3bd006f"}, + {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d77d09a1113899fad5f354a1eb4f0a9afcf58cefff51082c8ad643ff890e30cf"}, + {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:21287bcdd299fdc3328cc0fbbdeaa46838a1c05391264e51ddb38a3f5b09611f"}, + {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:dfd7a6cc483e20b4ad90224aeb589e64ec0f31e5610ab9957ff4314270b2bf31"}, + {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:543c7fcbc02bbb4840ea9915134e14dc3dc15cbd5a30873a7a5bf66039db97ec"}, + {file = "xxhash-3.4.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:fe0a98d990e433013f41827b62be9ab43e3cf18e08b1483fcc343bda0d691182"}, + {file = "xxhash-3.4.1-cp39-cp39-win32.whl", hash = "sha256:b9097af00ebf429cc7c0e7d2fdf28384e4e2e91008130ccda8d5ae653db71e54"}, + {file = "xxhash-3.4.1-cp39-cp39-win_amd64.whl", hash = "sha256:d699b921af0dcde50ab18be76c0d832f803034d80470703700cb7df0fbec2832"}, + {file = "xxhash-3.4.1-cp39-cp39-win_arm64.whl", hash = "sha256:2be491723405e15cc099ade1280133ccfbf6322d2ef568494fb7d07d280e7eee"}, + {file = "xxhash-3.4.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:431625fad7ab5649368c4849d2b49a83dc711b1f20e1f7f04955aab86cd307bc"}, + {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc6dbd5fc3c9886a9e041848508b7fb65fd82f94cc793253990f81617b61fe49"}, + {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ff8dbd0ec97aec842476cb8ccc3e17dd288cd6ce3c8ef38bff83d6eb927817"}, + {file = "xxhash-3.4.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef73a53fe90558a4096e3256752268a8bdc0322f4692ed928b6cd7ce06ad4fe3"}, + {file = "xxhash-3.4.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:450401f42bbd274b519d3d8dcf3c57166913381a3d2664d6609004685039f9d3"}, + {file = "xxhash-3.4.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a162840cf4de8a7cd8720ff3b4417fbc10001eefdd2d21541a8226bb5556e3bb"}, + {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b736a2a2728ba45017cb67785e03125a79d246462dfa892d023b827007412c52"}, + {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1d0ae4c2e7698adef58710d6e7a32ff518b66b98854b1c68e70eee504ad061d8"}, + {file = "xxhash-3.4.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6322c4291c3ff174dcd104fae41500e75dad12be6f3085d119c2c8a80956c51"}, + {file = "xxhash-3.4.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:dd59ed668801c3fae282f8f4edadf6dc7784db6d18139b584b6d9677ddde1b6b"}, + {file = "xxhash-3.4.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:92693c487e39523a80474b0394645b393f0ae781d8db3474ccdcead0559ccf45"}, + {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4603a0f642a1e8d7f3ba5c4c25509aca6a9c1cc16f85091004a7028607ead663"}, + {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fa45e8cbfbadb40a920fe9ca40c34b393e0b067082d94006f7f64e70c7490a6"}, + {file = "xxhash-3.4.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:595b252943b3552de491ff51e5bb79660f84f033977f88f6ca1605846637b7c6"}, + {file = "xxhash-3.4.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:562d8b8f783c6af969806aaacf95b6c7b776929ae26c0cd941d54644ea7ef51e"}, + {file = "xxhash-3.4.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:41ddeae47cf2828335d8d991f2d2b03b0bdc89289dc64349d712ff8ce59d0647"}, + {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c44d584afdf3c4dbb3277e32321d1a7b01d6071c1992524b6543025fb8f4206f"}, + {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd7bddb3a5b86213cc3f2c61500c16945a1b80ecd572f3078ddbbe68f9dabdfb"}, + {file = "xxhash-3.4.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9ecb6c987b62437c2f99c01e97caf8d25660bf541fe79a481d05732e5236719c"}, + {file = "xxhash-3.4.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:696b4e18b7023527d5c50ed0626ac0520edac45a50ec7cf3fc265cd08b1f4c03"}, + {file = "xxhash-3.4.1.tar.gz", hash = "sha256:0379d6cf1ff987cd421609a264ce025e74f346e3e145dd106c0cc2e3ec3f99a9"}, +] + [[package]] name = "zipp" version = "3.17.0" @@ -4798,4 +4915,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p [metadata] lock-version = "2.0" python-versions = ">=3.9,<3.9.7 || >3.9.7,<4.0" -content-hash = "b957e415f65376eb85aeeaacb9389be6f0d3128b5e9f3c1bd29e4d6bc898c536" +content-hash = "ce63a8a96221ad1352afcd6ed48699a67b81ada5d5c6defc99c0452796948c66" diff --git a/pyproject.toml b/pyproject.toml index 66b6a6d..1f67f54 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ lxml = "^4.9.3" httpx = "^0.24.1" cssutils = "^2.7.1" python-dotenv = "^1.0.0" +xxhash = "^3.4.1" [tool.poetry.group.dev.dependencies] diff --git a/sec_parser/processing_engine/html_tag.py b/sec_parser/processing_engine/html_tag.py index a17444d..8636daa 100644 --- a/sec_parser/processing_engine/html_tag.py +++ b/sec_parser/processing_engine/html_tag.py @@ -3,12 +3,16 @@ import warnings import bs4 +import xxhash +from frozendict import frozendict from sec_parser.exceptions import SecParserValueError from sec_parser.utils.bs4_.contains_tag import contains_tag from sec_parser.utils.bs4_.is_unary_tree import is_unary_tree from sec_parser.utils.bs4_.text_styles_metrics import compute_text_styles_metrics +TEXT_PREVIEW_LENGTH = 40 + class HtmlTag: """ @@ -41,6 +45,37 @@ def __init__( self._is_unary_tree: bool | None = None self._first_deepest_tag: HtmlTag | None | NotSetType = NotSet self._text_styles_metrics: dict[tuple[str, str], float] | None = None + self._frozen_dict: frozendict | None = None + self._source_code: str | None = None + + def get_source_code(self) -> str: + if self._source_code is None: + self._source_code = str(self._bs4) + return self._source_code + + def _generate_preview(self, text: str) -> str: + """Generate a preview of the text with a specified length.""" + text = text.replace("\n", " ").strip() + return ( + text[: TEXT_PREVIEW_LENGTH // 2] + + f"...[{len(text) - TEXT_PREVIEW_LENGTH}]..." + + text[-TEXT_PREVIEW_LENGTH // 2 :] + if len(text) > TEXT_PREVIEW_LENGTH + else text + ) + + def to_dict(self) -> frozendict: + """Compute the hash of the HTML tag.""" + if self._frozen_dict is None: + self._frozen_dict = frozendict( + { + "tag_name": self._bs4.name, + "text_preview": self._generate_preview(self.get_text()), + "html_preview": self._generate_preview(self.get_source_code()), + "html_hash": xxhash.xxh32(self.get_source_code()).hexdigest(), + }, + ) + return self._frozen_dict def get_text(self) -> str: """ diff --git a/sec_parser/semantic_elements/abstract_semantic_element.py b/sec_parser/semantic_elements/abstract_semantic_element.py index 8045e71..4a2d0ea 100644 --- a/sec_parser/semantic_elements/abstract_semantic_element.py +++ b/sec_parser/semantic_elements/abstract_semantic_element.py @@ -1,7 +1,7 @@ from __future__ import annotations from abc import ABC -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from sec_parser.exceptions import SecParserValueError @@ -37,8 +37,14 @@ def convert_from( """Convert the semantic element into another semantic element type.""" return cls(source.html_tag) + def to_dict(self) -> dict[str, Any]: + return { + "cls_name": self.__class__.__name__, + **self.html_tag.to_dict(), + } -class AbstractLevelElement(AbstractSemanticElement, ABC): + +class AbstractLevelElement(AbstractSemanticElement): """ The AbstractLevelElement class provides a level attribute to semantic elements. It represents hierarchical levels in the document structure. For instance, @@ -69,6 +75,12 @@ def convert_from( ) -> AbstractLevelElement: return cls(source.html_tag, level=level) + def to_dict(self) -> dict[str, Any]: + return { + **super().to_dict(), + "level": self.level, + } + class InvalidLevelError(SecParserValueError): pass diff --git a/sec_parser/semantic_elements/composite_semantic_element.py b/sec_parser/semantic_elements/composite_semantic_element.py index cc9125f..4dff567 100644 --- a/sec_parser/semantic_elements/composite_semantic_element.py +++ b/sec_parser/semantic_elements/composite_semantic_element.py @@ -1,6 +1,6 @@ from __future__ import annotations -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from sec_parser.semantic_elements.abstract_semantic_element import ( AbstractSemanticElement, @@ -65,3 +65,9 @@ def convert_from( html_tag=source.html_tag, inner_elements=inner_elements, ) + + def to_dict(self) -> dict[str, Any]: + return { + **super().to_dict(), + "inner_elements": len(self.inner_elements), + } diff --git a/sec_parser/semantic_elements/highlighted_text_element.py b/sec_parser/semantic_elements/highlighted_text_element.py index b6ddae2..d291ce8 100644 --- a/sec_parser/semantic_elements/highlighted_text_element.py +++ b/sec_parser/semantic_elements/highlighted_text_element.py @@ -1,7 +1,7 @@ from __future__ import annotations from dataclasses import asdict, dataclass -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Any from sec_parser.semantic_elements.abstract_semantic_element import ( AbstractSemanticElement, @@ -42,6 +42,12 @@ def convert_from( style=style, ) + def to_dict(self) -> dict[str, Any]: + return { + **super().to_dict(), + "text_style": asdict(self.style), + } + @dataclass(frozen=True) class TextStyle: diff --git a/tests/e2e/__init__.py b/tests/e2e/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/tests/e2e/_metrics.py b/tests/e2e/_metrics.py deleted file mode 100644 index fb026b1..0000000 --- a/tests/e2e/_metrics.py +++ /dev/null @@ -1,86 +0,0 @@ -from __future__ import annotations - -from statistics import mean, median, stdev - -import numpy as np -from millify import millify - - -class Metric: - def __init__(self, name="Undefined", style="dim", justify="right") -> None: - self.name = name - self.style = style - self.justify = justify - - def calculate(self, times, char_count): - raise NotImplementedError # pragma: no cover - - def visualize(self, value): - return f"{value:.3f}" - - -class MinTime(Metric): - def calculate(self, times, char_count): - return min(times) - - -class MaxTime(Metric): - def calculate(self, times, char_count): - return max(times) - - -class Average(Metric): - def calculate(self, times, char_count): - return mean(times) - - def visualize(self, value): - return f"[bold]{value:.3f}[/bold]" - - -class Median(Metric): - def calculate(self, times, char_count): - return median(times) - - -class P99(Metric): - def calculate(self, times, char_count): - return np.percentile(times, 99) - - -class StdDev(Metric): - def calculate(self, times, char_count): - return stdev(times) - - -class Threshold(Metric): - def __init__( - self, microsecond_threshold, name="Undefined", style="dim", justify="right" - ) -> None: - super().__init__(name, style, justify) - self.microsecond_threshold = microsecond_threshold - - def calculate(self, times, char_count): - return char_count * self.microsecond_threshold / 1_000_000 - - -class RatioMetric(Metric): - def __init__(self, metric1, metric2, name, style="dim", justify="right") -> None: - super().__init__(name, style, justify) - self.metric1 = metric1 - self.metric2 = metric2 - - def calculate(self, times, char_count, metrics): - value1 = metrics[self.metric1.name] - value2 = metrics[self.metric2.name] - return (value1 / value2) * 100 - - def visualize(self, value): - return f"{value:.0f} %" - - -class Size(Metric): - def calculate(self, times, char_count): - return char_count - - def visualize(self, value): - return millify(value) diff --git a/tests/e2e/sec_parser.py b/tests/e2e/sec_parser.py deleted file mode 100644 index ed223c0..0000000 --- a/tests/e2e/sec_parser.py +++ /dev/null @@ -1,246 +0,0 @@ -from __future__ import annotations - -import hashlib -import multiprocessing -import sys -import time -from multiprocessing import Manager, Pool -from pathlib import Path - -from rich import print -from rich.console import Console -from rich.table import Table - -import sec_parser as sp -from tests.e2e._metrics import ( - P99, - Average, - MaxTime, - Median, - RatioMetric, - Size, - Threshold, -) - -# Specify the metric that determines the test outcome -# A test will pass or fail based on this metric -TEST_METRIC = "Average/Threshold" -TEST_METRIC_SINGLE_RUN = "Time/Threshold" - -ALLOWED_MICROSECONDS_PER_CHAR = 1 - -DEFAULT_TESTS_PER_CORE = 2 - -# Define metrics to be used -METRICS = [ - Average("Average", "blue"), - Threshold(ALLOWED_MICROSECONDS_PER_CHAR, "Threshold", "blue"), - RatioMetric( - Average("Average"), - Threshold(ALLOWED_MICROSECONDS_PER_CHAR, "Threshold"), - "Average/Threshold", - "blue", - ), - Median("Median", "dim"), - P99("P99", "dim"), - MaxTime("Max Time", "dim"), - Size("Size", "dim"), -] - -METRICS_SINGLE_RUN = [ - Average("Time", "blue"), - Threshold(ALLOWED_MICROSECONDS_PER_CHAR, "Threshold", "blue"), - RatioMetric( - Average("Time"), - Threshold(ALLOWED_MICROSECONDS_PER_CHAR, "Threshold"), - "Time/Threshold", - "blue", - ), - Size("Size", "dim"), -] - - -# Function to get document name from hash -def get_document_name(document_hash, hash_to_filename): - return hash_to_filename.get(document_hash, document_hash) - - -# Function to execute a single test -def execute_test(html_input, execution_times): - start_time = time.time() - elements = sp.SecParser().parse(html_input) - tree = sp.TreeBuilder().build(elements) - assert len(tree.root_nodes) - elapsed_time = time.time() - start_time - - html_hash = hashlib.sha256(html_input.encode()).hexdigest() - execution_times[html_hash].append(elapsed_time) - - -# Function to execute multiple tests -def execute_multiple_tests(html_inputs, execution_times): - for html_input in html_inputs: - execute_test(html_input, execution_times) - - -# Function to render the results table -def render_table(METRICS, metrics, hash_to_filename): - console = Console() - - # Initialize table with headers - table = Table(show_header=True, header_style="bold magenta") - table.add_column("Document", style="dim", justify="right") - for metric in METRICS: - table.add_column(metric.name, style=metric.style, justify=metric.justify) - - # Populate table with rows - for document_hash, metric_values in metrics.items(): - document_name = get_document_name(document_hash, hash_to_filename) - row_data = [document_name] - for metric in METRICS: - value = metric_values[metric.name] - row_data.append(metric.visualize(value)) - table.add_row(*row_data) - - # Display the table in the terminal - console.print(table) - - -# Main execution -if __name__ == "__main__": - tests_per_core = DEFAULT_TESTS_PER_CORE - core_count: int | None = None - - # Integer variable to limit the number of documents to test. - # For example, set to 1 for a quick smoke test. - limit_documents: int | None = None - - for arg in sys.argv[1:]: - if arg.startswith("--tests-per-core="): - tests_per_core = int(arg.partition("=")[2]) - elif arg.startswith("--cores="): - core_count = int(arg.partition("=")[2]) - elif arg.startswith("--limit-documents="): - limit_documents = int(arg.partition("=")[2]) - - if core_count is None: - core_count = multiprocessing.cpu_count() - - if core_count == 1 and tests_per_core == 1: - METRICS = METRICS_SINGLE_RUN - TEST_METRIC = TEST_METRIC_SINGLE_RUN - - # Load test data - test_data_htmls = {} - test_data_path = Path(__file__).parent / "test_data" - hash_to_filename = {} - file_counter = 0 - for html_file in test_data_path.glob("10q_*.html"): - with open(html_file) as file: - file_content = file.read() - test_data_htmls[html_file.name] = file_content - hash_key = hashlib.sha256(file_content.encode()).hexdigest() - hash_to_filename[hash_key] = html_file.name # Populate the mapping - file_counter += 1 - if limit_documents is not None and file_counter >= limit_documents: - break - if file_counter == 0: - msg = "No test data found" - raise ValueError(msg) - - # Calculate number of tests - tests_per_file = core_count * tests_per_core - total_tests_ran = tests_per_file * file_counter - - # Prepare test data - example_htmls: list[str] = list(test_data_htmls.values()) * tests_per_file - - # Initialize shared data structures - manager = Manager() - execution_times = manager.dict( - { - hashlib.sha256(doc.encode()).hexdigest(): manager.list() - for doc in example_htmls - }, - ) - - # Execute tests in parallel - with Pool(processes=core_count) as pool: - pool.starmap( - execute_multiple_tests, - [ - (example_htmls[i::core_count], execution_times) - for i in range(core_count) - ], - ) - - # Initialize metrics and failed documents list - metrics = {} - failed_documents = [] - - # Calculate metrics for each document - for document_hash, times in execution_times.items(): - times = list(times) - if not times: - continue # Skip if no timing data collected - - # Find the document corresponding to the hash - example_doc = next( - ( - doc - for doc in example_htmls - if hashlib.sha256(doc.encode()).hexdigest() == document_hash - ), - None, - ) - if example_doc is None: - msg = f"Could not find document with hash {document_hash}" - raise Exception(msg) - char_count = len(example_doc) - - # Calculate each metric for the document - metrics[document_hash] = {} - for metric in METRICS: - if isinstance(metric, RatioMetric): - metrics[document_hash][metric.name] = metric.calculate( - times, char_count, metrics[document_hash], - ) - else: - metrics[document_hash][metric.name] = metric.calculate( - times, char_count, - ) - - # Check if the document failed the threshold - if metrics[document_hash][TEST_METRIC] > 100: - failed_documents.append(document_hash) - - - # Print initial information - if METRICS != METRICS_SINGLE_RUN: - print( - f"- Each document underwent [bold]{tests_per_file}[/bold] tests, totaling [bold]{total_tests_ran}[/bold] tests across [bold]{core_count}[/bold] cores.", - "- The 'Threshold' in the table signifies the maximum allowable parsing time (in seconds) per document.", - f"- This threshold was determined based on a set rate of [bold]{ALLOWED_MICROSECONDS_PER_CHAR}[/bold] microseconds per HTML character.", - "- Duration metrics (e.g. 'Average', 'Median', 'P99') are measured in seconds, while 'Size' is measured in HTML characters.", - sep="\n", - ) - else: - print( - "- The 'Threshold' in the table signifies the maximum allowable parsing time (in seconds) per document.", - f"- This threshold was determined based on a set rate of [bold]{ALLOWED_MICROSECONDS_PER_CHAR}[/bold] microseconds per HTML character.", - "- Duration metrics (e.g. 'Time') are measured in seconds, while 'Size' is measured in HTML characters.", - sep="\n", - ) - - # Render the results table - render_table(METRICS, metrics, hash_to_filename) - - # Print the documents that failed the threshold - if failed_documents: - print("\nDocuments that failed the threshold:") - for doc in failed_documents: - print(get_document_name(doc, hash_to_filename)) - sys.exit(1) - else: - print("\nAll documents passed the threshold.") - sys.exit(0) diff --git a/tests/e2e/test_data/10q_apple_000032019323000077.html b/tests/e2e/test_data/10q_apple_000032019323000077.html deleted file mode 100644 index c558d57..0000000 --- a/tests/e2e/test_data/10q_apple_000032019323000077.html +++ /dev/null @@ -1,22 +0,0 @@ - -PART I — FINANCIAL INFORMATION
Item 1. Financial Statements
Apple Inc.
CONDENSED CONSOLIDATED STATEMENTS OF OPERATIONS (Unaudited)
(In millions, except number of shares which are reflected in thousands and per share amounts)

Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Net sales:
Products$60,584 $63,355 $230,901 $245,241 
Services21,213 19,604 62,886 58,941 
Total net sales81,797 82,959 293,787 304,182 
Cost of sales:
Products39,136 41,485 146,696 155,084 
Services6,248 5,589 18,370 16,411 
Total cost of sales45,384 47,074 165,066 171,495 
Gross margin36,413 35,885 128,721 132,687 
Operating expenses:
Research and development7,442 6,797 22,608 19,490 
Selling, general and administrative5,973 6,012 18,781 18,654 
Total operating expenses13,415 12,809 41,389 38,144 
Operating income22,998 23,076 87,332 94,543 
Other income/(expense), net(265)(10)(594)(97)
Income before provision for income taxes22,733 23,066 86,738 94,446 
Provision for income taxes2,852 3,624 12,699 15,364 
Net income$19,881 $19,442 $74,039 $79,082 
Earnings per share:
Basic$1.27 $1.20 $4.69 $4.86 
Diluted$1.26 $1.20 $4.67 $4.82 
Shares used in computing earnings per share:
Basic15,697,614 16,162,945 15,792,497 16,277,824 
Diluted15,775,021 16,262,203 15,859,263 16,394,937 
See accompanying Notes to Condensed Consolidated Financial Statements.
Apple Inc. | Q3 2023 Form 10-Q | 1


Apple Inc.
CONDENSED CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Unaudited)
(In millions)

Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Net income
$19,881 $19,442 $74,039 $79,082 
Other comprehensive income/(loss):
Change in foreign currency translation, net of tax
(385)(721)(494)(1,102)
Change in unrealized gains/losses on derivative instruments, net of tax:
Change in fair value of derivative instruments509 852 (492)1,548 
Adjustment for net (gains)/losses realized and included in net income103 121 (1,854)(87)
Total change in unrealized gains/losses on derivative instruments
612 973 (2,346)1,461 
Change in unrealized gains/losses on marketable debt securities, net of tax:
Change in fair value of marketable debt securities
(340)(3,150)1,963 (9,959)
Adjustment for net (gains)/losses realized and included in net income
58 95 185 140 
Total change in unrealized gains/losses on marketable debt securities
(282)(3,055)2,148 (9,819)
Total other comprehensive income/(loss)(55)(2,803)(692)(9,460)
Total comprehensive income$19,826 $16,639 $73,347 $69,622 
See accompanying Notes to Condensed Consolidated Financial Statements.
Apple Inc. | Q3 2023 Form 10-Q | 2


Apple Inc.
CONDENSED CONSOLIDATED BALANCE SHEETS (Unaudited)
(In millions, except number of shares which are reflected in thousands and par value)

July 1,
2023
September 24,
2022
ASSETS:
Current assets:
Cash and cash equivalents$28,408 $23,646 
Marketable securities34,074 24,658 
Accounts receivable, net19,549 28,184 
Inventories7,351 4,946 
Vendor non-trade receivables19,637 32,748 
Other current assets13,640 21,223 
Total current assets122,659 135,405 
Non-current assets:
Marketable securities104,061 120,805 
Property, plant and equipment, net43,550 42,117 
Other non-current assets64,768 54,428 
Total non-current assets
212,379 217,350 
Total assets
$335,038 $352,755 
LIABILITIES AND SHAREHOLDERS’ EQUITY:
Current liabilities:
Accounts payable$46,699 $64,115 
Other current liabilities58,897 60,845 
Deferred revenue8,158 7,912 
Commercial paper3,993 9,982 
Term debt7,216 11,128 
Total current liabilities124,963 153,982 
Non-current liabilities:
Term debt
98,071 98,959 
Other non-current liabilities
51,730 49,142 
Total non-current liabilities
149,801 148,101 
Total liabilities
274,764 302,083 
Commitments and contingencies
Shareholders’ equity:
Common stock and additional paid-in capital, $0.00001 par value: 50,400,000 shares authorized; 15,647,868 and 15,943,425 shares issued and outstanding, respectively
70,667 64,849 
Retained earnings/(Accumulated deficit)1,408 (3,068)
Accumulated other comprehensive income/(loss)(11,801)(11,109)
Total shareholders’ equity60,274 50,672 
Total liabilities and shareholders’ equity$335,038 $352,755 
See accompanying Notes to Condensed Consolidated Financial Statements.
Apple Inc. | Q3 2023 Form 10-Q | 3


Apple Inc.
CONDENSED CONSOLIDATED STATEMENTS OF SHAREHOLDERS’ EQUITY (Unaudited)
(In millions, except per share amounts)

Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Total shareholders’ equity, beginning balances$62,158 $67,399 $50,672 $63,090 
Common stock and additional paid-in capital:
Beginning balances69,568 61,181 64,849 57,365 
Common stock issued
  690 593 
Common stock withheld related to net share settlement of equity awards
(1,595)(1,371)(3,310)(2,783)
Share-based compensation2,694 2,305 8,438 6,940 
Ending balances70,667 62,115 70,667 62,115 
Retained earnings/(Accumulated deficit):
Beginning balances4,336 12,712 (3,068)5,562 
Net income19,881 19,442 74,039 79,082 
Dividends and dividend equivalents declared(3,811)(3,760)(11,207)(11,058)
Common stock withheld related to net share settlement of equity awards
(858)(1,403)(1,988)(3,323)
Common stock repurchased(18,140)(21,702)(56,368)(64,974)
Ending balances1,408 5,289 1,408 5,289 
Accumulated other comprehensive income/(loss):
Beginning balances(11,746)(6,494)(11,109)163 
Other comprehensive income/(loss)(55)(2,803)(692)(9,460)
Ending balances(11,801)(9,297)(11,801)(9,297)
Total shareholders’ equity, ending balances$60,274 $58,107 $60,274 $58,107 
Dividends and dividend equivalents declared per share or RSU$0.24 $0.23 $0.70 $0.67 
See accompanying Notes to Condensed Consolidated Financial Statements.
Apple Inc. | Q3 2023 Form 10-Q | 4


Apple Inc.
CONDENSED CONSOLIDATED STATEMENTS OF CASH FLOWS (Unaudited)
(In millions)

Nine Months Ended
July 1,
2023
June 25,
2022
Cash, cash equivalents and restricted cash, beginning balances$24,977 $35,929 
Operating activities:
Net income74,039 79,082 
Adjustments to reconcile net income to cash generated by operating activities:
Depreciation and amortization8,866 8,239 
Share-based compensation expense8,208 6,760 
Other(1,651)2,695 
Changes in operating assets and liabilities:
Accounts receivable, net7,609 4,561 
Inventories(2,570)1,049 
Vendor non-trade receivables13,111 4,789 
Other current and non-current assets(4,863)(3,289)
Accounts payable(16,790)(6,108)
Other current and non-current liabilities2,986 246 
Cash generated by operating activities88,945 98,024 
Investing activities:
Purchases of marketable securities(20,956)(70,178)
Proceeds from maturities of marketable securities27,857 24,203 
Proceeds from sales of marketable securities3,959 33,609 
Payments for acquisition of property, plant and equipment(8,796)(7,419)
Other(753)(1,352)
Cash generated by/(used in) investing activities1,311 (21,137)
Financing activities:
Payments for taxes related to net share settlement of equity awards(5,119)(5,915)
Payments for dividends and dividend equivalents(11,267)(11,138)
Repurchases of common stock(56,547)(64,974)
Proceeds from issuance of term debt, net5,228  
Repayments of term debt(11,151)(6,750)
Proceeds from/(Repayments of) commercial paper, net(5,971)4,970 
Other(508)(148)
Cash used in financing activities(85,335)(83,955)
Increase/(Decrease) in cash, cash equivalents and restricted cash4,921 (7,068)
Cash, cash equivalents and restricted cash, ending balances$29,898 $28,861 
Supplemental cash flow disclosure:
Cash paid for income taxes, net$7,020 $12,251 
Cash paid for interest$2,590 $1,910 
See accompanying Notes to Condensed Consolidated Financial Statements.
Apple Inc. | Q3 2023 Form 10-Q | 5


Apple Inc.
Notes to Condensed Consolidated Financial Statements (Unaudited)
Note 1 – Summary of Significant Accounting Policies
Basis of Presentation and Preparation
The condensed consolidated financial statements include the accounts of Apple Inc. and its wholly owned subsidiaries (collectively “Apple” or the “Company”). Intercompany accounts and transactions have been eliminated. In the opinion of the Company’s management, the condensed consolidated financial statements reflect all adjustments, which are normal and recurring in nature, necessary for fair financial statement presentation. The preparation of these condensed consolidated financial statements and accompanying notes in conformity with U.S. generally accepted accounting principles requires management to make estimates and assumptions that affect the amounts reported. Actual results could differ materially from those estimates. Certain prior period amounts in the condensed consolidated financial statements and accompanying notes have been reclassified to conform to the current period’s presentation. These condensed consolidated financial statements and accompanying notes should be read in conjunction with the Company’s annual consolidated financial statements and accompanying notes included in its Annual Report on Form 10-K for the fiscal year ended September 24, 2022.
The Company’s fiscal year is the 52- or 53-week period that ends on the last Saturday of September. An additional week is included in the first fiscal quarter every five or six years to realign the Company’s fiscal quarters with calendar quarters, which occurred in the first fiscal quarter of 2023. The Company’s fiscal years 2023 and 2022 span 53 and 52 weeks, respectively. Unless otherwise stated, references to particular years, quarters, months and periods refer to the Company’s fiscal years ended in September and the associated quarters, months and periods of those fiscal years.
Earnings Per Share
The following table shows the computation of basic and diluted earnings per share for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 (net income in millions and shares in thousands):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Numerator:
Net income$19,881 $19,442 $74,039 $79,082 
Denominator:
Weighted-average basic shares outstanding15,697,614 16,162,945 15,792,497 16,277,824 
Effect of dilutive securities77,407 99,258 66,766 117,113 
Weighted-average diluted shares15,775,021 16,262,203 15,859,263 16,394,937 
Basic earnings per share$1.27 $1.20 $4.69 $4.86 
Diluted earnings per share$1.26 $1.20 $4.67 $4.82 
Approximately 32 million restricted stock units (“RSUs”) were excluded from the computation of diluted earnings per share for the nine months ended July 1, 2023 because their effect would have been antidilutive.
Apple Inc. | Q3 2023 Form 10-Q | 6


Note 2 – Revenue
Net sales disaggregated by significant products and services for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 were as follows (in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
iPhone®
$39,669 $40,665 $156,778 $162,863 
Mac®
6,840 7,382 21,743 28,669 
iPad®
5,791 7,224 21,857 22,118 
Wearables, Home and Accessories8,284 8,084 30,523 31,591 
Services21,213 19,604 62,886 58,941 
Total net sales$81,797 $82,959 $293,787 $304,182 
Total net sales include $3.3 billion of revenue recognized in the three months ended July 1, 2023 that was included in deferred revenue as of April 1, 2023, $3.1 billion of revenue recognized in the three months ended June 25, 2022 that was included in deferred revenue as of March 26, 2022, $7.0 billion of revenue recognized in the nine months ended July 1, 2023 that was included in deferred revenue as of September 24, 2022, and $6.3 billion of revenue recognized in the nine months ended June 25, 2022 that was included in deferred revenue as of September 25, 2021.
The Company’s proportion of net sales by disaggregated revenue source was generally consistent for each reportable segment in Note 10, “Segment Information and Geographic Data” for the three- and nine-month periods ended July 1, 2023 and June 25, 2022, except in Greater China, where iPhone revenue represented a moderately higher proportion of net sales.
As of July 1, 2023 and September 24, 2022, the Company had total deferred revenue of $12.2 billion and $12.4 billion, respectively. As of July 1, 2023, the Company expects 67% of total deferred revenue to be realized in less than a year, 26% within one-to-two years, 6% within two-to-three years and 1% in greater than three years.
Note 3 – Financial Instruments
Cash, Cash Equivalents and Marketable Securities
The following tables show the Company’s cash, cash equivalents and marketable securities by significant investment category as of July 1, 2023 and September 24, 2022 (in millions):
July 1, 2023
Adjusted
Cost
Unrealized
Gains
Unrealized
Losses
Fair
Value
Cash and
Cash
Equivalents
Current
Marketable
Securities
Non-Current
Marketable
Securities
Cash$25,337 $$$25,337 $25,337 $ $ 
Level 1 (1):
Money market funds1,108   1,108 1,108   
Mutual funds366 15 (19)362  362  
Subtotal1,474 15 (19)1,470 1,108 362  
Level 2 (2):
U.S. Treasury securities22,274  (1,354)20,920  8,076 12,844 
U.S. agency securities5,709  (594)5,115 3 272 4,840 
Non-U.S. government securities17,588 19 (927)16,680  11,262 5,418 
Certificates of deposit and time deposits
2,315   2,315 1,960 355  
Commercial paper364   364  364  
Corporate debt securities79,621 22 (6,079)73,564  13,005 60,559 
Municipal securities713  (23)690  213 477 
Mortgage- and asset-backed securities
22,383 4 (2,299)20,088  165 19,923 
Subtotal150,967 45 (11,276)139,736 1,963 33,712 104,061 
Total (3)
$177,778 $60 $(11,295)$166,543 $28,408 $34,074 $104,061 
Apple Inc. | Q3 2023 Form 10-Q | 7


September 24, 2022
Adjusted
Cost
Unrealized
Gains
Unrealized
Losses
Fair
Value
Cash and
Cash
Equivalents
Current
Marketable
Securities
Non-Current
Marketable
Securities
Cash$18,546 $$$18,546 $18,546 $ $ 
Level 1 (1):
Money market funds2,929   2,929 2,929   
Mutual funds274  (47)227  227  
Subtotal3,203  (47)3,156 2,929 227  
Level 2 (2):
U.S. Treasury securities25,134  (1,725)23,409 338 5,091 17,980 
U.S. agency securities5,823  (655)5,168  240 4,928 
Non-U.S. government securities16,948 2 (1,201)15,749  8,806 6,943 
Certificates of deposit and time deposits
2,067   2,067 1,805 262  
Commercial paper718   718 28 690  
Corporate debt securities87,148 9 (7,707)79,450  9,023 70,427 
Municipal securities921  (35)886  266 620 
Mortgage- and asset-backed securities
22,553  (2,593)19,960  53 19,907 
Subtotal161,312 11 (13,916)147,407 2,171 24,431 120,805 
Total (3)
$183,061 $11 $(13,963)$169,109 $23,646 $24,658 $120,805 
(1)Level 1 fair value estimates are based on quoted prices in active markets for identical assets or liabilities.
(2)Level 2 fair value estimates are based on observable inputs other than quoted prices in active markets for identical assets and liabilities, quoted prices for identical or similar assets or liabilities in inactive markets, or other inputs that are observable or can be corroborated by observable market data for substantially the full term of the assets or liabilities.
(3)As of July 1, 2023 and September 24, 2022, total marketable securities included $14.1 billion and $12.7 billion, respectively, that were restricted from general use, related to the State Aid Decision (refer to Note 5, “Income Taxes”) and other agreements.
The following table shows the fair value of the Company’s non-current marketable debt securities, by contractual maturity, as of July 1, 2023 (in millions):
Due after 1 year through 5 years$76,267 
Due after 5 years through 10 years11,148 
Due after 10 years16,646 
Total fair value$104,061 
Derivative Instruments and Hedging
The Company may use derivative instruments to partially offset its business exposure to foreign exchange and interest rate risk. However, the Company may choose not to hedge certain exposures for a variety of reasons, including accounting considerations or the prohibitive economic cost of hedging particular exposures. There can be no assurance the hedges will offset more than a portion of the financial impact resulting from movements in foreign exchange or interest rates.
Foreign Exchange Risk
To protect gross margins from fluctuations in foreign currency exchange rates, the Company may enter into forward contracts, option contracts or other instruments, and may designate these instruments as cash flow hedges. The Company generally hedges portions of its forecasted foreign currency exposure associated with revenue and inventory purchases, typically for up to 12 months.
To protect the Company’s foreign currency–denominated term debt or marketable securities from fluctuations in foreign currency exchange rates, the Company may enter into forward contracts, cross-currency swaps or other instruments. The Company designates these instruments as either cash flow or fair value hedges. As of July 1, 2023, the maximum length of time over which the Company is hedging its exposure to the variability in future cash flows for term debt–related foreign currency transactions is 19 years.
Apple Inc. | Q3 2023 Form 10-Q | 8


The Company may also enter into derivative instruments that are not designated as accounting hedges to protect gross margins from certain fluctuations in foreign currency exchange rates, as well as to offset a portion of the foreign currency exchange gains and losses generated by the remeasurement of certain assets and liabilities denominated in non-functional currencies.
Interest Rate Risk
To protect the Company’s term debt or marketable securities from fluctuations in interest rates, the Company may enter into interest rate swaps, options or other instruments. The Company designates these instruments as either cash flow or fair value hedges.
The notional amounts of the Company’s outstanding derivative instruments as of July 1, 2023 and September 24, 2022 were as follows (in millions):
July 1,
2023
September 24,
2022
Derivative instruments designated as accounting hedges:
Foreign exchange contracts$45,425 $102,670 
Interest rate contracts$19,375 $20,125 
Derivative instruments not designated as accounting hedges:
Foreign exchange contracts$90,977 $185,381 
The gross fair values of the Company’s derivative assets and liabilities as of September 24, 2022 were as follows (in millions):
September 24, 2022
Fair Value of
Derivatives Designated
as Accounting Hedges
Fair Value of
Derivatives Not Designated
as Accounting Hedges
Total
Fair Value
Derivative assets (1):
Foreign exchange contracts$4,317 $2,819 $7,136 
Derivative liabilities (2):
Foreign exchange contracts$2,205 $2,547 $4,752 
Interest rate contracts$1,367 $ $1,367 
(1)Derivative assets are measured using Level 2 fair value inputs and are included in other current assets and other non-current assets in the Condensed Consolidated Balance Sheet.
(2)Derivative liabilities are measured using Level 2 fair value inputs and are included in other current liabilities and other non-current liabilities in the Condensed Consolidated Balance Sheet.
The derivative assets above represent the Company’s gross credit exposure if all counterparties failed to perform. To mitigate credit risk, the Company generally enters into collateral security arrangements that provide for collateral to be received or posted when the net fair values of certain derivatives fluctuate from contractually established thresholds. To further limit credit risk, the Company generally enters into master netting arrangements with the respective counterparties to the Company’s derivative contracts, under which the Company is allowed to settle transactions with a single net amount payable by one party to the other. As of September 24, 2022, the potential effects of these rights of set-off associated with the Company’s derivative contracts, including the effects of collateral, would be a reduction to both derivative assets and derivative liabilities of $7.8 billion, resulting in a net derivative asset of $412 million.
The carrying amounts of the Company’s hedged items in fair value hedges as of July 1, 2023 and September 24, 2022 were as follows (in millions):
July 1,
2023
September 24,
2022
Hedged assets/(liabilities):
Current and non-current marketable securities$14,863 $13,378 
Current and non-current term debt$(17,986)$(18,739)
Apple Inc. | Q3 2023 Form 10-Q | 9


Accounts Receivable
Trade Receivables
The Company has considerable trade receivables outstanding with its third-party cellular network carriers, wholesalers, retailers, resellers, small and mid-sized businesses and education, enterprise and government customers. The Company generally does not require collateral from its customers; however, the Company will require collateral or third-party credit support in certain instances to limit credit risk. In addition, when possible, the Company attempts to limit credit risk on trade receivables with credit insurance for certain customers or by requiring third-party financing, loans or leases to support credit exposure. These credit-financing arrangements are directly between the third-party financing company and the end customer. As such, the Company generally does not assume any recourse or credit risk sharing related to any of these arrangements.
As of September 24, 2022, the Company had one customer that represented 10% or more of total trade receivables, which accounted for 10%. The Company’s cellular network carriers accounted for 44% of total trade receivables as of September 24, 2022.
Vendor Non-Trade Receivables
The Company has non-trade receivables from certain of its manufacturing vendors resulting from the sale of components to these vendors who manufacture subassemblies or assemble final products for the Company. The Company purchases these components directly from suppliers. As of July 1, 2023, the Company had two vendors that individually represented 10% or more of total vendor non-trade receivables, which accounted for 54% and 14%. As of September 24, 2022, the Company had two vendors that individually represented 10% or more of total vendor non-trade receivables, which accounted for 54% and 13%.
Note 4 – Condensed Consolidated Financial Statement Details
The following tables show the Company’s condensed consolidated financial statement details as of July 1, 2023 and September 24, 2022 (in millions):
Inventories
July 1,
2023
September 24,
2022
Components$3,788 $1,637 
Finished goods3,563 3,309 
Total inventories$7,351 $4,946 
Property, Plant and Equipment, Net
July 1,
2023
September 24,
2022
Gross property, plant and equipment$114,337 $114,457 
Accumulated depreciation and amortization(70,787)(72,340)
Total property, plant and equipment, net$43,550 $42,117 
Other Income/(Expense), Net
The following table shows the detail of other income/(expense), net for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 (in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Interest and dividend income$980 $722 $2,766 $2,072 
Interest expense(998)(719)(2,931)(2,104)
Other expense, net(247)(13)(429)(65)
Total other income/(expense), net$(265)$(10)$(594)$(97)
Apple Inc. | Q3 2023 Form 10-Q | 10


Note 5 – Income Taxes
European Commission State Aid Decision
On August 30, 2016, the European Commission announced its decision that Ireland granted state aid to the Company by providing tax opinions in 1991 and 2007 concerning the tax allocation of profits of the Irish branches of two subsidiaries of the Company (the “State Aid Decision”). The State Aid Decision ordered Ireland to calculate and recover additional taxes from the Company for the period June 2003 through December 2014. Irish legislative changes, effective as of January 2015, eliminated the application of the tax opinions from that date forward. The Company and Ireland appealed the State Aid Decision to the General Court of the Court of Justice of the European Union (the “General Court”). On July 15, 2020, the General Court annulled the State Aid Decision. On September 25, 2020, the European Commission appealed the General Court’s decision to the European Court of Justice (the “ECJ”) and a hearing was held on May 23, 2023. A decision from the ECJ is expected in calendar year 2024. The Company believes it would be eligible to claim a U.S. foreign tax credit for a portion of any incremental Irish corporate income taxes potentially due related to the State Aid Decision.
Note 6 – Debt
Commercial Paper
The Company issues unsecured short-term promissory notes (“Commercial Paper”) pursuant to a commercial paper program. The Company uses net proceeds from the commercial paper program for general corporate purposes, including dividends and share repurchases. As of July 1, 2023 and September 24, 2022, the Company had $4.0 billion and $10.0 billion of Commercial Paper outstanding, respectively. The following table provides a summary of cash flows associated with the issuance and maturities of Commercial Paper for the nine months ended July 1, 2023 and June 25, 2022 (in millions):
Nine Months Ended
July 1,
2023
June 25,
2022
Maturities 90 days or less:
Proceeds from/(Repayments of) commercial paper, net$(3,326)$4,383 
Maturities greater than 90 days:
Proceeds from commercial paper 5,731 
Repayments of commercial paper(2,645)(5,144)
Proceeds from/(Repayments of) commercial paper, net(2,645)587 
Total proceeds from/(repayments of) commercial paper, net$(5,971)$4,970 
Term Debt
As of July 1, 2023 and September 24, 2022, the Company had outstanding fixed-rate notes with varying maturities for an aggregate carrying amount of $105.3 billion and $110.1 billion, respectively (collectively the “Notes”). As of July 1, 2023 and September 24, 2022, the fair value of the Company’s Notes, based on Level 2 inputs, was $95.3 billion and $98.8 billion, respectively.
Note 7 – Shareholders’ Equity
Share Repurchase Program
During the nine months ended July 1, 2023, the Company repurchased 365 million shares of its common stock for $56.1 billion, excluding excise tax due under the Inflation Reduction Act of 2022. The Company’s share repurchase programs do not obligate the Company to acquire a minimum amount of shares. Under the programs, shares may be repurchased in privately negotiated or open market transactions, including under plans complying with Rule 10b5-1 under the Securities Exchange Act of 1934, as amended.
Apple Inc. | Q3 2023 Form 10-Q | 11


Note 8 – Benefit Plans
Restricted Stock Units
A summary of the Company’s RSU activity and related information for the nine months ended July 1, 2023 is as follows:
Number of
RSUs
(in thousands)
Weighted-Average
Grant Date Fair
Value Per RSU
Aggregate
Fair Value
(in millions)
Balance as of September 24, 2022201,501 $109.48 
RSUs granted86,896 $150.23 
RSUs vested(96,681)$95.97 
RSUs canceled(7,000)$126.48 
Balance as of July 1, 2023184,716 $135.08 $35,829 
The fair value as of the respective vesting dates of RSUs was $7.0 billion and $14.9 billion for the three- and nine-month periods ended July 1, 2023, respectively, and was $7.8 billion and $17.3 billion for the three- and nine-month periods ended June 25, 2022, respectively.
Share-Based Compensation
The following table shows share-based compensation expense and the related income tax benefit included in the Condensed Consolidated Statements of Operations for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 (in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Share-based compensation expense$2,617 $2,243 $8,208 $6,760 
Income tax benefit related to share-based compensation expense$(993)$(1,231)$(2,791)$(3,416)
As of July 1, 2023, the total unrecognized compensation cost related to outstanding RSUs and stock options was $20.9 billion, which the Company expects to recognize over a weighted-average period of 2.7 years.
Note 9 – Commitments and Contingencies
Unconditional Purchase Obligations
The Company has entered into certain off–balance sheet commitments that require the future purchase of goods or services (“unconditional purchase obligations”). The Company’s unconditional purchase obligations primarily consist of supplier arrangements, licensed intellectual property and content, and distribution rights. Future payments under noncancelable unconditional purchase obligations with a remaining term in excess of one year as of July 1, 2023, are as follows (in millions):
2023 (remaining three months)$1,260 
20243,417 
20251,990 
20263,079 
20271,013 
Thereafter8,198 
Total$18,957 
Contingencies
The Company is subject to various legal proceedings and claims that have arisen in the ordinary course of business and that have not been fully resolved. The outcome of litigation is inherently uncertain. In the opinion of management, there was not at least a reasonable possibility the Company may have incurred a material loss, or a material loss greater than a recorded accrual, concerning loss contingencies for asserted legal and other claims.
Apple Inc. | Q3 2023 Form 10-Q | 12


Note 10 – Segment Information and Geographic Data
The following table shows information by reportable segment for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 (in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Americas:
Net sales$35,383 $37,472 $122,445 $129,850 
Operating income$13,117 $13,914 $44,908 $48,778 
Europe:
Net sales$20,205 $19,287 $71,831 $72,323 
Operating income$7,995 $7,124 $27,380 $27,174 
Greater China:
Net sales$15,758 $14,604 $57,475 $58,730 
Operating income$6,207 $5,760 $24,175 $25,055 
Japan:
Net sales$4,821 $5,446 $18,752 $20,277 
Operating income$2,443 $2,418 $9,073 $9,263 
Rest of Asia Pacific:
Net sales$5,630 $6,150 $23,284 $23,002 
Operating income$2,328 $2,367 $9,447 $9,185 
A reconciliation of the Company’s segment operating income to the Condensed Consolidated Statements of Operations for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 is as follows (in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Segment operating income$32,090 $31,583 $114,983 $119,455 
Research and development expense(7,442)(6,797)(22,608)(19,490)
Other corporate expenses, net(1,650)(1,710)(5,043)(5,422)
Total operating income$22,998 $23,076 $87,332 $94,543 
Apple Inc. | Q3 2023 Form 10-Q | 13


- -Item 2. Management’s Discussion and Analysis of Financial Condition and Results of Operations
This section and other parts of this Quarterly Report on Form 10-Q (“Form 10-Q”) contain forward-looking statements, within the meaning of the Private Securities Litigation Reform Act of 1995, that involve risks and uncertainties. Forward-looking statements provide current expectations of future events based on certain assumptions and include any statement that does not directly relate to any historical or current fact. For example, statements in this Form 10-Q regarding the potential future impact of macroeconomic conditions on the Company’s business and results of operations are forward-looking statements. Forward-looking statements can also be identified by words such as “future,” “anticipates,” “believes,” “estimates,” “expects,” “intends,” “plans,” “predicts,” “will,” “would,” “could,” “can,” “may,” and similar terms. Forward-looking statements are not guarantees of future performance and the Company’s actual results may differ significantly from the results discussed in the forward-looking statements. Factors that might cause such differences include, but are not limited to, those discussed in Part I, Item 1A of the Company’s Annual Report on Form 10-K for the fiscal year ended September 24, 2022 (the “2022 Form 10-K”) under the heading “Risk Factors.” The Company assumes no obligation to revise or update any forward-looking statements for any reason, except as required by law.
Unless otherwise stated, all information presented herein is based on the Company’s fiscal calendar, and references to particular years, quarters, months or periods refer to the Company’s fiscal years ended in September and the associated quarters, months and periods of those fiscal years. Each of the terms the “Company” and “Apple” as used herein refers collectively to Apple Inc. and its wholly owned subsidiaries, unless otherwise stated.
The following discussion should be read in conjunction with the 2022 Form 10-K filed with the U.S. Securities and Exchange Commission (the “SEC”) and the condensed consolidated financial statements and accompanying notes included in Part I, Item 1 of this Form 10-Q.
Available Information
The Company periodically provides certain information for investors on its corporate website, www.apple.com, and its investor relations website, investor.apple.com. This includes press releases and other information about financial performance, information on environmental, social and governance matters, and details related to the Company’s annual meeting of shareholders. The information contained on the websites referenced in this Form 10-Q is not incorporated by reference into this filing. Further, the Company’s references to website URLs are intended to be inactive textual references only.
Business Seasonality and Product Introductions
The Company has historically experienced higher net sales in its first quarter compared to other quarters in its fiscal year due in part to seasonal holiday demand. Additionally, new product and service introductions can significantly impact net sales, cost of sales and operating expenses. The timing of product introductions can also impact the Company’s net sales to its indirect distribution channels as these channels are filled with new inventory following a product launch, and channel inventory of an older product often declines as the launch of a newer product approaches. Net sales can also be affected when consumers and distributors anticipate a product introduction.
Fiscal Period
The Company’s fiscal year is the 52- or 53-week period that ends on the last Saturday of September. An additional week is included in the first fiscal quarter every five or six years to realign the Company’s fiscal quarters with calendar quarters, which occurred in the first quarter of 2023. The Company’s fiscal years 2023 and 2022 span 53 and 52 weeks, respectively.
Quarterly Highlights
Weakness in foreign currencies relative to the U.S. dollar had an unfavorable impact on the Company’s total net sales, which decreased 1% or $1.2 billion during the third quarter of 2023 compared to the same quarter in 2022. The year-over-year net sales decrease consisted primarily of lower net sales of iPad and iPhone, partially offset by higher net sales of Services.
During the third quarter of 2023, the Company announced the following new products:
15-inch MacBook Air®, powered by the M2 chip;
Mac Studio™, powered by the M2 Max chip and the new M2 Ultra chip;
Mac Pro®, powered by the new M2 Ultra chip; and
Apple Vision Pro™, the Company’s first spatial computer featuring its new visionOS™, expected to be available in early calendar year 2024.
The Company also announced iOS 17, macOS® Sonoma, iPadOS® 17, tvOS® 17 and watchOS® 10, updates to its operating systems that are expected to be available in the fall of 2023.
Apple Inc. | Q3 2023 Form 10-Q | 14


The Company repurchased $18.0 billion of its common stock and paid dividends and dividend equivalents of $3.8 billion during the third quarter of 2023.
Macroeconomic Conditions
Macroeconomic conditions, including inflation, changes in interest rates, and currency fluctuations, have directly and indirectly impacted, and could in the future materially impact, the Company’s results of operations and financial condition.
Segment Operating Performance
The following table shows net sales by reportable segment for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 (dollars in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
ChangeJuly 1,
2023
June 25,
2022
Change
Net sales by reportable segment:
Americas$35,383 $37,472 (6)%$122,445 $129,850 (6)%
Europe20,205 19,287 5 %71,831 72,323 (1)%
Greater China15,758 14,604 8 %57,475 58,730 (2)%
Japan4,821 5,446 (11)%18,752 20,277 (8)%
Rest of Asia Pacific5,630 6,150 (8)%23,284 23,002 1 %
Total net sales$81,797 $82,959 (1)%$293,787 $304,182 (3)%
Americas
Americas net sales decreased during the third quarter and first nine months of 2023 compared to the same periods in 2022 due primarily to lower net sales of iPhone and Mac, partially offset by higher net sales of Services.
Europe
The weakness in foreign currencies relative to the U.S. dollar had a net unfavorable year-over-year impact on Europe net sales during the third quarter and first nine months of 2023. During the third quarter of 2023, the Europe net sales increase consisted primarily of higher net sales of iPhone. During the first nine months of 2023, the Europe net sales decrease consisted primarily of lower net sales of Mac, partially offset by higher net sales of iPhone.
Greater China
The weakness in the renminbi relative to the U.S. dollar had an unfavorable year-over-year impact on Greater China net sales during the third quarter and first nine months of 2023. During the third quarter of 2023, the Greater China net sales increase consisted primarily of higher net sales of iPhone. During the first nine months of 2023, the Greater China net sales decrease consisted primarily of lower net sales of iPhone.
Japan
The weakness in the yen relative to the U.S. dollar had an unfavorable year-over-year impact on Japan net sales during the third quarter and first nine months of 2023. During the third quarter of 2023, the Japan net sales decrease consisted primarily of lower net sales of iPhone. During the first nine months of 2023, the Japan net sales decrease consisted primarily of lower net sales of iPhone, Services and Wearables, Home and Accessories.
Rest of Asia Pacific
The weakness in foreign currencies relative to the U.S. dollar had a net unfavorable year-over-year impact on Rest of Asia Pacific net sales during the third quarter and first nine months of 2023. During the third quarter of 2023, the Rest of Asia Pacific net sales decrease consisted primarily of lower net sales of iPhone and iPad. During the first nine months of 2023, the Rest of Asia Pacific net sales increase consisted primarily of higher net sales of iPhone, partially offset by lower net sales of Mac.
Apple Inc. | Q3 2023 Form 10-Q | 15


Products and Services Performance
The following table shows net sales by category for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 (dollars in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
ChangeJuly 1,
2023
June 25,
2022
Change
Net sales by category:
iPhone$39,669 $40,665 (2)%$156,778 $162,863 (4)%
Mac6,840 7,382 (7)%21,743 28,669 (24)%
iPad5,791 7,224 (20)%21,857 22,118 (1)%
Wearables, Home and Accessories8,284 8,084 2 %30,523 31,591 (3)%
Services21,213 19,604 8 %62,886 58,941 7 %
Total net sales$81,797 $82,959 (1)%$293,787 $304,182 (3)%
iPhone
iPhone net sales decreased during the third quarter and first nine months of 2023 compared to the same periods in 2022 due primarily to lower net sales from certain iPhone models, partially offset by higher net sales of iPhone 14 Pro models.
Mac
Mac net sales decreased during the third quarter and first nine months of 2023 compared to the same periods in 2022 due primarily to lower net sales of laptops.
iPad
iPad net sales decreased during the third quarter of 2023 compared to the third quarter of 2022 due primarily to lower net sales across most iPad models. Year-over-year iPad net sales were relatively flat during the first nine months of 2023.
Wearables, Home and Accessories
Wearables, Home and Accessories net sales increased during the third quarter of 2023 compared to the third quarter of 2022 due primarily to higher net sales of Wearables, which includes AirPods®, Apple Watch® and Beats® products, partially offset by lower net sales of accessories. Year-over-year Wearables, Home and Accessories net sales decreased during the first nine months of 2023 due primarily to lower net sales of Wearables and accessories.
Services
Services net sales increased during the third quarter of 2023 compared to the third quarter of 2022 due primarily to higher net sales from advertising, cloud services and the App Store®. Year-over-year Services net sales increased during the first nine months of 2023 due primarily to higher net sales from cloud services, advertising and music.
Apple Inc. | Q3 2023 Form 10-Q | 16


Gross Margin
Products and Services gross margin and gross margin percentage for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 were as follows (dollars in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Gross margin:
Products$21,448 $21,870 $84,205 $90,157
Services14,965 14,015 44,516 42,530
Total gross margin$36,413 $35,885 $128,721 $132,687
Gross margin percentage:
Products35.4 %34.5 %36.5 %36.8 %
Services70.5 %71.5 %70.8 %72.2 %
Total gross margin percentage44.5 %43.3 %43.8 %43.6 %
Products Gross Margin
Products gross margin decreased during the third quarter and first nine months of 2023 compared to the same periods in 2022 due primarily to the weakness in foreign currencies relative to the U.S. dollar and lower Products volume, partially offset by cost savings and a different Products mix.
Products gross margin percentage increased during the third quarter of 2023 compared to the third quarter of 2022 due primarily to cost savings and a different Products mix, partially offset by the weakness in foreign currencies relative to the U.S. dollar and decreased leverage. Year-over-year Products gross margin percentage decreased during the first nine months of 2023 due primarily to the weakness in foreign currencies relative to the U.S. dollar and decreased leverage, partially offset by cost savings and a different Products mix.
Services Gross Margin
Services gross margin increased during the third quarter and first nine months of 2023 compared to the same periods in 2022 due primarily to higher Services net sales, partially offset by the weakness in foreign currencies relative to the U.S. dollar and higher Services costs.
Services gross margin percentage decreased during the third quarter of 2023 compared to the third quarter of 2022 due primarily to higher Services costs, partially offset by improved leverage. Year-over-year Services gross margin percentage decreased during the first nine months of 2023 due primarily to higher Services costs and the weakness in foreign currencies relative to the U.S. dollar, partially offset by improved leverage.
The Company’s future gross margins can be impacted by a variety of factors, as discussed in Part I, Item 1A of the 2022 Form 10-K under the heading “Risk Factors.” As a result, the Company believes, in general, gross margins will be subject to volatility and downward pressure.
Apple Inc. | Q3 2023 Form 10-Q | 17


Operating Expenses
Operating expenses for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 were as follows (dollars in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Research and development$7,442 $6,797 $22,608 $19,490
Percentage of total net sales9 %8 %8 %6 %
Selling, general and administrative$5,973 $6,012 $18,781 $18,654
Percentage of total net sales7 %7 %6 %6 %
Total operating expenses$13,415 $12,809 $41,389 $38,144
Percentage of total net sales16 %15 %14 %13 %
Research and Development
The growth in research and development (“R&D”) expense during the third quarter and first nine months of 2023 compared to the same periods in 2022 was driven primarily by increases in headcount-related expenses.
Selling, General and Administrative
Selling, general and administrative expense was relatively flat during the third quarter and first nine months of 2023 compared to the same periods in 2022.
Provision for Income Taxes
Provision for income taxes, effective tax rate and statutory federal income tax rate for the three- and nine-month periods ended July 1, 2023 and June 25, 2022 were as follows (dollars in millions):
Three Months EndedNine Months Ended
July 1,
2023
June 25,
2022
July 1,
2023
June 25,
2022
Provision for income taxes$2,852 $3,624 $12,699 $15,364
Effective tax rate12.5 %15.7 %14.6 %16.3 %
Statutory federal income tax rate21 %21 %21 %21 %
The Company’s effective tax rate for the third quarter and first nine months of 2023 was lower than the statutory federal income tax rate due primarily to a lower effective tax rate on foreign earnings, including the favorable impact of changes in unrecognized tax benefits, tax benefits from share-based compensation, and the U.S. federal R&D credit, partially offset by state income taxes.
The Company’s effective tax rate for the third quarter of 2023 was lower compared to the third quarter of 2022 due primarily to a lower effective tax rate on foreign earnings, including the favorable impact of changes in unrecognized tax benefits, partially offset by lower tax benefits from share-based compensation. The Company’s effective tax rate for the first nine months of 2023 was lower compared to the same period in 2022 due primarily to a lower effective tax rate on foreign earnings and the impact of U.S. foreign tax credit regulations issued by the U.S. Department of the Treasury in 2022, partially offset by lower tax benefits from share-based compensation.
Apple Inc. | Q3 2023 Form 10-Q | 18


Liquidity and Capital Resources
The Company believes its balances of cash, cash equivalents and unrestricted marketable securities, along with cash generated by ongoing operations and continued access to debt markets, will be sufficient to satisfy its cash requirements and capital return program over the next 12 months and beyond.
The Company’s contractual cash requirements have not changed materially since the 2022 Form 10-K, except for manufacturing purchase obligations.
Manufacturing Purchase Obligations
The Company utilizes several outsourcing partners to manufacture subassemblies for the Company’s products and to perform final assembly and testing of finished products. The Company also obtains individual components for its products from a wide variety of individual suppliers. Outsourcing partners acquire components and build product based on demand information supplied by the Company, which typically covers periods up to 150 days. As of July 1, 2023, the Company had manufacturing purchase obligations of $38.4 billion, with $38.1 billion payable within 12 months. The Company’s manufacturing purchase obligations are primarily noncancelable.
Capital Return Program
In addition to its contractual cash requirements, the Company had authorized share repurchase programs as of July 1, 2023. The programs do not obligate the Company to acquire a minimum amount of shares. As of July 1, 2023, the Company’s quarterly cash dividend was $0.24 per share. The Company intends to increase its dividend on an annual basis, subject to declaration by the Board of Directors.
Critical Accounting Estimates
The preparation of financial statements and related disclosures in conformity with U.S. generally accepted accounting principles and the Company’s discussion and analysis of its financial condition and operating results require the Company’s management to make judgments, assumptions and estimates that affect the amounts reported. Note 1, “Summary of Significant Accounting Policies” of the Notes to condensed consolidated Financial Statements in Part I, Item 1 of this Form 10-Q and in the Notes to Consolidated Financial Statements in Part II, Item 8 of the 2022 Form 10-K describe the significant accounting policies and methods used in the preparation of the Company’s condensed consolidated financial statements. There have been no material changes to the Company’s critical accounting estimates since the 2022 Form 10-K.
- -Item 3. Quantitative and Qualitative Disclosures About Market Risk
There have been no material changes to the Company’s market risk during the first nine months of 2023. For a discussion of the Company’s exposure to market risk, refer to the Company’s market risk disclosures set forth in Part II, Item 7A, “Quantitative and Qualitative Disclosures About Market Risk” of the 2022 Form 10-K.
- -Item 4. Controls and Procedures
Evaluation of Disclosure Controls and Procedures
Based on an evaluation under the supervision and with the participation of the Company’s management, the Company’s principal executive officer and principal financial officer have concluded that the Company’s disclosure controls and procedures as defined in Rules 13a-15(e) and 15d-15(e) under the Securities Exchange Act of 1934, as amended (the “Exchange Act”) were effective as of July 1, 2023 to provide reasonable assurance that information required to be disclosed by the Company in reports that it files or submits under the Exchange Act is (i) recorded, processed, summarized and reported within the time periods specified in the SEC rules and forms and (ii) accumulated and communicated to the Company’s management, including its principal executive officer and principal financial officer, as appropriate to allow timely decisions regarding required disclosure.
Changes in Internal Control over Financial Reporting
There were no changes in the Company’s internal control over financial reporting during the third quarter of 2023, which were identified in connection with management’s evaluation required by paragraph (d) of Rules 13a-15 and 15d-15 under the Exchange Act, that have materially affected, or are reasonably likely to materially affect, the Company’s internal control over financial reporting.
Apple Inc. | Q3 2023 Form 10-Q | 19


PART II — OTHER INFORMATION
- -Item 1. Legal Proceedings
Epic Games
Epic Games, Inc. (“Epic”) filed a lawsuit in the U.S. District Court for the Northern District of California (the “District Court”) against the Company alleging violations of federal and state antitrust laws and California’s unfair competition law based upon the Company’s operation of its App Store. On September 10, 2021, the District Court ruled in favor of the Company with respect to nine out of the ten counts included in Epic’s claim. The District Court found that certain provisions of the Company’s App Store Review Guidelines violate California’s unfair competition law and issued an injunction enjoining the Company from prohibiting developers from including in their apps external links that direct customers to purchasing mechanisms other than Apple in-app purchasing. The injunction applies to apps on the U.S. storefront of the iOS and iPadOS App Store. On April 24, 2023, the U.S. Court of Appeals for the Ninth Circuit (the “Circuit Court”) affirmed the District Court’s ruling. On June 7, 2023, the Company and Epic filed petitions with the Circuit Court requesting further review of the decision. On June 30, 2023, the Circuit Court denied both petitions. On July 17, 2023, the Circuit Court granted Apple’s motion to stay enforcement of the injunction pending appeal to the U.S. Supreme Court. Epic has appealed the Circuit Court’s stay of the injunction. If the U.S. Supreme Court reverses the Circuit Court’s stay of the injunction or declines Apple’s petition, the injunction will take effect.
Other Legal Proceedings
The Company is subject to other legal proceedings and claims that have not been fully resolved and that have arisen in the ordinary course of business. The Company settled certain matters during the third quarter of 2023 that did not individually or in the aggregate have a material impact on the Company’s financial condition or operating results. The outcome of litigation is inherently uncertain. If one or more legal matters were resolved against the Company in a reporting period for amounts above management’s expectations, the Company’s financial condition and operating results for that reporting period could be materially adversely affected.
- -Item 1A. Risk Factors
The Company’s business, reputation, results of operations, financial condition and stock price can be affected by a number of factors, whether currently known or unknown, including those described in Part I, Item 1A of the 2022 Form 10-K under the heading “Risk Factors.” When any one or more of these risks materialize from time to time, the Company’s business, reputation, results of operations, financial condition and stock price can be materially and adversely affected. There have been no material changes to the Company’s risk factors since the 2022 Form 10-K.
Apple Inc. | Q3 2023 Form 10-Q | 20


- -Item 2. Unregistered Sales of Equity Securities, Use of Proceeds, and Issuer Purchases of Equity Securities
Purchases of Equity Securities by the Issuer and Affiliated Purchasers
Share repurchase activity during the three months ended July 1, 2023 was as follows (in millions, except number of shares, which are reflected in thousands, and per share amounts):
PeriodsTotal Number
of Shares Purchased
Average Price
Paid Per Share
Total Number of Shares
Purchased as Part of Publicly
Announced Plans or Programs
Approximate Dollar Value of
Shares That May Yet Be Purchased
Under the Plans or Programs (1)
April 2, 2023 to May 6, 2023:
Open market and privately negotiated purchases
38,121 $165.46 38,121
May 7, 2023 to June 3, 2023:
Open market and privately negotiated purchases
21,876 $174.91 21,876
June 4, 2023 to July 1, 2023:
Open market and privately negotiated purchases
42,676 $184.34 42,676
Total102,673 $94,569
(1)On April 28, 2022, the Board of Directors authorized the purchase of an additional $90 billion of the Company’s common stock under a share repurchase program. As of July 1, 2023, remaining availability under the April 2022 authorization was $4.6 billion. On May 4, 2023, the Board of Directors authorized an additional program to repurchase up to $90 billion of the Company’s common stock. The programs do not obligate the Company to acquire a minimum amount of shares. Under the programs, shares may be repurchased in privately negotiated or open market transactions, including under plans complying with Rule 10b5-1 under the Exchange Act.
- -Item 3. Defaults Upon Senior Securities
None.
- -Item 4. Mine Safety Disclosures
Not applicable.
- -Item 5. Other Information
None.
Apple Inc. | Q3 2023 Form 10-Q | 21


- -Item 6. Exhibits
Incorporated by Reference

Exhibit
Number
Exhibit DescriptionFormExhibitFiling Date/
Period End Date
4.18-K4.15/10/23
31.1*
31.2*
32.1**
101*
Inline XBRL Document Set for the condensed consolidated financial statements and accompanying notes in Part I, Item 1, “Financial Statements” of this Quarterly Report on Form 10-Q.
104*
Inline XBRL for the cover page of this Quarterly Report on Form 10-Q, included in the Exhibit 101 Inline XBRL Document Set.
* Filed herewith.
** Furnished herewith.
Apple Inc. | Q3 2023 Form 10-Q | 22


SIGNATURE
Pursuant to the requirements of the Securities Exchange Act of 1934, the Registrant has duly caused this report to be signed on its behalf by the undersigned thereunto duly authorized.
Date: August 3, 2023
Apple Inc.
By:/s/ Luca Maestri
Luca Maestri
Senior Vice President,
Chief Financial Officer
Apple Inc. | Q3 2023 Form 10-Q | 23
\ No newline at end of file diff --git a/tests/e2e/test_data/10q_goog_000165204423000070.html b/tests/e2e/test_data/10q_goog_000165204423000070.html deleted file mode 100644 index 39aef84..0000000 --- a/tests/e2e/test_data/10q_goog_000165204423000070.html +++ /dev/null @@ -1,22 +0,0 @@ - -PART I. FINANCIAL INFORMATION
ITEM 1.FINANCIAL STATEMENTS
Alphabet Inc.
CONSOLIDATED BALANCE SHEETS
(in millions, except par value per share amounts)
As of
December 31, 2022
As of
June 30, 2023
(unaudited)
Assets
Current assets:
Cash and cash equivalents$21,879 $25,929 
Marketable securities91,883 92,403 
Total cash, cash equivalents, and marketable securities113,762 118,332 
Accounts receivable, net40,258 38,804 
Inventory2,670 2,231 
Other current assets8,105 9,421 
Total current assets164,795 168,788 
Non-marketable securities30,492 31,224 
Deferred income taxes5,261 9,357 
Property and equipment, net112,668 121,208 
Operating lease assets14,381 14,469 
Intangible assets, net2,084 1,966 
Goodwill28,960 29,210 
Other non-current assets6,623 6,822 
Total assets$365,264 $383,044 
Liabilities and Stockholders’ Equity
Current liabilities:
Accounts payable$5,128 $5,313 
Accrued compensation and benefits14,028 11,260 
Accrued expenses and other current liabilities37,866 49,300 
Accrued revenue share8,370 7,990 
Deferred revenue3,908 3,846 
Total current liabilities69,300 77,709 
Long-term debt14,701 13,705 
Deferred revenue, non-current599 667 
Income taxes payable, non-current9,258 8,753 
Deferred income taxes514 558 
Operating lease liabilities12,501 12,746 
Other long-term liabilities2,247 1,765 
Total liabilities109,120 115,903 
Commitments and contingencies (Note 9)
Stockholders’ equity:
Preferred stock, $0.001 par value per share, 100 shares authorized; no shares issued and outstanding
0 0 
Class A, Class B, and Class C stock and additional paid-in capital, $0.001 par value per share: 300,000 shares authorized (Class A 180,000, Class B 60,000, Class C 60,000); 12,849 (Class A 5,964, Class B 883, Class C 6,002) and 12,629 (Class A 5,934, Class B 876, Class C 5,819) shares issued and outstanding
68,184 72,248 
Accumulated other comprehensive income (loss)(7,603)(5,991)
Retained earnings195,563 200,884 
Total stockholders’ equity256,144 267,141 
Total liabilities and stockholders’ equity$365,264 $383,044 
See accompanying notes.
5

Alphabet Inc.
Alphabet Inc.
CONSOLIDATED STATEMENTS OF INCOME
(in millions, except per share amounts; unaudited)
Three Months EndedSix Months Ended
June 30,June 30,
2022202320222023
Revenues$69,685 $74,604 $137,696 $144,391 
Costs and expenses:
Cost of revenues30,104 31,916 59,703 62,528 
Research and development9,841 10,588 18,960 22,056 
Sales and marketing6,630 6,781 12,455 13,314 
General and administrative3,657 3,481 7,031 7,240 
Total costs and expenses50,232 52,766 98,149 105,138 
Income from operations19,453 21,838 39,547 39,253 
Other income (expense), net(439)65 (1,599)855 
Income before income taxes19,014 21,903 37,948 40,108 
Provision for income taxes3,012 3,535 5,510 6,689 
Net income$16,002 $18,368 $32,438 $33,419 
Basic net income per share of Class A, Class B, and Class C stock$1.22 $1.45 $2.46 $2.63 
Diluted net income per share of Class A, Class B, and Class C stock$1.21 $1.44 $2.44 $2.61 
See accompanying notes.
6

Alphabet Inc.
Alphabet Inc.
CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME
(in millions; unaudited)
Three Months EndedSix Months Ended
 June 30,June 30,
 2022202320222023
Net income$16,002 $18,368 $32,438 $33,419 
Other comprehensive income (loss):
Change in foreign currency translation adjustment(1,665)235 (1,626)831 
Available-for-sale investments:
Change in net unrealized gains (losses)(926)(570)(3,404)296 
Less: reclassification adjustment for net (gains) losses included in net income233 198 381 490 
Net change, net of income tax benefit (expense) of $227, $106, $860 and $(224)
(693)(372)(3,023)786 
Cash flow hedges:
Change in net unrealized gains (losses)915 151 1,029 77 
Less: reclassification adjustment for net (gains) losses included in net income(336)(5)(585)(82)
Net change, net of income tax benefit (expense) of $(113), $(11), $(69) and $19
579 146 444 (5)
Other comprehensive income (loss)(1,779)9 (4,205)1,612 
Comprehensive income$14,223 $18,377 $28,233 $35,031 
See accompanying notes.
7

Alphabet Inc.
Alphabet Inc.
CONSOLIDATED STATEMENTS OF STOCKHOLDERS’ EQUITY
(in millions; unaudited)
 Three Months Ended June 30, 2022
 Class A, Class B, Class C Stock and Additional Paid-In CapitalAccumulated
Other
Comprehensive
Income (Loss)
Retained
Earnings
Total
Stockholders’
Equity
 SharesAmount
Balance as of March 31, 202213,175 $62,832 $(4,049)$195,221 $254,004 
Stock issued36 1 0 0 1 
Stock-based compensation expense0 4,823 0 0 4,823 
Tax withholding related to vesting of restricted stock units and other0 (2,434)0 (1)(2,435)
Repurchases of stock(133)(820)0 (14,377)(15,197)
Net income0 0 0 16,002 16,002 
Other comprehensive income (loss)0 0 (1,779)0 (1,779)
Balance as of June 30, 202213,078 $64,402 $(5,828)$196,845 $255,419 


 Six Months Ended June 30, 2022
 Class A, Class B, Class C Stock and Additional Paid-In CapitalAccumulated
Other
Comprehensive
Income (Loss)
Retained
Earnings
Total
Stockholders’
Equity
 SharesAmount
Balance as of December 31, 202113,242 $61,774 $(1,623)$191,484 $251,635 
Stock issued67 8 0 0 8 
Stock-based compensation expense0 9,370 0 0 9,370 
Tax withholding related to vesting of restricted stock units and other0 (5,329)0 (1)(5,330)
Repurchases of stock(231)(1,421)0 (27,076)(28,497)
Net income0 0 0 32,438 32,438 
Other comprehensive income (loss)0 0 (4,205)0 (4,205)
Balance as of June 30, 202213,078 $64,402 $(5,828)$196,845 $255,419 









8

Alphabet Inc.
 Three Months Ended June 30, 2023
 Class A, Class B, Class C Stock and Additional Paid-In CapitalAccumulated
Other
Comprehensive
Income (Loss)
Retained
Earnings
Total
Stockholders’
Equity
 SharesAmount
Balance as of March 31, 202312,722 $70,269 $(6,000)$196,625 $260,894 
Stock issued38 0 0 0 0
Stock-based compensation expense0 5,815 0 0 5,815 
Tax withholding related to vesting of restricted stock units and other0 (2,831)0 0 (2,831)
Repurchases of stock(131)(1,005)0 (14,109)(15,114)
Net income0 0 0 18,368 18,368 
Other comprehensive income (loss)0 0 9 0 9 
Balance as of June 30, 202312,629 $72,248 $(5,991)$200,884 $267,141 


 Six Months Ended June 30, 2023
 Class A, Class B, Class C Stock and Additional Paid-In CapitalAccumulated
Other
Comprehensive
Income (Loss)
Retained
Earnings
Total
Stockholders’
Equity
 SharesAmount
Balance as of December 31, 202212,849 $68,184 $(7,603)$195,563 $256,144 
Stock issued68 0 0 0 0
Stock-based compensation expense0 11,128 0 0 11,128 
Tax withholding related to vesting of restricted stock units and other0 (4,924)0 0 (4,924)
Repurchases of stock(288)(2,140)0 (28,098)(30,238)
Net income0 0 0 33,419 33,419 
Other comprehensive income (loss)0 0 1,612 0 1,612 
Balance as of June 30, 202312,629 $72,248 $(5,991)$200,884 $267,141 
See accompanying notes.



9

Alphabet Inc.
Alphabet Inc.
CONSOLIDATED STATEMENTS OF CASH FLOWS
(in millions; unaudited)
Six Months Ended
June 30,
20222023
Operating activities
Net income$32,438 $33,419 
Adjustments:
Depreciation and impairment of property and equipment7,289 6,339 
Amortization and impairment of intangible assets392 244 
Stock-based compensation expense9,286 11,058 
Deferred income taxes(4,237)(4,269)
Loss (gain) on debt and equity securities, net2,478 425 
Other202 650 
Changes in assets and liabilities, net of effects of acquisitions:
Accounts receivable, net2,395 1,506 
Income taxes, net(253)8,520 
Other assets(1,621)(1,259)
Accounts payable(1,172)14 
Accrued expenses and other liabilities(1,719)(4,037)
Accrued revenue share(942)(418)
Deferred revenue(8)(17)
Net cash provided by operating activities44,528 52,175 
Investing activities
Purchases of property and equipment(16,614)(13,177)
Purchases of marketable securities(50,199)(35,589)
Maturities and sales of marketable securities55,374 37,049 
Purchases of non-marketable securities(1,264)(1,513)
Maturities and sales of non-marketable securities125 181 
Acquisitions, net of cash acquired, and purchases of intangible assets(1,236)(340)
Other investing activities576 (357)
Net cash used in investing activities(13,238)(13,746)
Financing activities
Net payments related to stock-based award activities(5,180)(4,725)
Repurchases of stock(28,497)(29,526)
Proceeds from issuance of debt, net of costs29,228 8,050 
Repayments of debt(29,582)(8,207)
Proceeds from sale of interest in consolidated entities, net0 5 
Net cash used in financing activities(34,031)(34,403)
Effect of exchange rate changes on cash and cash equivalents(268)24 
Net increase (decrease) in cash and cash equivalents(3,009)4,050 
Cash and cash equivalents at beginning of period20,945 21,879 
Cash and cash equivalents at end of period$17,936 $25,929 
See accompanying notes.
10

Alphabet Inc.
Alphabet Inc.
NOTES TO CONSOLIDATED FINANCIAL STATEMENTS
(Unaudited)
Note 1. Summary of Significant Accounting Policies
Nature of Operations
Google was incorporated in California in September 1998 and re-incorporated in the State of Delaware in August 2003. In 2015, we implemented a holding company reorganization, and as a result, Alphabet Inc. ("Alphabet") became the successor issuer to Google.
We generate revenues by delivering relevant, cost-effective online advertising; cloud-based solutions that provide enterprise customers with infrastructure and platform services as well as communication and collaboration tools; sales of other products and services, such as apps and in-app purchases, and hardware; and fees received for subscription-based products.
Basis of Consolidation
The consolidated financial statements of Alphabet include the accounts of Alphabet and entities consolidated under the variable interest and voting models. Intercompany balances and transactions have been eliminated.
Unaudited Interim Financial Information
These unaudited interim consolidated financial statements have been prepared in accordance with generally accepted accounting principles in the United States (GAAP), and in our opinion, include all adjustments of a normal recurring nature necessary for fair financial statement presentation. Interim results are not necessarily indicative of the results to be expected for the full year ending December 31, 2023. We have made estimates and assumptions that affect the amounts reported and disclosed in the financial statements and the accompanying notes. Actual results could differ materially from these estimates.
These consolidated financial statements and other information presented in this Form 10-Q should be read in conjunction with the consolidated financial statements and the related notes included in our Annual Report on Form 10-K for the fiscal year ended December 31, 2022 filed with the SEC.
Change in Accounting Estimate
In January 2023, we completed an assessment of the useful lives of our servers and network equipment and adjusted the estimated useful life of our servers from four years to six years and the estimated useful life of certain network equipment from five years to six years. This change in accounting estimate was effective beginning in fiscal year 2023. Based on the carrying value of servers and certain network equipment as of December 31, 2022, and those placed in service during the six months ended June 30, 2023, the effect of this change in estimate was a reduction in depreciation expense of $966 million and $2.0 billion and an increase in net income of $752 million and $1.5 billion, or $0.06 and $0.12 per basic and $0.06 and $0.12 per diluted share, for the three and six months ended June 30, 2023, respectively.
Prior Period Reclassifications
Certain amounts in prior periods have been reclassified to conform with current period presentation.
11

Alphabet Inc.
Note 2. Revenues
Disaggregated Revenues
The following table presents revenues disaggregated by type (in millions):
Three Months EndedSix Months Ended
June 30,June 30,
2022202320222023
Google Search & other$40,689 $42,628 $80,307 $82,987 
YouTube ads7,340 7,665 14,209 14,358 
Google Network8,259 7,850 16,433 15,346 
Google advertising56,288 58,143 110,949 112,691 
Google other6,553 8,142 13,364 15,555 
Google Services total62,841 66,285 124,313 128,246 
Google Cloud6,276 8,031 12,097 15,485 
Other Bets193 285 633 573 
Hedging gains (losses)375 3 653 87 
Total revenues$69,685 $74,604 $137,696 $144,391 
The following table presents revenues disaggregated by geography, based on the addresses of our customers (in millions):
 Three Months EndedSix Months Ended
June 30,June 30,
 2022202320222023
United States$32,727 47 %$35,073 47 %$64,460 47 %$67,937 47 %
EMEA(1)
20,533 29 22,289 30 40,850 30 43,367 30 
APAC(1)
11,710 17 12,728 17 23,551 17 24,409 17 
Other Americas(1)
4,340 6 4,511 6 8,182 6 8,591 6 
Hedging gains (losses)375 1 3 0 653 0 87 0 
Total revenues$69,685 100 %$74,604 100 %$137,696 100 %$144,391 100 %
(1) Regions represent Europe, the Middle East, and Africa (EMEA); Asia-Pacific (APAC); and Canada and Latin America ("Other Americas").
Revenue Backlog
As of June 30, 2023, we had $60.6 billion of remaining performance obligations (“revenue backlog”), primarily related to Google Cloud. Our revenue backlog represents commitments in customer contracts for future services that have not yet been recognized as revenue. The amount and timing of revenue recognition for these commitments is largely driven by our ability to deliver in accordance with relevant contract terms and when our customers utilize services, which could affect our estimate of revenue backlog and when we expect to recognize such as revenue. We expect to recognize approximately half of the revenue backlog as revenues over the next 24 months with the remaining to be recognized thereafter. Revenue backlog includes related deferred revenue currently recorded as well as amounts that will be invoiced in future periods, and excludes contracts with an original expected term of one year or less and cancellable contracts.
Deferred Revenues
We record deferred revenues when cash payments are received or due in advance of our performance, including amounts which are refundable. Deferred revenues primarily relate to Google Cloud and Google other. Total deferred revenue as of December 31, 2022 was $4.5 billion, of which $2.1 billion was recognized as revenues during the six months ended June 30, 2023.



12

Alphabet Inc.
Note 3. Financial Instruments
Fair Value Measurements
Investments Measured at Fair Value on a Recurring Basis
Cash, cash equivalents, and marketable equity securities are measured at fair value and classified within Level 1 and Level 2 in the fair value hierarchy, because we use quoted prices for identical assets in active markets or inputs that are based upon quoted prices for similar instruments in active markets.
Debt securities are measured at fair value and classified within Level 2 in the fair value hierarchy, because we use quoted market prices to the extent available or alternative pricing sources and models utilizing market observable inputs to determine fair value. For certain marketable debt securities, we have elected the fair value option for which changes in fair value are recorded in other income (expense), net. The fair value option was elected for these securities to align with the unrealized gains and losses from related derivative contracts.
The following tables summarize our cash, cash equivalents, and marketable securities measured at fair value on a recurring basis (in millions):
As of December 31, 2022
Fair Value HierarchyAdjusted CostGross Unrealized GainsGross Unrealized LossesFair ValueCash and Cash EquivalentsMarketable Securities
Fair value changes recorded in other comprehensive income
Time depositsLevel 2$5,297 $0 $0 $5,297 $5,293 $4 
Government bondsLevel 241,03664 (2,045)39,055 283 38,772 
Corporate debt securitiesLevel 228,5788 (1,569)27,017 1 27,016 
Mortgage-backed and asset-backed securitiesLevel 216,1765 (1,242)14,939 0 14,939 
Total investments with fair value change reflected in other comprehensive income(1)
$91,087 $77 $(4,856)$86,308 $5,577 $80,731 
Fair value adjustments recorded in net income
Money market fundsLevel 1$7,234 $7,234 $0 
Current marketable equity securities(2)
Level 14,013 0 4,013 
Mutual fundsLevel 2339 0 339 
Government bondsLevel 21,877 440 1,437 
Corporate debt securitiesLevel 23,744 65 3,679 
Mortgage-backed and asset-backed securitiesLevel 21,686 2 1,684 
Total investments with fair value change recorded in net income$18,893 $7,741 $11,152 
Cash0 8,561 0
Total$91,087 $77 $(4,856)$105,201 $21,879 $91,883 
(1)Represents gross unrealized gains and losses for debt securities recorded to accumulated other comprehensive income (AOCI).
(2)The long-term portion of marketable equity securities (subject to long-term lock-up restrictions) of $803 million as of December 31, 2022 is included within other non-current assets.
13

Alphabet Inc.

As of June 30, 2023
Fair Value HierarchyAdjusted CostGross Unrealized GainsGross Unrealized LossesFair ValueCash and Cash EquivalentsMarketable Securities
Fair value changes recorded in other comprehensive income
Time depositsLevel 2$2,913 $0 $0 $2,913 $2,913 $0 
Government bondsLevel 245,339 49 (1,588)43,800 2,481 41,319 
Corporate debt securitiesLevel 223,480 8 (1,162)22,326 0 22,326 
Mortgage-backed and asset-backed securitiesLevel 218,047 4 (1,092)16,959 0 16,959 
Total investments with fair value change reflected in other comprehensive income(1)
$89,779 $61 $(3,842)$85,998 $5,394 $80,604 
Fair value adjustments recorded in net income
Money market fundsLevel 1$9,472 $9,472 $0 
Current marketable equity securities(2)
Level 14,088 0 4,088 
Mutual fundsLevel 23150 315
Government bondsLevel 22,158546 1,612
Corporate debt securitiesLevel 23,8312 3,829
Mortgage-backed and asset-backed securitiesLevel 21,9550 1,955
Total investments with fair value change recorded in net income$21,819 $10,020 $11,799 
Cash0 10,515 0
Total$89,779 $61 $(3,842)$107,817 $25,929 $92,403 
(1)Represents gross unrealized gains and losses for debt securities recorded to AOCI.
(2)The long-term portion of marketable equity securities (subject to long-term lock-up restrictions) of $892 million as of June 30, 2023 is included within other non-current assets
Investments Measured at Fair Value on a Nonrecurring Basis
Our non-marketable equity securities are investments in privately held companies without readily determinable market values. The carrying value of our non-marketable equity securities is adjusted to fair value upon observable transactions for identical or similar investments of the same issuer or impairment. Non-marketable equity securities that have been remeasured during the period based on observable transactions are classified within Level 2 or Level 3 in the fair value hierarchy because we estimate the value based on valuation methods which may include a combination of the observable transaction price at the transaction date and other unobservable inputs including volatility, rights, and obligations of the securities we hold. The fair value of non-marketable equity securities that have been remeasured due to impairment are classified within Level 3.
As of June 30, 2023 the carrying value of our non-marketable equity securities was $29.1 billion, of which $1.5 billion were remeasured at fair value during the three months ended June 30, 2023 and primarily classified as Level 3.
14

Alphabet Inc.
Debt Securities
The following table summarizes the estimated fair value of investments in available-for-sale marketable debt securities by effective contractual maturity dates (in millions):
As of
June 30, 2023
Due in 1 year or less$15,403 
Due in 1 year through 5 years43,749 
Due in 5 years through 10 years15,162 
Due after 10 years13,686 
Total$88,000 
The following tables present fair values and gross unrealized losses recorded to AOCI, aggregated by investment category and the length of time that individual securities have been in a continuous loss position (in millions):
 As of December 31, 2022
 Less than 12 Months12 Months or GreaterTotal
 Fair ValueUnrealized
Loss
Fair ValueUnrealized
Loss
Fair ValueUnrealized
Loss
Government bonds$21,039 $(1,004)$13,438 $(1,041)$34,477 $(2,045)
Corporate debt securities11,228 (440)15,125 (1,052)26,353 (1,492)
Mortgage-backed and asset-backed securities7,725 (585)6,964 (657)14,689 (1,242)
Total$39,992 $(2,029)$35,527 $(2,750)$75,519 $(4,779)
 As of June 30, 2023
 Less than 12 Months12 Months or GreaterTotal
 Fair ValueUnrealized
Loss
Fair ValueUnrealized
Loss
Fair ValueUnrealized
Loss
Government bonds$19,195 $(580)$13,976 $(1,008)$33,171 $(1,588)
Corporate debt securities3,915 (69)17,573 (1,008)21,488 (1,077)
Mortgage-backed and asset-backed securities6,352 (153)10,095 (939)16,447 (1,092)
Total$29,462 $(802)$41,644 $(2,955)$71,106 $(3,757)
We determine realized gains or losses on the sale or extinguishment of debt securities on a specific identification method. The following table summarizes gains and losses for debt securities, reflected as a component of other income (expense), net (in millions):
Three Months EndedSix Months Ended
June 30,June 30,
 2022202320222023
Unrealized gain (loss) on fair value option debt securities$(367)$(24)$(569)$121 
Gross realized gain on debt securities29 28 69 85 
Gross realized loss on debt securities(368)(303)(639)(795)
(Increase) decrease in allowance for credit losses(84)(5)(18)(8)
Total gain (loss) on debt securities recognized in other income (expense), net$(790)$(304)$(1,157)$(597)

15

Alphabet Inc.
Equity Investments
The carrying value of equity securities is measured as the total initial cost plus the cumulative net gain (loss). Our share of gains and losses, including impairments, are included as a component of other income (expense), net, in the Consolidated Statements of Income. See Note 6 for further details on other income (expense), net.
The carrying values for marketable and non-marketable equity securities are summarized below (in millions):
As of December 31, 2022As of June 30, 2023
Marketable Equity SecuritiesNon-Marketable Equity SecuritiesTotalMarketable Equity SecuritiesNon-Marketable Equity SecuritiesTotal
Total initial cost$5,764 $16,157 $21,921 $5,647 $17,261 $22,908 
Cumulative net gain (loss)(1)
(608)12,372 11,764 (352)11,868 11,516 
Carrying value$5,156 $28,529 $33,685 $5,295 $29,129 $34,424 
(1)Non-marketable equity securities cumulative net gain (loss) is comprised of $16.8 billion gains and $4.5 billion losses (including impairments) as of December 31, 2022 and $17.8 billion gains and $5.9 billion losses (including impairments) as of June 30, 2023.
Gains and Losses on Marketable and Non-marketable Equity Securities
Gains and losses (including impairments), net, for marketable and non-marketable equity securities included in other income (expense), net are summarized below (in millions):
Three Months EndedSix Months Ended
June 30,June 30,
2022202320222023
Realized net gain (loss) on equity securities sold during the period$26 $87 $(230)$292 
Unrealized net gain (loss) on marketable equity securities(1,188)397 (2,462)349 
Unrealized net gain (loss) on non-marketable equity securities(1)
911 (689)1,371 (469)
Total gain (loss) on equity securities in other income (expense), net$(251)$(205)$(1,321)$172 
(1)Unrealized gain (loss) on non-marketable equity securities accounted for under the measurement alternative is comprised of $2.2 billion and $75 million of upward adjustments and $1.3 billion and $789 million of downward adjustments (including impairments) for three months ended June 30, 2022 and 2023, respectively, and $3.0 billion and $989 million of upward adjustments and $1.6 billion and $1.5 billion of downward adjustments (including impairments) for the six months ended June 30, 2022 and 2023, respectively.
In the table above, realized net gain (loss) on equity securities sold during the period reflects the difference between the sale proceeds and the carrying value of the equity securities at the beginning of the period or the purchase date, if later.
Cumulative net gains (losses) on equity securities sold during the period, which is summarized in the following table (in millions), represents the total net gains (losses) recognized after the initial purchase date of the equity security sold during the period. While these net gains (losses) may have been reflected in periods prior to the period of sale, we believe they are important supplemental information as they reflect the economic net gains (losses) on the securities sold during the period. Cumulative net gains (losses) are calculated as the difference between the sale price and the initial purchase price for the equity security sold during the period.
Equity Securities Sold
Three Months EndedSix Months Ended
June 30,June 30,
 2022202320222023
Total sale price$645 $427 $1,335 $739 
Total initial cost168 156 428 367 
Cumulative net gain (loss)$477 $271 $907 $372 

16

Alphabet Inc.
Equity Securities Accounted for Under the Equity Method
As of December 31, 2022 and June 30, 2023 equity securities accounted for under the equity method had a carrying value of approximately $1.5 billion for both periods. Our share of gains and losses, including impairments, are included as a component of other income (expense), net, in the Consolidated Statements of Income. See Note 6 for further details on other income (expense), net.
Derivative Financial Instruments
We use derivative instruments to manage risks relating to our ongoing business operations. The primary risk managed is foreign exchange risk. We use foreign currency contracts to reduce the risk that our cash flows, earnings, and investment in foreign subsidiaries will be adversely affected by foreign currency exchange rate fluctuations. We also enter into derivative instruments to partially offset our exposure to other risks and enhance investment returns.
We recognize derivative instruments in the Consolidated Balance Sheets at fair value and classify the derivatives primarily within Level 2 in the fair value hierarchy. We present our collar contracts (an option strategy comprised of a combination of purchased and written options) at net fair values and present all other derivatives at gross fair values. The accounting treatment for derivatives is based on the intended use and hedge designation.
Cash Flow Hedges
We designate foreign currency forward and option contracts (including collars) as cash flow hedges to hedge certain forecasted revenue transactions denominated in currencies other than the U.S. dollar. These contracts have maturities of 24 months or less.
Cash flow hedge amounts included in the assessment of hedge effectiveness are deferred in AOCI and subsequently reclassified to revenue when the hedged item is recognized in earnings. We exclude forward points and time value from our assessment of hedge effectiveness and amortize them on a straight-line basis over the life of the hedging instrument in revenues. The difference between fair value changes of the excluded component and the amount amortized to revenues is recorded in AOCI.
As of June 30, 2023 the net accumulated gain on our foreign currency cash flow hedges before tax effect was $24 million, which is expected to be reclassified from AOCI into revenues within the next 12 months.
Fair Value Hedges
We designate foreign currency forward contracts as fair value hedges to hedge foreign currency risks for our marketable securities denominated in currencies other than the U.S. dollar. Fair value hedge amounts included in the assessment of hedge effectiveness are recognized in other income (expense), net, along with the offsetting gains and losses of the related hedged items. We exclude forward points from the assessment of hedge effectiveness and recognize changes in the excluded component in other income (expense), net.
Net Investment Hedges
We designate foreign currency forward contracts as net investment hedges to hedge the foreign currency risks related to our investment in foreign subsidiaries. Net investment hedge amounts included in the assessment of hedge effectiveness are recognized in AOCI along with the foreign currency translation adjustment. We exclude forward points from the assessment of hedge effectiveness and recognize changes in the excluded component in other income (expense), net.
Other Derivatives
We enter into foreign currency forward and option contracts that are not designated as hedging instruments to hedge intercompany transactions and other monetary assets or liabilities denominated in currencies other than the functional currency of a subsidiary. Gains and losses on these derivatives that are not designated as accounting hedges are primarily recorded in other income (expense), net along with the foreign currency gains and losses on monetary assets and liabilities.
We also use derivatives not designated as hedging instruments to manage risks relating to interest rates, commodity prices, credit exposures, and to enhance investment returns. From time to time, we enter into derivatives to hedge the market price risk on certain of our marketable equity securities. Gains and losses arising from other derivatives are primarily reflected within the “other” component of other income (expense), net. See Note 6 for further details.
17

Alphabet Inc.
The gross notional amounts of outstanding derivative instruments were as follows (in millions):
As of December 31, 2022As of June 30, 2023
Derivatives designated as hedging instruments:
Foreign exchange contracts
Cash flow hedges $15,972 $15,823 
Fair value hedges$2,117 $1,472 
Net investment hedges$8,751 $9,371 
Derivatives not designated as hedging instruments:
Foreign exchange contracts$34,979 $34,185 
Other contracts$7,932 $9,133 
The fair values of outstanding derivative instruments were as follows (in millions):
 As of December 31, 2022As of June 30, 2023
  
Assets(1)
Liabilities(2)
Assets(1)
Liabilities(2)
Derivatives designated as hedging instruments:
Foreign exchange contracts$271 $556 $228 $201 
Derivatives not designated as hedging instruments:
Foreign exchange contracts365207130136
Other contracts40473967
Total derivatives not designated as hedging instruments405 254 169 203 
Total$676 $810 $397 $404 
(1) Derivative assets are recorded as other current and non-current assets in the Consolidated Balance Sheets.
(2) Derivative liabilities are recorded as accrued expenses and other liabilities, current and non-current in the Consolidated Balance Sheets.
The gains (losses) on derivatives in cash flow hedging and net investment hedging relationships recognized in other comprehensive income (OCI) are summarized below (in millions):
 Gains (Losses) Recognized in OCI on Derivatives Before Tax Effect
Three Months EndedSix Months Ended
 June 30,June 30,
2022202320222023
Derivatives in cash flow hedging relationship:
Foreign exchange contracts
Amount included in the assessment of effectiveness$1,131 $77 $1,266 $(61)
Amount excluded from the assessment of effectiveness(39)80 (54)127 
Derivatives in net investment hedging relationship:
Foreign exchange contracts
Amount included in the assessment of effectiveness509 (59)658 (274)
Total$1,601 $98 $1,870 $(208)
18

Alphabet Inc.
 The table below presents the gains (losses) of our derivatives on the Consolidated Statements of Income: (in millions):
 Gains (Losses) Recognized in Income
Three Months Ended
 June 30,
20222023
RevenuesOther income (expense), netRevenuesOther income (expense), net
Total amounts in the Consolidated Statements of Income$69,685 $(439)$74,604 $65 
Effect of cash flow hedges:
Foreign exchange contracts
Amount reclassified from AOCI to income$400 $0 $(2)$0 
Amount excluded from the assessment of effectiveness (amortized)(24)0 6 0 
Effect of fair value hedges:
Foreign exchange contracts
Hedged items0 (136)0 22 
Derivatives designated as hedging instruments0 136 0 (22)
Amount excluded from the assessment of effectiveness0 2 0 5 
Effect of net investment hedges:
Foreign exchange contracts
Amount excluded from the assessment of effectiveness0 28 0 72 
Effect of non designated hedges:
Foreign exchange contracts0 (149)0 124 
Other contracts0 86 0 (4)
Total gains (losses)$376 $(33)$4 $197 
19

Alphabet Inc.
 Gains (Losses) Recognized in Income
Six Months Ended
 June 30,
20222023
RevenuesOther income (expense), netRevenuesOther income (expense), net
Total amounts in the Consolidated Statements of Income$137,696 $(1,599)$144,391 $855 
Effect of cash flow hedges:
Foreign exchange contracts
Amount of gains (losses) reclassified from AOCI to income$697 $0 $86 $0 
Amount excluded from the assessment of effectiveness (amortized)(43)0 2 0 
Effect of fair value hedges:
Foreign exchange contracts
Hedged items0 (123)0 54 
Derivatives designated as hedging instruments0 124 0 (54)
Amount excluded from the assessment of effectiveness0 3 0 10 
Effect of net investment hedges:
Foreign exchange contracts
Amount excluded from the assessment of effectiveness0 40 0 123 
Effect of non designated hedges:
Foreign exchange contracts0 (396)0 154 
Other Contracts0 124 0 (1)
Total gains (losses)$654 $(228)$88 $286 
Offsetting of Derivatives
We enter into master netting arrangements and collateral security arrangements to reduce credit risk. Cash collateral received related to derivative instruments under our collateral security arrangements are included in other current assets with a corresponding liability. Cash and non-cash collateral pledged related to derivative instruments under our collateral security arrangements are included in other current assets.
The gross amounts of derivative instruments subject to master netting arrangements with various counterparties, and cash and non-cash collateral received and pledged under such agreements were as follows (in millions):
As of December 31, 2022
Gross Amounts Not Offset in the Consolidated Balance Sheets, but Have Legal Rights to Offset
Gross Amounts RecognizedGross Amounts Offset in the Consolidated Balance SheetsNet Amounts Presented in the Consolidated Balance Sheets
Financial Instruments(1)
Cash and Non-Cash Collateral Received or PledgedNet Amounts
Derivatives assets$760 $(84)$676 $(463)$(132)$81 
Derivatives liabilities$894 $(84)$810 $(463)$(28)$319 

20

Alphabet Inc.
As of June 30, 2023
Gross Amounts Not Offset in the Consolidated Balance Sheets, but Have Legal Rights to Offset
Gross Amounts RecognizedGross Amounts Offset in the Consolidated Balance SheetsNet Amounts Presented in the Consolidated Balance Sheets
Financial Instruments(1)
Cash and Non-Cash Collateral Received or PledgedNet Amounts
Derivatives assets$444 $(47)$397 $(138)$(226)$33 
Derivatives liabilities$451 $(47)$404 $(138)$(34)$232 
(1)The balances as of December 31, 2022 and June 30, 2023 were related to derivatives allowed to be net settled in accordance with our master netting agreements.
Note 4. Variable Interest Entities (VIE)
Consolidated VIEs
We consolidate VIEs in which we hold a variable interest and are the primary beneficiary. The results of operations and financial position of these VIEs are included in our consolidated financial statements.
For certain consolidated VIEs, their assets are not available to us and their creditors do not have recourse to us. As of December 31, 2022 and June 30, 2023, assets that can only be used to settle obligations of these VIEs were $4.1 billion and $3.1 billion, respectively, and the liabilities for which creditors only have recourse to the VIEs were $2.6 billion for both periods. We may continue to fund ongoing operations of certain VIEs that are included within Other Bets.
Total noncontrolling interests (NCI) in our consolidated subsidiaries were $3.8 billion and $3.6 billion as of December 31, 2022 and June 30, 2023, respectively, of which $1.1 billion is redeemable noncontrolling interest (RNCI) for both periods. NCI and RNCI are included within additional paid-in capital. Net loss attributable to noncontrolling interests was not material for any period presented and is included within the "other" component of OI&E. See Note 6 for further details on OI&E.
Unconsolidated VIEs
We have investments in VIEs in which we are not the primary beneficiary. These VIEs include private companies that are primarily early stage companies and certain renewable energy entities in which activities involve power generation using renewable sources.
We have determined that the governance structures of these entities do not allow us to direct the activities that would significantly affect their economic performance. Therefore, we are not the primary beneficiary, and the results of operations and financial position of these VIEs are not included in our consolidated financial statements. We account for these investments as non-marketable equity securities or equity method investments.
The maximum exposure of these unconsolidated VIEs is generally based on the current carrying value of the investments and any future funding commitments. We have determined that the single source of our exposure to these VIEs is our capital investments in them. The carrying value and maximum exposure of these unconsolidated VIEs were $2.7 billion and $2.8 billion, respectively, as of December 31, 2022 and $3.0 billion and $3.0 billion, respectively, as of June 30, 2023.
Note 5. Debt
Short-Term Debt
We have a debt financing program of up to $10.0 billion through the issuance of commercial paper. Net proceeds from this program are used for general corporate purposes. We had no commercial paper outstanding as of December 31, 2022 and June 30, 2023.
Our short-term debt balance also includes the current portion of certain long-term debt.
21

Alphabet Inc.
Long-Term Debt
Total outstanding debt is summarized below (in millions, except percentages):
MaturityCoupon RateEffective Interest RateAs of December 31, 2022As of
June 30, 2023
Debt
2014-2020 Notes issuances2024 - 2060
0.45% - 3.38%
0.57% - 3.38%
$13,000 $13,000 
Future finance lease payments, net and other (1)
2,142 2,159 
Total debt15,142 15,159 
Unamortized discount and debt issuance costs(143)(137)
Less: Current portion of long-term notes(2)
0 (999)
Less: Current portion future finance lease payments, net and other current debt(1)(2)
(298)(318)
Total long-term debt$14,701 $13,705 
(1)Future finance lease payments are net of imputed interest.
(2)Total current portion of long-term debt is included within other accrued expenses and current liabilities. See Note 6 for further details.
The notes in the table above are fixed-rate senior unsecured obligations and generally rank equally with each other. We may redeem the notes at any time in whole or in part at specified redemption prices. The effective interest rates are based on proceeds received with interest payable semi-annually.
The total estimated fair value of the outstanding notes was approximately $9.9 billion and $10.1 billion as of December 31, 2022 and June 30, 2023, respectively. The fair value was determined based on observable market prices of identical instruments in less active markets and is categorized accordingly as Level 2 in the fair value hierarchy.
Credit Facility
As of June 30, 2023, we had $10.0 billion of revolving credit facilities of which $4.0 billion expires in April 2024 and $6.0 billion expires in April 2028. The interest rates for all credit facilities are determined based on a formula using certain market rates, as well as our progress toward the achievement of certain sustainability goals. No amounts were outstanding under the credit facilities as of December 31, 2022 and June 30, 2023.
Note 6. Supplemental Financial Statement Information
Accounts Receivable
The allowance for credit losses on accounts receivable was $754 million and $836 million as of December 31, 2022 and June 30, 2023, respectively.
Property and Equipment, Net
Property and equipment, net, consisted of the following (in millions):
As of
December 31, 2022
As of
June 30, 2023
Land and buildings$66,897 $68,890 
Information technology assets66,267 71,592 
Construction in progress27,657 32,019 
Leasehold improvements10,575 11,286 
Furniture and fixtures314 338 
Property and equipment, gross171,710 184,125 
Less: accumulated depreciation(59,042)(62,917)
Property and equipment, net$112,668 $121,208 
22

Alphabet Inc.
Accrued Expenses and Other Current Liabilities
Accrued expenses and other current liabilities consisted of the following (in millions):
As of
December 31, 2022
As of
June 30, 2023
European Commission fines(1)
$9,106 $9,446 
Income taxes payable, net(2)
1,632 10,870 
Accrued customer liabilities3,619 3,498 
Accrued purchases of property and equipment3,019 3,380 
Current operating lease liabilities2,477 2,663 
Other accrued expenses and current liabilities18,013 19,443 
Accrued expenses and other current liabilities$37,866 $49,300 
(1) While each EC decision is under appeal, the fines are included in accrued expenses and other current liabilities on our Consolidated Balance Sheets, as we provided bank guarantees (in lieu of a cash payment) for the fines. Amounts include the effects of foreign exchange and interest. See Note 9 for further details.
(2) Income taxes payable, net as of the quarter ended June 30, 2023 includes balances related to the 2023 Internal Revenue Service (IRS) payment deferral relief made available to taxpayers headquartered in designated counties in California.
Accumulated Other Comprehensive Income (Loss)
Components of AOCI, net of income tax, were as follows (in millions):
Foreign Currency Translation AdjustmentsUnrealized Gains (Losses) on Available-for-Sale InvestmentsUnrealized Gains (Losses) on Cash Flow HedgesTotal
Balance as of December 31, 2021$(2,306)$236 $447 $(1,623)
Other comprehensive income (loss) before reclassifications(1,626)(3,404)1,083 (3,947)
Amounts excluded from the assessment of hedge effectiveness recorded in AOCI0 0 (54)(54)
Amounts reclassified from AOCI0 381 (585)(204)
Other comprehensive income (loss)(1,626)(3,023)444 (4,205)
Balance as of June 30, 2022$(3,932)$(2,787)$891 $(5,828)
Foreign Currency Translation AdjustmentsUnrealized Gains (Losses) on Available-for-Sale InvestmentsUnrealized Gains (Losses) on Cash Flow HedgesTotal
Balance as of December 31, 2022$(4,142)$(3,477)$16 $(7,603)
Other comprehensive income (loss) before reclassifications831 296 (50)1,077 
Amounts excluded from the assessment of hedge effectiveness recorded in AOCI0 0 127 127 
Amounts reclassified from AOCI0 490 (82)408 
Other comprehensive income (loss)831 786 (5)1,612 
Balance as of June 30, 2023$(3,311)$(2,691)$11 $(5,991)
23

Alphabet Inc.
The effects on net income of amounts reclassified from AOCI were as follows (in millions):
Gains (Losses) Reclassified from AOCI to the Consolidated Statements of Income
Three Months EndedSix Months Ended
 June 30,June 30,
AOCI ComponentsLocation2022202320222023
Unrealized gains (losses) on available-for-sale investments
Other income (expense), net$(299)$(254)$(489)$(628)
Benefit (provision) for income taxes66 56 108 138 
Net of income tax(233)(198)(381)(490)
Unrealized gains (losses) on cash flow hedges
Foreign exchange contractsRevenue400 (2)697 86 
Interest rate contractsOther income (expense), net1 1 3 3 
Benefit (provision) for income taxes(65)6 (115)(7)
Net of income tax336 5 585 82 
Total amount reclassified, net of income tax$103 $(193)$204 $(408)
Other Income (Expense), Net
Components of OI&E were as follows (in millions):
 Three Months EndedSix Months Ended
June 30,June 30,
 2022202320222023
Interest income$486 $892 $900 $1,689 
Interest expense(1)
(83)(43)(166)(123)
Foreign currency exchange gain (loss), net(260)(268)(333)(478)
Gain (loss) on debt securities, net(790)(304)(1,157)(597)
Gain (loss) on equity securities, net(251)(205)(1,321)172 
Performance fees318 5 551 123 
Income (loss) and impairment from equity method investments, net(118)(106)(207)(157)
Other259 94 134 226 
Other income (expense), net$(439)$65 $(1,599)$855 
(1)Interest expense is net of interest capitalized of $37 million and $47 million for the three months ended June 30, 2022 and 2023, respectively, and $71 million and $87 million for the six months ended June 30, 2022 and 2023, respectively.
24

Alphabet Inc.
Note 7. Workforce Reduction and Other Initiatives
We have a company-wide effort underway to re-engineer our cost base. As part of this program, in January 2023, we announced a reduction of our workforce. As a result, total employee severance and related charges recorded during the six months ended June 30, 2023 were $2.0 billion, of which $2.0 billion and $1 million were recorded during the three months ended March 31, 2023 and June 30, 2023, respectively.
In addition, we are taking actions to optimize our global office space. As a result, total charges recorded during the six months ended June 30, 2023 were $633 million, of which $564 million and $69 million were recorded during the three months ended March 31, 2023 and June 30, 2023, respectively. We may incur additional charges in the future as we further evaluate our real estate needs.
These severance and office space charges are included within our consolidated statements of income as follows (in millions):
Three Months Ended June 30, 2023Six Months Ended June 30, 2023
Severance and Related (1)
Office SpaceTotal
Severance and Related (1)
Office SpaceTotal
Cost of revenues$(1)$20 $19 $460 $240 $700 
Research and development(3)14 11 832 261 1,093 
Sales and marketing(1)23 22 444 58 502 
General and administrative6 12 18 259 74 333 
Total charges$1 $69 $70 $1,995 $633 $2,628 
(1)Severance includes amounts to be settled in cash, accounted for as one-time involuntary employee termination benefits, and stock based compensation
For segment reporting, the substantial majority of these charges are included within unallocated corporate costs in our segment results.
For the six months ended June 30, 2023, changes in liabilities resulting from the severance charges and related accruals were as follows (in millions):
Severance and Related
Balance as of December 31, 2022$0 
Charges(1)
1,566 
Cash payments(1,423)
Balance as of June 30, 2023(2)
$143 
(1)Excludes non-cash stock-based compensation of $429 million.
(2)Included in Accrued compensation and benefits on the consolidated balance sheets.
Note 8. Goodwill and Other Intangible Assets
Goodwill
Changes in the carrying amount of goodwill for the six months ended June 30, 2023 were as follows (in millions):
Google ServicesGoogle CloudOther BetsTotal
Balance as of December 31, 2022$20,847 $7,205 $908 $28,960 
Acquisitions240 0 0 240 
Foreign currency translation and other adjustments37 1 (28)10 
Balance as of June 30, 2023$21,124 $7,206 $880 $29,210 
25

Alphabet Inc.
Other Intangible Assets
Information regarding intangible assets was as follows (in millions):
As of December 31, 2022As of June 30, 2023
 Gross
Carrying
Amount
Accumulated
Amortization
Net
Carrying
Amount
Gross
Carrying
Amount
Accumulated
Amortization
Net
Carrying
Amount
Patents and developed technology$1,164 $354 $810 $1,181 $420 $761 
Customer relationships862 235 627 884 306 578 
Trade names and other527 120 407 536 145 391 
Total definite-lived intangible assets2,553 709 1,844 2,601 871 1,730 
Indefinite-lived intangible assets240 0 240 236 0 236 
Total intangible assets$2,793 $709 $2,084 $2,837 $871 $1,966 
Amortization expense relating to intangible assets was $201 million and $118 million for the three months ended June 30, 2022 and 2023, respectively, and $392 million and $244 million for the six months ended June 30, 2022 and 2023, respectively.
Expected amortization expense of definite-lived intangible assets held as of June 30, 2023 was as follows (in millions):
Remainder of 2023$239 
2024468 
2025338 
2026261 
2027176 
Thereafter248 
Total$1,730 
Note 9. Commitments and Contingencies
Commitments
We have content licensing agreements with future fixed or minimum guaranteed commitments of $11.5 billion as of June 30, 2023, of which the majority is paid over seven years ending in the first quarter of 2030.
Indemnifications
In the normal course of business, including to facilitate transactions in our services and products and corporate activities, we indemnify certain parties, including advertisers, Google Network partners, distribution partners, customers of Google Cloud offerings, lessors, and service providers with respect to certain matters. We have agreed to defend and/or hold certain parties harmless against losses arising from a breach of representations or covenants, or out of intellectual property infringement or other claims made against certain parties. Several of these agreements limit the time within which an indemnification claim can be made and the amount of the claim. In addition, we have entered into indemnification agreements with our officers and directors, and our bylaws contain similar indemnification obligations to our agents.
It is not possible to make a reasonable estimate of the maximum potential amount under these indemnification agreements due to the unique facts and circumstances involved in each particular agreement. Additionally, the payments we have made under such agreements have not had a material adverse effect on our results of operations, cash flows, or financial position. However, to the extent that valid indemnification claims arise in the future, future payments by us could be significant and could have a material adverse effect on our results of operations or cash flows in a particular period.
As of June 30, 2023, we did not have any material indemnification claims that were probable or reasonably possible.
26

Alphabet Inc.
Legal Matters
We record a liability when we believe that it is probable that a loss has been incurred, and the amount can be reasonably estimated. If we determine that a loss is reasonably possible and the loss or range of loss can be estimated, we disclose the reasonably possible loss. We evaluate developments in our legal matters that could affect the amount of liability that has been previously accrued, and the matters and related reasonably possible losses disclosed, and make adjustments as appropriate.
Certain outstanding matters seek speculative, substantial or indeterminate monetary amounts, substantial changes to our business practices and products, or structural remedies. Significant judgment is required to determine both the likelihood of there being a loss and the estimated amount of a loss related to such matters, and we may be unable to estimate the reasonably possible loss or range of losses. The outcomes of outstanding legal matters are inherently unpredictable and subject to significant uncertainties, and could, either individually or in aggregate, have a material adverse effect.
We expense legal fees in the period in which they are incurred.
Antitrust Investigations
On November 30, 2010, the EC's Directorate General for Competition opened an investigation into various antitrust-related complaints against us.
On June 27, 2017, the EC announced its decision that certain actions taken by Google regarding its display and ranking of shopping search results and ads infringed European competition law. The EC decision imposed a €2.4 billion ($2.7 billion as of June 27, 2017) fine. On September 11, 2017, we appealed the EC decision to the General Court, and on September 27, 2017, we implemented product changes to bring shopping ads into compliance with the EC's decision. We recognized a charge of $2.7 billion for the fine in the second quarter of 2017. On November 10, 2021, the General Court rejected our appeal, and we subsequently filed an appeal with the European Court of Justice on January 20, 2022.
On July 18, 2018, the EC announced its decision that certain provisions in Google’s Android-related distribution agreements infringed European competition law. The EC decision imposed a €4.3 billion ($5.1 billion as of June 30, 2018) fine and directed the termination of the conduct at issue. On October 9, 2018, we appealed the EC decision, and on October 29, 2018, we implemented changes to certain of our Android distribution practices. On September 14, 2022, the General Court reduced the fine from €4.3 billion to €4.1 billion. We subsequently filed an appeal with the European Court of Justice. In 2018, we recognized a charge of $5.1 billion for the fine, which we reduced by $217 million in 2022.
On March 20, 2019, the EC announced its decision that certain contractual provisions in agreements that Google had with AdSense for Search partners infringed European competition law. The EC decision imposed a fine of €1.5 billion ($1.7 billion as of March 20, 2019) and directed actions related to AdSense for Search partners' agreements, which we implemented prior to the decision. On June 4, 2019, we appealed the EC decision, which remains pending. We recognized a charge of $1.7 billion for the fine in the first quarter of 2019.
From time to time we are subject to formal and informal inquiries and investigations on various competition matters by regulatory authorities in the U.S., Europe, and other jurisdictions globally. For example:

In August 2019, we began receiving civil investigative demands from the U.S. Department of Justice (DOJ) requesting information and documents relating to our prior antitrust investigations and certain aspects of our business. The DOJ and a number of state Attorneys General filed a lawsuit in the U.S. District Court for the District of Columbia on October 20, 2020 alleging that Google violated U.S. antitrust laws relating to Search and Search advertising, and a trial is scheduled for September 2023. Further, in June 2022, the Australian Competition and Consumer Commission (ACCC) and the United Kingdom's Competition and Markets Authority (CMA) each opened an investigation into Search distribution practices.

On December 16, 2020, a number of state Attorneys General filed an antitrust complaint in the U.S. District Court for the Eastern District of Texas, alleging that Google violated U.S. antitrust laws as well as state deceptive trade laws relating to its advertising technology. Additionally, on January 24, 2023, the DOJ, along with a number of state Attorneys General, filed an antitrust complaint in the U.S. District Court for the Eastern District of Virginia alleging that Google’s digital advertising technology products violate U.S. antitrust laws, and on April 17, 2023, a number of additional state Attorneys General joined the complaint. The EC, the CMA, and the ACCC each opened a formal investigation into Google's advertising technology business practices on June 22, 2021, May 25, 2022, and June 29, 2022, respectively. On June 14, 2023,
27

Alphabet Inc.
the EC issued a Statement of Objections (SO) informing Google of its preliminary view that Google violated European antitrust laws relating to its advertising technology. We will respond to the SO by December 31, 2023.

On July 7, 2021, a number of state Attorneys General filed an antitrust complaint in the U.S. District Court for the Northern District of California, alleging that Google’s operation of Android and Google Play violated U.S. antitrust laws and state antitrust and consumer protection laws. In May 2022, the EC and the CMA each opened investigations into Google Play’s business practices. Korean regulators are investigating Google Play's billing practices, most recently opening a formal review in May 2022 of Google's compliance with the new app store billing regulations.

We believe these complaints are without merit and will defend ourselves vigorously. We continue to cooperate with federal and state regulators in the U.S., the EC, and other regulators around the world.
Patent and Intellectual Property Claims
We have had patent, copyright, trade secret, and trademark infringement lawsuits filed against us claiming that certain of our products, services, and technologies infringe others' intellectual property rights. Adverse results in these lawsuits may include awards of substantial monetary damages, costly royalty or licensing agreements, or orders preventing us from offering certain features, functionalities, products, or services. As a result, we may have to change our business practices and develop non-infringing products or technologies, which could result in a loss of revenues for us and otherwise harm our business. In addition, the U.S. International Trade Commission (ITC) has increasingly become an important forum to litigate intellectual property disputes because an ultimate loss in an ITC action can result in a prohibition on importing infringing products into the U.S. Because the U.S. is an important market, a prohibition on importation could have an adverse effect on us, including preventing us from importing many important products into the U.S. or necessitating workarounds that may limit certain features of our products.
Furthermore, many of our agreements with our customers and partners require us to indemnify them against certain intellectual property infringement claims, which would increase our costs as a result of defending such claims, and may require that we pay significant damages if there were an adverse ruling in any such claims. In addition, our customers and partners may discontinue the use of our products, services, and technologies, as a result of injunctions or otherwise, which could result in loss of revenues and adversely affect our business.
Other
We are subject to claims, lawsuits, regulatory and government investigations, other proceedings, and consent orders involving competition, intellectual property, data privacy and security, tax and related compliance, labor and employment, commercial disputes, content generated by our users, goods and services offered by advertisers or publishers using our platforms, personal injury, consumer protection, and other matters. For example, we currently have a number of privacy investigations and lawsuits ongoing in multiple jurisdictions. We also periodically have data incidents that we report to relevant regulators as required by law. Such claims, lawsuits, regulatory and government investigations, other proceedings, and consent orders could result in substantial fines and penalties, injunctive relief, ongoing monitoring and auditing obligations, changes to our products and services, alterations to our business models and operations, and collateral related civil litigation or other adverse consequences, all of which could harm our business, reputation, financial condition, and operating results.
We have ongoing legal matters relating to Russia. For example, civil judgments that include compounding penalties have been imposed upon us in connection with disputes regarding the termination of accounts, including those of sanctioned parties. We do not believe these ongoing legal matters will have a material adverse effect.
Non-Income Taxes
We are under audit by various domestic and foreign tax authorities with regards to non-income tax matters. The subject matter of non-income tax audits primarily arises from disputes on the tax treatment and tax rate applied to the sale of our products and services in these jurisdictions and the tax treatment of certain employee benefits. We accrue non-income taxes that may result from examinations by, or any negotiated agreements with, these tax authorities when a loss is probable and reasonably estimable. If we determine that a loss is reasonably possible and the loss or range of loss can be estimated, we disclose the reasonably possible loss. Due to the inherent complexity and uncertainty of these matters and judicial process in certain jurisdictions, the final outcome may be materially different from our expectations.
For information regarding income tax contingencies, see Note 13.
28

Alphabet Inc.
Note 10. Stockholders' Equity
Share Repurchases
In the three and six months ended June 30, 2023, we repurchased $15.1 billion and $30.2 billion, respectively, of Alphabet's Class A and Class C shares.
In April 2022, the Board of Directors of Alphabet authorized the company to repurchase up to $70.0 billion of its Class A and Class C shares. The repurchases from the April 2022 authorization were completed during the second quarter of 2023. In April 2023, the Board of Directors of Alphabet authorized the company to repurchase up to an additional $70.0 billion of its Class A and Class C shares. As of June 30, 2023, $68.1 billion remains available for Class A and Class C share repurchases.
The following table presents Class A and Class C shares repurchased and subsequently retired (in millions):
Three Months Ended June 30, 2023Six Months Ended June 30, 2023
SharesAmountSharesAmount
Class A share repurchases17 $1,908 37 $3,919 
Class C share repurchases114 13,206 251 26,319 
Total share repurchases(1)
131 $15,114 288 $30,238 
(1) Shares repurchased include unsettled repurchases as of June 30, 2023.
Class A and Class C shares are repurchased in a manner deemed in the best interest of the company and its stockholders, taking into account the economic cost and prevailing market conditions, including the relative trading prices and volumes of the Class A and Class C shares. Repurchases are executed from time to time, subject to general business and market conditions and other investment opportunities, through open market purchases or privately negotiated transactions, including through Rule 10b5-1 plans. The repurchase program does not have an expiration date.
Note 11. Net Income Per Share
The following table sets forth the computation of basic and diluted net income per share of Class A, Class B, and Class C stock (in millions, except per share amounts):
Three Months Ended June 30,
 20222023
 Class AClass BClass CClass AClass BClass C
Basic net income per share:
Numerator
Allocation of undistributed earnings $7,329 $1,081 $7,592 $8,600 $1,275 $8,493 
Denominator
Number of shares used in per share computation6,015 887 6,231 5,931 879 5,858 
Basic net income per share$1.22 $1.22 $1.22 $1.45 $1.45 $1.45 
Diluted net income per share:
Numerator
Allocation of undistributed earnings for basic computation $7,329 $1,081 $7,592 $8,600 $1,275 $8,493 
Reallocation of undistributed earnings as a result of conversion of Class B to Class A shares1,081 0 0 1,275 0 0 
Reallocation of undistributed earnings(68)(9)68 (75)(10)75 
Allocation of undistributed earnings$8,342 $1,072 $7,660 $9,800 $1,265 $8,568 
Denominator
Number of shares used in basic computation6,015 887 6,231 5,931 879 5,858 
Weighted-average effect of dilutive securities
Add:
Conversion of Class B to Class A shares outstanding887 0 0 879 0 0 
Restricted stock units and other contingently issuable shares0 0 106 0 0 96 
Number of shares used in per share computation6,902 887 6,337 6,810 879 5,954 
Diluted net income per share$1.21 $1.21 $1.21 $1.44 $1.44 $1.44 
29

Alphabet Inc.
Six Months Ended June 30,
 20222023
 Class AClass BClass CClass AClass BClass C
Basic net income per share:
Numerator
Allocation of undistributed earnings $14,812 $2,190 $15,436 $15,597 $2,311 $15,511 
Denominator
Number of shares used in per share computation6,013 889 6,266 5,939 880 5,906 
Basic net income per share$2.46 $2.46 $2.46 $2.63 $2.63 $2.63 
Diluted net income per share:
Numerator
Allocation of undistributed earnings for basic computation $14,812 $2,190 $15,436 $15,597 $2,311 $15,511 
Reallocation of undistributed earnings as a result of conversion of Class B to Class A shares2,190 0 0 2,311 0 0 
Reallocation of undistributed earnings(162)(21)162 (96)(12)96 
Allocation of undistributed earnings$16,840 $2,169 $15,598 $17,812 $2,299 $15,607 
Denominator
Number of shares used in basic computation6,013 889 6,266 5,939 880 5,906 
Weighted-average effect of dilutive securities
Add:
Conversion of Class B to Class A shares outstanding889 0 0 880 0 0 
Restricted stock units and other contingently issuable shares0 0 127 0 0 69 
Number of shares used in per share computation6,902 889 6,393 6,819 880 5,975 
Diluted net income per share$2.44 $2.44 $2.44 $2.61 $2.61 $2.61 
For the periods presented above, the net income per share amounts are the same for Class A, Class B, and Class C stock because the holders of each class are entitled to equal per share dividends or distributions in liquidation in accordance with the Amended and Restated Certificate of Incorporation of Alphabet Inc.
Note 12. Compensation Plans
Stock-Based Compensation
For the three months ended June 30, 2022 and 2023, total stock-based compensation (SBC) expense was $4.9 billion and $5.4 billion, including amounts associated with awards we expect to settle in Alphabet stock of $4.6 billion and $5.6 billion, respectively. For the six months ended June 30, 2022 and 2023, total SBC expense was $9.4 billion and $10.7 billion, including amounts associated with awards we expect to settle in Alphabet stock of $9.0 billion and $10.7 billion, respectively.
During the six months ended June 30, 2023, total SBC expense includes $429 million associated with workforce reduction costs, of which $412 million and $17 million were recorded during the three months ended March 31, 2023 and June 30, 2023, respectively. See Note 7 for further information.
Stock-Based Award Activities
The following table summarizes the activities for unvested Alphabet restricted stock units (RSUs) for the six months ended June 30, 2023 (in millions, except per share amounts):
 Unvested Restricted Stock Units
 Number of
Shares
Weighted-
Average
Grant-Date
Fair Value
Unvested as of December 31, 2022324 $107.98 
Granted246 $95.30 
Vested(109)$99.65 
Forfeited/canceled(19)$108.30 
Unvested as of June 30, 2023442 $102.97 
30

Alphabet Inc.
As of June 30, 2023, there was $43.6 billion of unrecognized compensation cost related to unvested RSUs. This amount is expected to be recognized over a weighted-average period of 2.8 years.
Note 13. Income Taxes
The following table presents provision for income taxes (in millions, except for effective tax rate):
Three Months EndedSix Months Ended
June 30,June 30,
2022202320222023
Income before provision for income taxes$19,014 $21,903 $37,948 $40,108 
Provision for income taxes$3,012 $3,535 $5,510 $6,689 
Effective tax rate15.8 %16.1 %14.5 %16.7 %
We are subject to income taxes in the U.S. and foreign jurisdictions. Significant judgment is required in evaluating our uncertain tax positions and determining our provision for income taxes. The total amount of gross unrecognized tax benefits was $7.1 billion and $8.8 billion as of December 31, 2022 and June 30, 2023, respectively, of which $5.3 billion and $6.7 billion, if recognized, would affect our effective tax rate, respectively.
Note 14. Information about Segments and Geographic Areas
We report our segment results as Google Services, Google Cloud, and Other Bets:
Google Services includes products and services such as ads, Android, Chrome, hardware, Google Maps, Google Play, Search, and YouTube. Google Services generates revenues primarily from advertising; sales of apps and in-app purchases, and hardware; and fees received for subscription-based products such as YouTube Premium and YouTube TV.
Google Cloud includes infrastructure and platform services, collaboration tools, and other services for enterprise customers. Google Cloud generates revenues from fees received for Google Cloud Platform services, Google Workspace communication and collaboration tools, and other enterprise services.
Other Bets is a combination of multiple operating segments that are not individually material. Revenues from Other Bets are generated primarily from the sale of health technology and internet services.
Revenues, certain costs, such as costs associated with content and traffic acquisition, certain engineering activities, and hardware, as well as certain operating expenses are directly attributable to our segments. Due to the integrated nature of Alphabet, other costs and expenses, such as technical infrastructure and office facilities, are managed centrally at a consolidated level. These costs, including the associated depreciation and impairment, are allocated to operating segments as a service cost generally based on usage, headcount, or revenue.
Reflecting DeepMind's increasing collaboration with Google Services, Google Cloud, and Other Bets, beginning in the first quarter of 2023 DeepMind is reported as part of Alphabet's unallocated corporate costs instead of within Other Bets. Additionally, beginning in the first quarter of 2023, we updated and simplified our cost allocation methodologies to provide our business leaders with increased transparency for decision-making. Prior periods have been recast to conform to the current presentation.
As announced on April 20, 2023, we brought together part of Google Research (the Brain team) and DeepMind to significantly accelerate our progress in artificial intelligence (AI). The group, called Google DeepMind, is reported within Alphabet's unallocated corporate costs prospectively beginning in the second quarter of 2023. Previously, the Brain team was included within Google Services.
Certain costs are not allocated to our segments because they represent Alphabet-level activities. These costs primarily include AI-focused shared R&D activities; corporate initiatives such as our philanthropic activities; corporate shared costs such as certain finance, human resource, and legal costs, including certain fines and settlements. Charges associated with reductions in our workforce and office space announced in January 2023 are not allocated to our segments. Additionally, hedging gains (losses) related to revenue are not allocated to our segments.
Our operating segments are not evaluated using asset information.
31

Alphabet Inc.
The following table presents information about our segments (in millions):
 Three Months EndedSix Months Ended
June 30,June 30,
 2022202320222023
Revenues:
Google Services$62,841 $66,285 $124,313 $128,246 
Google Cloud6,276 8,031 12,097 15,485 
Other Bets193 285 633 573 
Hedging gains (losses)375 3 653 87 
Total revenues$69,685 $74,604 $137,696 $144,391 
 Three Months EndedSix Months Ended
June 30,June 30,
 2022202320222023
Operating income (loss):
Google Services$21,621 $23,454 $43,594 $45,191 
Google Cloud(590)395 (1,296)586 
Other Bets(1,339)(813)(2,174)(2,038)
Corporate costs, unallocated(239)(1,198)(577)(4,486)
Total income from operations$19,453 $21,838 $39,547 $39,253 
For revenues by geography, see Note 2.
The following table presents long-lived assets by geographic area, which includes property and equipment, net and operating lease assets (in millions):
As of
December 31, 2022
As of
June 30, 2023
Long-lived assets:
United States$93,565 $99,714 
International33,484 35,963 
Total long-lived assets$127,049 $135,677 
32

Alphabet Inc.
- -ITEM 2.MANAGEMENT’S DISCUSSION AND ANALYSIS OF FINANCIAL CONDITION AND RESULTS OF OPERATIONS
Please read the following discussion and analysis of our financial condition and results of operations together with "Note About Forward-Looking Statements" and our consolidated financial statements and related notes included under Item 1 of this Quarterly Report on Form 10-Q as well as our Annual Report on Form 10-K for the fiscal year ended December 31, 2022, including Part I, Item 1A "Risk Factors."
Understanding Alphabet’s Financial Results
Alphabet is a collection of businesses — the largest of which is Google. We report Google in two segments, Google Services and Google Cloud; we also report all non-Google businesses collectively as Other Bets. For further details on our segments, see Note 14 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
Revenues and Monetization Metrics
We generate revenues by delivering relevant, cost-effective online advertising; cloud-based solutions that provide enterprise customers of all sizes with infrastructure and platform services as well as communication and collaboration tools; sales of other products and services, such as apps and in-app purchases, and hardware; and fees received for subscription-based products. For details on how we recognize revenue, see Note 1 of the Notes to Consolidated Financial Statements included in Part II, Item 8 in our Annual Report on Form 10-K for the fiscal year ended December 31, 2022.
In addition to the long-term trends and their financial effect on our business noted in "Trends in Our Business and Financial Effect" in Part II, Item 7 of our Annual Report on Form 10-K for the fiscal year ended December 31, 2022, fluctuations in our revenues have been and may continue to be affected by a combination of factors, including:
changes in foreign currency exchange rates;
changes in pricing, such as those resulting from changes in fee structures, discounts, and customer incentives;
general economic conditions and various external dynamics, including geopolitical events, regulations, and other measures and their effect on advertiser, consumer, and enterprise spending;
new product and service launches; and
seasonality.
Additionally, fluctuations in our revenues generated from advertising ("Google advertising"), revenues from other sources ("Google other revenues"), Google Cloud, and Other Bets revenues have been and may continue to be affected by other factors unique to each set of revenues, as described below.
Google Services
Google Services revenues consist of Google advertising as well as Google other revenues.
Google Advertising
Google advertising revenues are comprised of the following:
Google Search & other, which includes revenues generated on Google search properties (including revenues from traffic generated by search distribution partners who use Google.com as their default search in browsers, toolbars, etc.), and other Google owned and operated properties like Gmail, Google Maps, and Google Play;
YouTube ads, which includes revenues generated on YouTube properties; and
Google Network, which includes revenues generated on Google Network properties participating in AdMob, AdSense, and Google Ad Manager.
We use certain metrics to track how well traffic across various properties is monetized as it relates to our advertising revenues: paid clicks and cost-per-click pertain to traffic on Google Search & other properties, while impressions and cost-per-impression pertain to traffic on our Google Network properties.
Paid clicks represent engagement by users and include clicks on advertisements by end-users on Google search properties and other Google owned and operated properties including Gmail, Google Maps, and Google
33

Alphabet Inc.
Play. Cost-per-click is defined as click-driven revenues divided by our total number of paid clicks and represents the average amount we charge advertisers for each engagement by users.
Impressions include impressions displayed to users on Google Network properties participating primarily in AdMob, AdSense, and Google Ad Manager. Cost-per-impression is defined as impression-based and click-based revenues divided by our total number of impressions, and represents the average amount we charge advertisers for each impression displayed to users.
As our business evolves, we periodically review, refine, and update our methodologies for monitoring, gathering, and counting the number of paid clicks and the number of impressions, and for identifying the revenues generated by the corresponding click and impression activity.
Fluctuations in our advertising revenues, as well as the change in paid clicks and cost-per-click on Google Search & other properties and the change in impressions and cost-per-impression on Google Network properties and the correlation between these items have been and may continue to be affected by additional factors, such as:
advertiser competition for keywords;
changes in advertising quality, formats, delivery or policy;
changes in device mix;
seasonal fluctuations in internet usage, advertising expenditures, and underlying business trends, such as traditional retail seasonality; and
traffic growth in emerging markets compared to more mature markets and across various verticals and channels.
Google Other
Google other revenues are comprised of the following:
Google Play, which includes sales of apps and in-app purchases;
hardware, which includes sales of Fitbit wearable devices, Google Nest home products, and Pixel devices;
YouTube non-advertising, which includes subscription revenues from services such as YouTube Premium and YouTube TV; and
other products and services.
Fluctuations in our Google other revenues have been and may continue to be affected by additional factors, such as changes in customer usage and demand, number of subscribers, and fluctuations in the timing of product launches.
Google Cloud
Google Cloud revenues are comprised of the following:
Google Cloud Platform, which includes fees for infrastructure, platform, and other services;
Google Workspace, which includes fees for cloud-based communication and collaboration tools for enterprises, such as Gmail, Docs, Drive, Calendar and Meet; and
other enterprise services.
Fluctuations in our Google Cloud revenues have been and may continue to be affected by additional factors, such as customer usage.
Other Bets
Revenues from Other Bets are generated primarily from the sale of health technology and internet services.
Costs and Expenses
Our cost structure has two components: cost of revenues and operating expenses. Our operating expenses include costs related to R&D, sales and marketing, and general and administrative functions. Certain of our costs and expenses, including those associated with the operation of our technical infrastructure as well as components of our operating expenses, are generally less variable in nature and may not correlate to changes in revenue.
34

Alphabet Inc.
Cost of Revenues
Cost of revenues is comprised of TAC and other costs of revenues.
TAC includes:
Amounts paid to our distribution partners who make available our search access points and services. Our distribution partners include browser providers, mobile carriers, original equipment manufacturers, and software developers.
Amounts paid to Google Network partners primarily for ads displayed on their properties.
Other cost of revenues includes:
Content acquisition costs, which are payments to content providers from whom we license video and other content for distribution on YouTube and Google Play (we pay fees to these content providers based on revenues generated or a flat fee).
Expenses associated with our data centers (including bandwidth, compensation expenses, depreciation, energy, and other equipment costs) as well as other operations costs (such as content review as well as customer and product support costs).
Inventory and other costs related to the hardware we sell.
TAC as a percentage of revenues generated from ads placed on Google Network properties are significantly higher than TAC as a percentage of revenues generated from ads placed on Google Search & other properties, because most of the advertiser revenues from ads served on Google Network properties are paid as TAC to our Google Network partners.
Operating Expenses
Operating expenses are generally incurred during our normal course of business, which we categorize as either R&D, sales and marketing, or general and administrative.
The main components of our R&D expenses are:
compensation expenses for engineering and technical employees responsible for R&D related to our existing and new products and services;
depreciation; and
third-party services fees primarily relating to consulting and outsourced services in support of our engineering and product development efforts.
The main components of our sales and marketing expenses are:
compensation expenses for employees engaged in sales and marketing, sales support, and certain customer service functions; and
spending relating to our advertising and promotional activities in support of our products and services.
The main components of our general and administrative expenses are:
compensation expenses for employees in finance, human resources, information technology, legal, and other administrative support functions;
expenses relating to legal matters, including fines and settlements; and
third-party services fees, including audit, consulting, outside legal, and other outsourced administrative services.
Other Income (Expense), Net
Other income (expense), net primarily consists of interest income (expense), the effect of foreign currency exchange gains (losses), net gains (losses) and impairment on our marketable and non-marketable securities, performance fees, and income (loss) and impairment from our equity method investments.
For additional details, including how we account for our investments and factors that can drive fluctuations in the value of our investments, see Note 1 of the Notes to Consolidated Financial Statements included in Part II, Item 8 and Item 7A, “Quantitative and Qualitative Disclosures About Market Risk” in our Annual Report on Form 10-K for
35

Alphabet Inc.
the fiscal year ended December 31, 2022 as well as Note 3 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
Provision for Income Taxes
Provision for income taxes represents the estimated amount of federal, state, and foreign income taxes incurred in the U.S. and the many jurisdictions in which we operate. The provision includes the effect of reserve provisions and changes to reserves that are considered appropriate as well as the related net interest and penalties.
For additional details, see Note 1 of the Notes to Consolidated Financial Statements included in Part II, Item 8 in our Annual Report on Form 10-K for the fiscal year ended December 31, 2022 as well as Note 13 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
Executive Overview
The following table summarizes our consolidated financial results (in millions, except per share information and percentages):
Three Months Ended
June 30,
20222023$ Change% Change
Consolidated revenues$69,685 $74,604 $4,919 7 %
Change in consolidated constant currency revenues(1)
9 %
Cost of revenues$30,104 $31,916 $1,812 6 %
Operating expenses$20,128 $20,850 $722 4 %
Operating income$19,453 $21,838 $2,385 12 %
Operating margin28 %29 %1 %
Other income (expense), net$(439)$65 $504 NM
Net Income$16,002 $18,368 $2,366 15 %
Diluted EPS$1.21 $1.44 $0.23 19 %
NM = Not Meaningful
(1) See "Use of Non-GAAP Constant Currency Measures" below for details relating to our use of constant currency information.
Revenues were $74.6 billion, an increase of 7% year over year, primarily driven by an increase in Google Services revenues of $3.4 billion, or 5%, and an increase in Google Cloud revenues of $1.8 billion, or 28%.
Total constant currency revenues, which exclude the effect of hedging, increased 9% year over year.
Cost of revenues was $31.9 billion, an increase of 6% year over year, primarily driven by an increase in content acquisition costs and hardware costs. An overall increase in data center and other operations costs was partially offset by a reduction in depreciation expense due to the change in estimated useful lives of our servers and certain network equipment.
Operating expenses were $20.9 billion, an increase of 4% year over year, primarily driven by an increase in compensation expenses largely due to headcount growth, partially offset by a reduction in valuation-based compensation liabilities related to certain Other Bets. Additionally, operating expenses benefited from a reduction in depreciation expense due to the change in the estimated useful lives of our servers and certain network equipment.
Other Information
In January 2023, we announced a reduction of our workforce, and as a result we recorded employee severance and related charges of $2.0 billion for the six months ended June 30, 2023. In addition, we are taking actions to optimize our global office space. As a result, total charges recorded during the six months ended June 30, 2023 were $633 million, of which $564 million and $69 million were recorded during the three months ended March 31, 2023 and June 30, 2023, respectively. We may incur additional charges in
36

Alphabet Inc.
the future as we further evaluate our real estate needs. For additional information, see Note 7 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
In January 2023, we completed an assessment of the useful lives of our servers and network equipment, resulting in a change in the estimated useful life of our servers and certain network equipment to six years. The effect of this change was a reduction in depreciation expense of $966 million and $2.0 billion for the three and six months ended June 30, 2023, respectively, recognized primarily in cost of revenues and R&D expenses. For additional information, see Note 1 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
Repurchases of Class A and Class C shares were $15.1 billion for the three months ended June 30, 2023. See Note 10 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q for additional information.
Operating cash flow was $28.7 billion for the three months ended June 30, 2023, and was affected by the 2023 IRS payment deferral relief made available to tax payers headquartered in designated counties in California.
Capital expenditures, which primarily reflected investments in technical infrastructure, were $6.9 billion for the three months ended June 30, 2023.
As of June 30, 2023, we had 181,798 employees. The substantial majority of the employees affected by the reduction of our workforce are no longer included in our headcount as of June 30, 2023. We expect most of the remaining employees affected will no longer be reflected in our headcount by the end of 2023, subject to local law and consultation requirements.
37

Alphabet Inc.
Financial Results
Revenues
The following table presents revenues by type (in millions):
 Three Months EndedSix Months Ended
June 30,June 30,
 2022202320222023
Google Search & other$40,689 $42,628 $80,307 $82,987
YouTube ads7,340 7,665 14,209 14,358
Google Network8,259 7,850 16,433 15,346
Google advertising56,288 58,143 110,949 112,691
Google other6,553 8,142 13,364 15,555
Google Services total62,841 66,285 124,313 128,246
Google Cloud6,276 8,031 12,097 15,485
Other Bets193 285 633 573
Hedging gains (losses)375 3 653 87
Total revenues$69,685 $74,604 $137,696 $144,391
Google Services
Google advertising revenues
Google Search & other
Google Search & other revenues increased $1.9 billion and $2.7 billion from the three and six months ended June 30, 2022 to the three and six months ended June 30, 2023, respectively. The overall growth was driven by interrelated factors including increases in search queries resulting from growth in user adoption and usage on mobile devices; growth in advertiser spending; and improvements we have made in ad formats and delivery. Additionally, growth was adversely affected by changes in foreign currency exchange rates for the six months ended June 30, 2023 and, to a lesser extent, for the three months ended June 30, 2023.
YouTube ads
YouTube ads revenues increased $325 million and $149 million from the three and six months ended June 30, 2022 to the three and six months ended June 30, 2023, respectively. The growth was driven by our brand advertising products followed by our direct response advertising products, both of which benefited from increased spending by our advertisers. Additionally, growth was adversely affected by changes in foreign currency exchange rates for the six months ended June 30, 2023 and, to a lesser extent, for the three months ended June 30, 2023.
Google Network
Google Network revenues decreased $409 million and $1.1 billion from the three and six months ended June 30, 2022 to the three and six months ended June 30, 2023, respectively, primarily driven by a decrease in Google Ad Manager and AdSense revenues. Additionally, Google Network revenues were adversely affected by changes in foreign currency exchange rates for the six months ended June 30, 2023 and, to a lesser extent, for the three months ended June 30, 2023.
Monetization Metrics
Paid clicks and cost-per-click
The following table presents year-over-year changes in paid clicks and cost-per-click (expressed as a percentage):
Three Months Ended June 30,Six Months Ended June 30,
20232023
Paid clicks change
8%
8%
Cost-per-click change
(3)%
(5)%
38

Alphabet Inc.
Paid clicks increased from the three and six months ended June 30, 2022 to the three and six months ended June 30, 2023 driven by a number of interrelated factors, including an increase in search queries resulting from growth in user adoption and usage on mobile devices; growth in advertiser spending; and ongoing product and policy changes.
Cost-per-click decreased from the three and six months ended June 30, 2022 to the three and six months ended June 30, 2023 driven by a number of interrelated factors including changes in device mix, geographic mix, advertiser spending, ongoing product and policy changes, and property mix. Additionally, cost-per-click was adversely affected by changes in foreign currency exchange rates for the six months ended June 30, 2023 and, to a lesser extent, for the three months ended June 30, 2023.
Impressions and cost-per-impression
The following table presents year-over-year changes in impressions and cost-per-impression (expressed as a percentage):
Three Months Ended June 30,Six Months Ended June 30,
20232023
Impressions change
0%
(2)%
Cost-per-impression change
(5)%
(5)%
Impressions were relatively unchanged from the three months ended June 30, 2022 to the three months ended June 30, 2023, as an increase in AdMob was largely offset by decreases in AdSense and Google Ad Manager. The decrease in cost-per-impression from the three months ended June 30, 2022 to the three months ended June 30, 2023 was driven by a number of interrelated factors including ongoing product and policy changes, changes in device mix, geographic mix, product mix, and property mix, as well as the adverse effect of changes in foreign currency exchange rates.
Impressions decreased from the six months ended June 30, 2022 to the six months ended June 30, 2023 driven by decreases in Google Ad Manager and AdSense, partially offset by an increase in AdMob. The decrease in cost-per-impression from the six months ended June 30, 2022 to the six months ended June 30, 2023 was driven by a number of interrelated factors including ongoing product and policy changes, changes in device mix, geographic mix, product mix, and property mix, as well as the adverse effect of changes in foreign currency exchange rates.
Google other revenues
Google other revenues increased $1.6 billion and $2.2 billion from the three and six months ended June 30, 2022 to the three and six months ended June 30, 2023 primarily driven by growth in YouTube non-advertising, largely due to an increase in paid subscribers, and growth in hardware, due to increased sales of Pixel devices, in large part due to product launch timing. Additionally, growth was adversely affected by changes in foreign currency exchange rates for the six months ended June 30, 2023 and, to a lesser extent, for the three months ended June 30, 2023.
Google Cloud
Google Cloud revenues increased $1.8 billion and $3.4 billion from the three and six months ended June 30, 2022 to the three and six months ended June 30, 2023, respectively. Growth was primarily driven by Google Cloud Platform followed by Google Workspace offerings. Google Cloud's infrastructure and platform services were the largest drivers of growth in Google Cloud Platform.
39

Alphabet Inc.
Revenues by Geography
The following table presents revenues by geography as a percentage of revenues, determined based on the addresses of our customers:
Three Months EndedSix Months Ended
 June 30,June 30,
 2022202320222023
United States47 %47 %47 %47 %
EMEA29 %30 %30 %30 %
APAC17 %17 %17 %17 %
Other Americas6 %6 %6 %6 %
Hedging gains (losses)1 %0 %0 %0 %
For further details on revenues by geography, see Note 2 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
Use of Non-GAAP Constant Currency Information
International revenues, which represent a significant portion of our revenues, are generally transacted in multiple currencies and therefore are affected by fluctuations in foreign currency exchange rates.
The effect of currency exchange rates on our business is an important factor in understanding period-to-period comparisons. We use non-GAAP constant currency revenues ("constant currency revenues") and non-GAAP percentage change in constant currency revenues ("percentage change in constant currency revenues") for financial and operational decision-making and as a means to evaluate period-to-period comparisons. We believe the presentation of results on a constant currency basis in addition to GAAP results helps improve the ability to understand our performance, because it excludes the effects of foreign currency volatility that are not indicative of our core operating results.
Constant currency information compares results between periods as if exchange rates had remained constant period over period. We define constant currency revenues as revenues excluding the effect of foreign currency exchange rate movements ("FX Effect") as well as hedging activities, which are recognized at the consolidated level. We use constant currency revenues to determine the constant currency revenue percentage change on a year-on-year basis. Constant currency revenues are calculated by translating current period revenues using prior year comparable period exchange rates, as well as excluding any hedging effects realized in the current period.
Constant currency revenue percentage change is calculated by determining the change in current period revenues over prior year comparable period revenues where current period foreign currency revenues are translated using prior year comparable period exchange rates and hedging effects are excluded from revenues of both periods.
These results should be considered in addition to, not as a substitute for, results reported in accordance with GAAP. Results on a constant currency basis, as we present them, may not be comparable to similarly titled measures used by other companies and are not a measure of performance presented in accordance with GAAP.
40

Alphabet Inc.
The following table presents the foreign currency exchange effect on international revenues and total revenues (in millions, except percentages):
Three Months Ended June 30, 2023
% Change from Prior Period
Three Months Ended June 30,Less FX EffectConstant Currency RevenuesAs ReportedLess Hedging EffectLess FX EffectConstant Currency Revenues
20222023
United States$32,727 $35,073 $0 $35,073 7 %0 %7 %
EMEA20,533 22,289 (275)22,564 9 %(1)%10 %
APAC11,710 12,728 (565)13,293 9 %(5)%14 %
Other Americas4,340 4,511 (306)4,817 4 %(7)%11 %
Revenues, excluding hedging effect
69,310 74,601 (1,146)75,747 8 %(1)%9 %
Hedging gains (losses)375 3
Total revenues(1)
$69,685 $74,604 $75,747 7 %(1)%(1)%9 %
(1)Total constant currency revenues of $75.7 billion for the three months ended June 30, 2023 increased $6.4 billion compared to $69.3 billion in revenues, excluding hedging effect, for the three months ended June 30, 2022.
EMEA revenue growth was unfavorably affected by changes in foreign currency exchange rates, primarily due to the U.S. dollar strengthening relative to the British pound.
APAC revenue growth was unfavorably affected by changes in foreign currency exchange rates, primarily due to the U.S. dollar strengthening relative to the Japanese yen.
Other Americas revenue growth was unfavorably affected by changes in foreign currency exchange rates, primarily due to the U.S. dollar strengthening relative to the Argentine peso.
Six Months Ended June 30, 2023
% Change from Prior Period
Six Months Ended June 30,Less FX EffectConstant Currency RevenuesAs ReportedLess Hedging EffectLess FX EffectConstant Currency Revenues
20222023
United States$64,460 $67,937 $0 $67,937 5 %0 %5 %
EMEA40,850 43,367 (1,448)44,815 6 %(4)%10 %
APAC23,551 24,409 (1,399)25,808 4 %(6)%10 %
Other Americas8,182 8,591 (473)9,064 5 %(6)%11 %
Revenues, excluding hedging effect
137,043 144,304 (3,320)147,624 5 %(3)%8 %
Hedging gains (losses)653 87
Total revenues(1)
$137,696 $144,391 $147,624 5 %0 %(3)%8 %
(1)Total constant currency revenues of $147.6 billion for the six months ended June 30, 2023 increased $10.6 billion compared to $137.0 billion in revenues, excluding hedging effect, for the six months ended June 30, 2022.
EMEA revenue growth was unfavorably affected by changes in foreign currency exchange rates, primarily due to the U.S. dollar strengthening relative to the British pound and the Euro.
APAC revenue growth was unfavorably affected by changes in foreign currency exchange rates, primarily due to the U.S. dollar strengthening relative to the Japanese yen.
Other Americas revenue growth was unfavorably affected by changes in foreign currency exchange rates, primarily due to the U.S. dollar strengthening relative to the Argentine peso.
41

Alphabet Inc.
Costs and Expenses
Cost of Revenues
The following table presents cost of revenues, including TAC (in millions, except percentages):
Three Months EndedSix Months Ended
 June 30,June 30,
 2022202320222023
TAC$12,214 $12,537 $24,204 $24,258
Other cost of revenues17,890 19,379 35,499 38,270
Total cost of revenues$30,104 $31,916 $59,703 $62,528
Total cost of revenues as a percentage of revenues43 %43 %43 %43 %
Cost of revenues increased $1.8 billion from the three months ended June 30, 2022 to the three months ended June 30, 2023 due to an increase in other cost of revenues and TAC of $1.5 billion and $323 million, respectively. Cost of revenues increased $2.8 billion from the six months ended June 30, 2022 to the six months ended June 30, 2023, primarily due to an increase in other cost of revenues of $2.8 billion.
The increase in TAC from the three months ended June 30, 2022 to the three months ended June 30, 2023 was largely due to an increase in TAC paid to distribution partners, primarily driven by growth in revenues subject to TAC. TAC was relatively unchanged from the six months ended June 30, 2022 to the six months ended June 30, 2023. The TAC rate decreased from 21.7% to 21.6% from the three months ended June 30, 2022 to the three months ended June 30, 2023 and decreased from 21.8% to 21.5% from the six months ended June 30, 2022 to the six months ended June 30, 2023 primarily due to a revenue mix shift from Google Network properties to Google Search & other properties. The TAC rate on Google Search & other revenues and the TAC rate on Google Network revenues were both substantially consistent from the three and six months ended June 30, 2022 to the three and six months ended June 30, 2023.
The increase in other cost of revenues from the three months ended June 30, 2022 to the three months ended June 30, 2023 was primarily due to increases in content acquisition costs, primarily for YouTube, and hardware costs. An overall increase in data center and other operations costs was partially offset by a reduction in depreciation expense due to the change in the estimated useful lives of our servers and certain network equipment.
The increase in other cost of revenues from the six months ended June 30, 2022 to the six months ended June 30, 2023 was primarily due to increases in content acquisition costs, primarily for YouTube, and data center and other operations costs. The overall increase in data center and other operations costs includes $700 million of charges related to employee severance associated with the reduction of our workforce and our office space optimization efforts, partially offset by a reduction in depreciation expense due to the change in the estimated useful lives of our servers and certain network equipment.
Research and Development
The following table presents R&D expenses (in millions, except percentages):
Three Months EndedSix Months Ended
 June 30,June 30,
 2022202320222023
Research and development expenses$9,841 $10,588 $18,960 $22,056
Research and development expenses as a percentage of revenues14 %14 %14 %15 %
R&D expenses increased $747 million from the three months ended June 30, 2022 to the three months ended June 30, 2023 primarily driven by an increase in compensation expenses of $356 million and an increase in depreciation of $168 million. The $356 million increase in compensation expenses was largely the result of a 6% increase in average headcount, after adjusting for roles affected by the reduction in workforce, partially offset by a reduction in valuation-based compensation liabilities related to certain Other Bets. The $168 million increase in depreciation includes the benefit of the change in the estimated useful lives of our servers and network equipment.
R&D expenses increased $3.1 billion from the six months ended June 30, 2022 to the six months ended June 30, 2023 primarily driven by an increase in compensation expenses of $2.0 billion and an increase in depreciation of $294 million. The $2.0 billion increase in compensation expenses was largely the result of a 10% increase in average headcount, after adjusting for roles affected by the reduction in workforce, and $832 million in employee
42

Alphabet Inc.
severance charges associated with the reduction of our workforce. The $294 million increase in depreciation includes the benefit of the change in the estimated useful lives of our servers and network equipment.
Sales and Marketing
The following table presents sales and marketing expenses (in millions, except percentages):
Three Months EndedSix Months Ended
 June 30,June 30,
 2022202320222023
Sales and marketing expenses$6,630 $6,781 $12,455 $13,314
Sales and marketing expenses as a percentage of revenues10 %9 %9 %9 %
Sales and marketing expenses increased $151 million from the three months ended June 30, 2022 to the three months ended June 30, 2023 primarily driven by an increase in compensation expenses of $320 million, largely due to a combination of factors, none of which were individually significant.
Sales and marketing expenses increased $859 million from the six months ended June 30, 2022 to the six months ended June 30, 2023 primarily driven by an increase in compensation expenses of $1.1 billion, largely due to $444 million in employee severance charges associated with the reduction in our workforce and a 5% increase in average headcount, after adjusting for roles affected by the reduction in workforce.
General and Administrative
The following table presents general and administrative expenses (in millions, except percentages):
Three Months EndedSix Months Ended
 June 30,June 30,
 2022202320222023
General and administrative expenses$3,657 $3,481 $7,031 $7,240
General and administrative expenses as a percentage of revenues5 %5 %5 %5 %
General and administrative expenses decreased $176 million from the three months ended June 30, 2022 to the three months ended June 30, 2023, due to a combination of factors, none of which were individually significant.
General and administrative expenses increased $209 million from the six months ended June 30, 2022 to the six months ended June 30, 2023, primarily driven by an increase in compensation expenses of $319 million, largely due to $259 million in employee severance charges associated with the reduction in our workforce.
Segment Profitability
The following table presents segment operating income (loss) (in millions).
Three Months EndedSix Months Ended
June 30,June 30,
2022202320222023
Operating income (loss):
Google Services$21,621 $23,454 $43,594 $45,191
Google Cloud(590)395 (1,296)586
Other Bets(1,339)(813)(2,174)(2,038)
Corporate costs, unallocated(1)
(239)(1,198)(577)(4,486)
Total income from operations$19,453 $21,838 $39,547 $39,253
(1)In addition to the Alphabet-level costs included in unallocated corporate costs, hedging gains (losses) related to revenue were $375 million and $3 million for the three months ended June 30, 2022 and 2023, respectively, and $653 million and $87 million for the six months ended June 30, 2022 and 2023, respectively. For the three and six months ended June 30, 2023, unallocated corporate costs include charges related to the reductions in our workforce and office space totaling $70 million and $2.6 billion, respectively.
43

Alphabet Inc.
Google Services
Google Services operating income increased $1.8 billion from the three months ended June 30, 2022 to the three months ended June 30, 2023 and increased $1.6 billion from the six months ended June 30, 2022 to the six months ended June 30, 2023. The increase in operating income was primarily driven by an increase in revenues, partially offset by an increase in compensation expenses and content acquisition costs. Additionally, operating income benefited from a reduction in costs driven by the change in the estimated useful lives of our servers and certain network equipment.
Google Cloud
Google Cloud operating income of $395 million for the three months ended June 30, 2023 compared to an operating loss of $590 million for the three months ended June 30, 2022 represents an increase of $985 million. Operating income of $586 million for the six months ended June 30, 2023 compared to an operating loss of $1.3 billion for the six months ended June 30, 2022 represents an increase of $1.9 billion. The increase in operating income was primarily driven by revenue growth, partially offset by an increase in compensation expenses. Additionally, operating income benefited from a reduction in costs driven by the change in the estimated useful lives of our servers and certain network equipment.
Other Bets
Other Bets operating loss decreased $526 million from the three months ended June 30, 2022 to the three months ended June 30, 2023 and decreased $136 million from the six months ended June 30, 2022 to the six months ended June 30, 2023, primarily driven by a reduction in valuation-based compensation liabilities related to certain Other Bets.
Other Income (Expense), Net
The following table presents other income (expense), net (in millions):
Three Months EndedSix Months Ended
 June 30,June 30,
 2022202320222023
Other income (expense), net$(439)$65 $(1,599)$855
Other income (expense), net, increased $504 million from the three months ended June 30, 2022 to the three months ended June 30, 2023 primarily due to gains and losses on equity and debt securities and changes in interest income. In the three months ended June 30, 2023, we recognized $892 million of interest income and $398 million of net unrealized gains on marketable equity securities. This was partially offset by $689 million of net unrealized losses on non-marketable equity securities and $304 million of net losses on debt securities. In the three months ended June 30, 2022, we recognized $1.2 billion of net unrealized losses on marketable equity securities and $790 million of net losses on debt securities. This was partially offset by $911 million of net unrealized gains on non-marketable equity securities and $486 million of interest income.
Other income (expense), net, increased $2.5 billion from the six months ended June 30, 2022 to the six months ended June 30, 2023 primarily due to unrealized gains and losses on equity securities and changes in interest income. In the six months ended June 30, 2023, we recognized $1.7 billion of interest income. This was partially offset by $597 million and $478 million of net losses on debt securities and foreign currency exchange, respectively, and $468 million of net unrealized losses on non-marketable equity securities. In the six months ended June 30, 2022, we recognized $2.5 billion of net unrealized losses on marketable equity securities, and $1.2 billion of net losses on debt securities. This was partially offset by $1.4 billion of net unrealized gains on non-marketable equity securities.
See Note 6 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q for further information.
44

Alphabet Inc.
Provision for Income Taxes
The following table presents provision for income taxes (in millions, except effective tax rate):
Three Months EndedSix Months Ended
June 30,June 30,
2022202320222023
Income before provision for income taxes$19,014 $21,903 $37,948 $40,108
Provision for income taxes$3,012 $3,535 $5,510 $6,689
Effective tax rate15.8 %16.1 %14.5 %16.7 %
The effective tax rate increased from the three months ended June 30, 2022 to the three months ended June 30, 2023, primarily driven by changes in certain tax return positions, partially offset by a decrease in the tax rate due to reduced 2023 tax losses of certain subsidiaries for which there is no tax benefit.
The effective tax rate increased from the six months ended June 30, 2022 to the six months ended June 30, 2023, primarily driven by a decrease in the stock-based compensation-related tax benefit and changes in certain tax return positions.
On July 21, 2023 the IRS announced in a notice that taxpayers can temporarily apply the regulations in effect prior to 2022 related to U.S. federal foreign tax credits. This relief applies to foreign taxes paid or accrued in our fiscal years 2022 and 2023. We are currently evaluating the effect on our consolidated financial statements and expect to recognize any changes in our financial results for the period ending September 30, 2023.
Financial Condition
Cash, Cash Equivalents, and Marketable Securities
As of June 30, 2023, we had $118.3 billion in cash, cash equivalents, and short-term marketable securities. Cash equivalents and marketable securities are comprised of time deposits, money market funds, highly liquid government bonds, corporate debt securities, mortgage-backed and asset-backed securities, and marketable equity securities.
Sources, Uses of Cash and Related Trends
Our principal sources of liquidity are cash, cash equivalents, and marketable securities, as well as the cash flow that we generate from operations. The primary use of capital continues to be to invest for the long-term growth of the business. We regularly evaluate our cash and capital structure, including the size, pace, and form of capital return to stockholders.
The following table presents our cash flows (in millions):
 Six Months Ended
June 30,
 20222023
Net cash provided by operating activities$44,528 $52,175
Net cash used in investing activities$(13,238)$(13,746)
Net cash used in financing activities$(34,031)$(34,403)
Cash Provided by Operating Activities
Our largest source of cash provided by operations are advertising revenues generated by Google Search & other properties, Google Network properties, and YouTube properties. Additionally, we generate cash through sales of apps and in-app purchases, and hardware; and licensing and service fees, including fees received for Google Cloud offerings and subscription-based products.
Our primary uses of cash from operating activities include payments to distribution and Google Network partners, to employees for compensation, and to content providers. Other uses of cash from operating activities include payments to suppliers for hardware, to tax authorities for income taxes, and other general corporate expenditures.
Net cash provided by operating activities increased from the six months ended June 30, 2022 to the six months ended June 30, 2023 due to the 2023 IRS payment deferral relief made available to taxpayers
45

Alphabet Inc.
headquartered in designated counties in California, partially offset by increased cash payments for costs and expenses.
Cash Used in Investing Activities
Cash provided by investing activities consists primarily of maturities and sales of investments in marketable and non-marketable securities. Cash used in investing activities consists primarily of purchases of marketable and non-marketable securities, purchases of property and equipment, and payments for acquisitions.
Net cash used in investing activities increased from the six months ended June 30, 2022 to the six months ended June 30, 2023 as a result of an increase in net purchases of and maturities and sales of marketable securities, partially offset by a decrease in purchases of property and equipment.
Cash Used in Financing Activities
Cash provided by financing activities consists primarily of proceeds from issuance of debt and proceeds from the sale of interest in consolidated entities. Cash used in financing activities consists primarily of repurchases of stock, net payments related to stock-based award activities, and repayments of debt.
Net cash used in financing activities increased from the six months ended June 30, 2022 to the six months ended June 30, 2023 primarily due to an increase in repurchases of stock partially offset by a decrease in net payments related to stock-based award activities.
Liquidity and Material Cash Requirements
We expect existing cash, cash equivalents, short-term marketable securities, cash flows from operations and financing activities to continue to be sufficient to fund our operating activities and cash commitments for investing and financing activities for at least the next 12 months and thereafter for the foreseeable future.
Capital Expenditures and Leases
We make investments in land and buildings for data centers and offices and information technology assets through purchases of property and equipment and lease arrangements to provide capacity for the growth of our services and products.
Capital Expenditures
Our capital investments in property and equipment consist primarily of the following major categories:
technical infrastructure, which consists of our investments in servers and network equipment for computing, storage, and networking requirements for ongoing business activities, including AI, (collectively referred to as our information technology assets) and data center land and building construction; and
office facilities, ground-up development projects, and building improvements (also referred to as "fit-outs").
Construction in progress consists primarily of technical infrastructure and office facilities which have not yet been placed in service. The time frame from date of purchase to placement in service of these assets may extend from months to years. For example, our data center construction projects are generally multi-year projects with multiple phases, where we acquire qualified land and buildings, construct buildings, and secure and install information technology assets.
During the six months ended June 30, 2022 and 2023, we spent $16.6 billion and $13.2 billion on capital expenditures, respectively. We expect to continue to invest in our technical infrastructure, including servers, network equipment, and data centers, over the remainder of 2023 and into 2024 to support the growth of our business and our long-term initiatives, in particular in support of AI. Depreciation of our property and equipment commences when the deployment of such assets are completed and are ready for our intended use. Land is not depreciated. For the six months ended June 30, 2022 and 2023, our depreciation and impairment expenses on property and equipment were $7.3 billion and $6.3 billion, respectively.
Leases
For the six months ended June 30, 2022 and 2023, we recognized total operating lease assets of $2.2 billion and $1.7 billion, respectively. As of June 30, 2023, the amount of total future lease payments under operating leases, which had a weighted average remaining lease term of 8.2 years, was $18.2 billion. As of June 30, 2023, we have entered into leases that have not yet commenced with future lease payments of $2.9 billion, that are not yet recorded on our Consolidated Balance Sheets. These leases will commence between 2023 and 2027 with non-cancelable lease terms of 1 to 34 years. As of June 30, 2023 our actions to optimize our office space did not affect our operating lease obligations.
46

Alphabet Inc.
For the six months ended June 30, 2022 and 2023, our operating lease expenses (including variable lease costs) were $1.8 billion and $2.2 billion, respectively. Finance lease costs were not material for the six months ended June 30, 2022 and 2023.
Financing
We have a short-term debt financing program of up to $10.0 billion through the issuance of commercial paper. Net proceeds from this program are used for general corporate purposes. As of June 30, 2023, we had no commercial paper outstanding.
As of June 30, 2023, we had $10.0 billion of revolving credit facilities, $4.0 billion expiring in April 2024 and $6.0 billion expiring in April 2028. The interest rates for all credit facilities are determined based on a formula using certain market rates, as well as our progress toward the achievement of certain sustainability goals. No amounts have been borrowed under the credit facilities.
As of June 30, 2023, we had senior unsecured notes outstanding with a total carrying value of $12.9 billion. See Note 5 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q for further information on our debt.
We primarily utilize contract manufacturers for the assembly of our servers used in our technical infrastructure and hardware products we sell. We have agreements where we may purchase components directly from suppliers and then supply these components to contract manufacturers for use in the assembly of the servers and hardware products. Certain of these arrangements result in a portion of the cash received from and paid to the contract manufacturers to be presented as financing activities in the Consolidated Statements of Cash Flows included in Item 1 of this Quarterly Report on Form 10-Q.
Share Repurchase Program
During the three and six months ended June 30, 2023, we repurchased and subsequently retired 131 million and 288 million shares for $15.1 billion and $30.2 billion, respectively. Of the aggregate amount repurchased and subsequently retired during the three months ended June 30, 2023, 17 million shares were Class A stock for $1.9 billion and 114 million shares were Class C stock for $13.2 billion. Of the aggregate amount repurchased and subsequently retired during the six months ended June 30, 2023, 37 million shares were Class A stock for $3.9 billion and 251 million shares were Class C stock for $26.3 billion.
In April 2022, the Board of Directors of Alphabet authorized the company to repurchase up to $70.0 billion of its Class A and Class C shares. The repurchases from the April 2022 authorization were completed during the second quarter of 2023. In April 2023, the Board of Directors of Alphabet authorized the company to repurchase up to an additional $70.0 billion of its Class A and Class C shares. As of June 30, 2023, $68.1 billion remains available for Class A and Class C share repurchases.
See Note 10 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
The U.S. Inflation Reduction Act of 2022 was enacted on August 16, 2022 and requires a one percent excise tax on certain share repurchases in excess of shares issued for employee compensation made after December 31, 2022. We do not expect this provision to have a material effect on our consolidated financial statements.
European Commission Fines
In 2017, 2018 and 2019, the EC announced decisions that certain actions taken by Google infringed European competition law and imposed fines of €2.4 billion ($2.7 billion as of June 27, 2017), €4.3 billion ($5.1 billion as of June 30, 2018), and €1.5 billion ($1.7 billion as of March 20, 2019), respectively. On September 14, 2022, the General Court reduced the 2018 fine from €4.3 billion to €4.1 billion. We subsequently filed an appeal to the European Court of Justice.
While each EC decision is under appeal, we included the fines in accrued expenses and other current liabilities on our Consolidated Balance Sheets as we provided bank guarantees (in lieu of a cash payment) for the fines. For further details, see Note 9 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
Taxes
As of June 30, 2023, we had short-term and long-term income taxes payable of $3.6 billion and $2.2 billion related to a one-time transition tax payable incurred as a result of the U.S. Tax Cuts and Jobs Act ("Tax Act"). As
47

Alphabet Inc.
permitted by the Tax Act, we will pay the transition tax in annual interest-free installments through 2025. We also have long-term taxes payable of $6.6 billion primarily related to uncertain tax positions as of June 30, 2023.
As a result of the 2023 IRS payment deferral relief made available to taxpayers headquartered in designated counties in California, we are postponing our second and third quarter tax payments until the fourth quarter of 2023. See Note 6 of the Notes to Consolidated Financial Statements included in Item 1 of this Quarterly Report on Form 10-Q.
Purchase Commitments
As of June 30, 2023, we had material contractual obligations of $42.0 billion, of which $27.9 billion was short-term. These amounts consist of purchase orders for certain technical infrastructure as well as the non-cancelable portion or the minimum cancellation fee in certain agreements related to commitments to purchase licenses, including content licenses, inventory and network capacity. For those agreements with variable terms, we do not estimate the non-cancelable obligation beyond any minimum quantities and/or pricing as of June 30, 2023. In certain instances, the amount of our contractual obligations may change based on the expected timing of order fulfillment from our suppliers. For more information related to our content licenses, see Note 9 of the Notes to Consolidated Financial Statements included in Item I of this Quarterly Report on Form 10-Q.
In addition we regularly enter into multi-year, non-cancellable agreements to purchase renewable energy and energy attributes, such as renewable energy certificates. These agreements do not include a minimum dollar commitment. The amounts to be paid under these agreements are based on the actual volumes to be generated and are not readily determinable.
Critical Accounting Estimates
See Part II, Item 7, "Critical Accounting Estimates" in our Annual Report on Form 10-K for the year ended December 31, 2022.
Available Information
Our website is located at www.abc.xyz, and our investor relations website is located at www.abc.xyz/investor. Access to our Annual Reports on Form 10-K, Quarterly Reports on Form 10-Q, Current Reports on Form 8-K, and our Proxy Statements, and any amendments to these reports, is available on our investor relations website, free of charge, after we file or furnish them with the SEC and they are available on the SEC's website at www.sec.gov.
We webcast via our investor relations website our earnings calls and certain events we participate in or host with members of the investment community. Our investor relations website also provides notifications of news or announcements regarding our financial performance and other items of interest to our investors, including SEC filings, investor events, press and earnings releases, and blogs. We also share Google news and product updates on Google’s Keyword blog at https://www.blog.google/, which may be of interest or material to our investors. Further, corporate governance information, including our certificate of incorporation, bylaws, governance guidelines, board committee charters, and code of conduct, is also available on our investor relations website under the heading "Governance." The content of our websites are not incorporated by reference into this Quarterly Report on Form 10-Q or in any other report or document we file with the SEC, and any references to our websites are intended to be inactive textual references only.
- -ITEM 3.QUANTITATIVE AND QUALITATIVE DISCLOSURES ABOUT MARKET RISK
For quantitative and qualitative disclosures about market risk, refer to Part II, Item 7A, Quantitative and Qualitative Disclosures About Market Risk, in our Annual Report on Form 10-K for the year ended December 31, 2022.
- -ITEM 4.CONTROLS AND PROCEDURES
Evaluation of Disclosure Controls and Procedures
Our management, with the participation of our chief executive officer and chief financial officer, evaluated the effectiveness of our disclosure controls and procedures pursuant to Rule 13a-15 under the Exchange Act, as of the end of the period covered by this Quarterly Report on Form 10-Q.
Based on this evaluation, our chief executive officer and chief financial officer concluded that, as of June 30, 2023, our disclosure controls and procedures are designed at a reasonable assurance level and are effective to provide reasonable assurance that information we are required to disclose in reports that we file or submit under the Exchange Act is recorded, processed, summarized, and reported within the time periods specified in the SEC’s rules and forms, and that such information is accumulated and communicated to our management, including our
48

Alphabet Inc.
chief executive officer and chief financial officer, as appropriate, to allow timely decisions regarding required disclosure.
Changes in Internal Control over Financial Reporting
There have been no changes in our internal control over financial reporting that occurred during the quarter ended June 30, 2023 that have materially affected, or are reasonably likely to materially affect, our internal control over financial reporting.
Limitations on Effectiveness of Controls and Procedures
In designing and evaluating the disclosure controls and procedures, management recognizes that any controls and procedures, no matter how well designed and operated, can provide only reasonable assurance of achieving the desired control objectives. In addition, the design of disclosure controls and procedures must reflect the fact that there are resource constraints and that management is required to apply its judgment in evaluating the benefits of possible controls and procedures relative to their costs.
49

Alphabet Inc.
PART II. OTHER INFORMATION
- -ITEM 1.LEGAL PROCEEDINGS
For a description of our material pending legal proceedings, see Note 9 “Commitments and Contingencies - Legal Matters” of the Notes to Consolidated Financial Statements included in Part I, Item 1 of this Quarterly Report on Form 10-Q, which is incorporated herein by reference.
- -ITEM 1A.RISK FACTORS 
Our operations and financial results are subject to various risks and uncertainties, including those described in Part I, Item 1A, "Risk Factors" in our Annual Report on Form 10-K for the year ended December 31, 2022, which could adversely affect our business, financial condition, results of operations, cash flows, and the trading price of our stock.
- -ITEM 2.UNREGISTERED SALES OF EQUITY SECURITIES AND USE OF PROCEEDS
Issuer Purchases of Equity Securities
The following table presents information with respect to Alphabet's repurchases of Class A and Class C stock during the quarter ended June 30, 2023.
Period
Total Number of Class A Shares Purchased
(in thousands) (1)
Total Number of Class C Shares Purchased
(in thousands) (1)
Average Price Paid per Class A Share (2)
Average Price Paid per Class C Share (2)
Total Number of Shares Purchased as Part of Publicly Announced Programs
(in thousands) (1)
Approximate Dollar Value of Shares that May Yet Be Purchased Under the Program
(in millions)
April 1 - 306,163 41,151 $106.53 $106.94 47,314 $78,059
May 1 - 315,490 38,571 $116.89 $116.97 44,061 $72,945
June 1 - 304,941 34,664 $123.29 $123.88 39,605 $68,070
Total16,594 114,386 130,980
(1) Repurchases are being executed from time to time, subject to general business and market conditions and other investment opportunities, through open market purchases or privately negotiated transactions, including through Rule 10b5-1 plans. The repurchase program does not have an expiration date. See Note 10 in Part I, Item 1 of this Quarterly Report on Form 10-Q for additional information related to share repurchases.
(2) Average price paid per share includes costs associated with the repurchases.
- - - - - -ITEM 5.OTHER INFORMATION
10b5-1 Trading Plans
During the fiscal quarter ended June 30, 2023, the following Section 16 officers adopted, modified or terminated “Rule 10b5-1 trading arrangements” (as defined in Item 408 of Regulation S-K of the Exchange Act):
Amie Thuener O’Toole, Vice President, Corporate Controller and Principal Accounting Officer, adopted a new trading plan on May 31, 2023 (with the first trade under the new plan scheduled for September 5, 2023). The trading plan will be effective until September 9, 2024 to sell an aggregate of (i) 2,904 shares of Class C Capital Stock, plus (ii) 50% of the (net) shares resulting from the vesting of 32,093 additional (gross) Class C Capital Stock during the plan period (net shares are net of tax withholding).
Kent Walker, President, Global Affairs, Chief Legal Officer and Secretary, effected a trading plan modification by terminating a trading plan on May 30, 2023, originally adopted on May 28, 2022, and adopting a new trading plan on May 31, 2023 (with the first trade under the new plan scheduled for September 5, 2023). The trading plan will be effective until February 27, 2026 to sell 100% of the (net) shares resulting from the vesting of 511,048 (gross) Class C Capital Stock during the plan period (net shares are net of tax withholding)*.
*In accordance with new SEC rules adopted on December 14, 2022, any modification or change to the amount, price, or timing of the purchase or sale of securities constitutes a termination of an existing Rule 10b5-1 trading arrangement and the adoption of a new Rule 10b5-1 trading arrangement.
There were no “non-Rule 10b5-1 trading arrangements” (as defined in Item 408 of Regulation S-K of the Exchange Act) adopted, modified or terminated during the fiscal quarter ended June 30, 2023 by our directors and Section 16 officers. Each of the Rule 10b5-1 trading arrangements are in accordance with our Policy Against Insider
50

Alphabet Inc.
Trading and actual sale transactions made pursuant to such trading arrangements will be disclosed publicly in Section 16 filings with the SEC in accordance with applicable securities laws, rules and regulations.
51

Alphabet Inc.
- -ITEM 6.EXHIBITS
Exhibit
Number
 DescriptionIncorporated by reference herein
FormDate
10.01Current Report on Form 8-K (File No. 001-37580)June 8, 2023
10.02*
10.03*
31.01*
31.02*
32.01
101.INS*Inline XBRL Instance Document - the instance document does not appear in the Interactive Data File because its XBRL tags are embedded within the Inline XBRL document.
101.SCH*Inline XBRL Taxonomy Extension Schema Document
101.CAL*Inline XBRL Taxonomy Extension Calculation Linkbase Document
101.DEF*Inline XBRL Taxonomy Extension Definition Linkbase Document
101.LAB*Inline XBRL Taxonomy Extension Label Linkbase Document
101.PRE*Inline XBRL Taxonomy Extension Presentation Linkbase Document
104
Cover Page Interactive Data File (formatted as Inline XBRL and contained in Exhibit 101)
__________________________
Indicates management compensatory plan, contract, or arrangement.
*Filed herewith.
Furnished herewith.

52

Alphabet Inc.
SIGNATURES
Pursuant to the requirements of the Securities Exchange Act of 1934, the registrant has duly caused this report to be signed on its behalf by the undersigned thereunto duly authorized.

ALPHABET INC.
July 25, 2023By:/s/ RUTH M. PORAT
Ruth M. Porat
Senior Vice President and Chief Financial Officer
ALPHABET INC.
July 25, 2023By:/s/ AMIE THUENER O'TOOLE
Amie Thuener O'Toole
Vice President, Corporate Controller and Principal Accounting Officer

53
\ No newline at end of file diff --git a/tests/unit/processing_engine/test_html_tag.py b/tests/unit/processing_engine/test_html_tag.py index 021dfb4..5ca9ad7 100644 --- a/tests/unit/processing_engine/test_html_tag.py +++ b/tests/unit/processing_engine/test_html_tag.py @@ -7,7 +7,6 @@ from sec_parser.processing_engine.html_tag import EmptyNavigableStringError, HtmlTag -# Test when input is a non-empty bs4.NavigableString object def test_init_with_non_empty_navigable_string(): # Arrange nav_string = NavigableString("Hello") @@ -24,7 +23,6 @@ def test_init_with_non_empty_navigable_string(): assert tag.string == "Hello" -# Test when input is an empty bs4.NavigableString object def test_init_with_empty_navigable_string(): # Arrange nav_string = NavigableString("") @@ -34,7 +32,6 @@ def test_init_with_empty_navigable_string(): HtmlTag(nav_string) -# Test when input is neither bs4.Tag nor bs4.NavigableString def test_init_with_unsupported_type(): # Arrange unsupported_element = 42 # an integer @@ -42,3 +39,20 @@ def test_init_with_unsupported_type(): # Act & Assert with pytest.raises(TypeError): HtmlTag(unsupported_element) + + +def test_to_dict(): + # Arrange + tag = bs4.Tag(name="span") + tag.string = "A" * 60 + + # Act + actual = HtmlTag(tag).to_dict() + + # Assert + assert actual == { + "tag_name": "span", + "text_preview": "AAAAAAAAAAAAAAAAAAAA...[20]...AAAAAAAAAAAAAAAAAAAA", + "html_preview": "AAAAAAAAAAAAAA...[33]...AAAAAAAAAAAAA", + "html_hash": "3836a62b", + } diff --git a/tests/unit/semantic_elements/test_abstract_level_element.py b/tests/unit/semantic_elements/test_abstract_level_element.py index 4ff5338..b02c7dc 100644 --- a/tests/unit/semantic_elements/test_abstract_level_element.py +++ b/tests/unit/semantic_elements/test_abstract_level_element.py @@ -1,7 +1,9 @@ from unittest.mock import Mock +import bs4 import pytest +from sec_parser.processing_engine.html_tag import HtmlTag from sec_parser.semantic_elements.abstract_semantic_element import ( AbstractLevelElement, InvalidLevelError, @@ -19,3 +21,15 @@ def test_invalid_level_raises(): # Act & Assert with pytest.raises(InvalidLevelError): DummyElement(Mock(), level=invalid_level) + + +def test_to_dict(): + # Arrange + tag = bs4.Tag(name="span") + tag.string = "A" * 60 + + # Act + actual = DummyElement(HtmlTag(tag)).to_dict() + + # Assert + assert actual["cls_name"] == "DummyElement" diff --git a/tests/unit/semantic_elements/test_composite_semantic_element.py b/tests/unit/semantic_elements/test_composite_semantic_element.py index ddab617..f50c948 100644 --- a/tests/unit/semantic_elements/test_composite_semantic_element.py +++ b/tests/unit/semantic_elements/test_composite_semantic_element.py @@ -1,7 +1,9 @@ from unittest.mock import Mock +import bs4 import pytest +from sec_parser.processing_engine.html_tag import HtmlTag from sec_parser.semantic_elements.abstract_semantic_element import ( AbstractSemanticElement, ) @@ -80,3 +82,17 @@ def test_convert_from_source_valid_inner_elements(default_inner_elements): assert isinstance(converted, CompositeSemanticElement) assert converted.inner_elements == default_inner_elements assert converted.html_tag == mock_html_tag + + +def test_to_dict(): + # Arrange + tag = bs4.Tag(name="span") + tag.string = "A" * 60 + + # Act + actual = CompositeSemanticElement( + HtmlTag(tag), inner_elements=[Mock(), Mock()] + ).to_dict() + + # Assert + assert actual["inner_elements"] == 2 diff --git a/tests/unit/semantic_elements/test_highlighted_text_element.py b/tests/unit/semantic_elements/test_highlighted_text_element.py index 2b9ed03..c482eb5 100644 --- a/tests/unit/semantic_elements/test_highlighted_text_element.py +++ b/tests/unit/semantic_elements/test_highlighted_text_element.py @@ -1,8 +1,14 @@ +from dataclasses import asdict from unittest.mock import Mock +import bs4 import pytest -from sec_parser.semantic_elements.highlighted_text_element import HighlightedTextElement +from sec_parser.processing_engine.html_tag import HtmlTag +from sec_parser.semantic_elements.highlighted_text_element import ( + HighlightedTextElement, + TextStyle, +) def test_highlighted_text_element_initialization(): @@ -15,3 +21,16 @@ def test_highlighted_text_element_initialization(): match="styles must be specified for HighlightedElement", ): HighlightedTextElement(mock_html_tag, style=None) + + +def test_to_dict(): + # Arrange + tag = bs4.Tag(name="span") + tag.string = "A" * 60 + style = TextStyle(bold_with_font_weight=True, italic=True) + + # Act + actual = HighlightedTextElement(HtmlTag(tag), style=style).to_dict() + + # Assert + assert actual["text_style"] == asdict(style)