earningscall 0.0.21__tar.gz → 0.0.22__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. {earningscall-0.0.21 → earningscall-0.0.22}/CHANGELOG.md +4 -0
  2. {earningscall-0.0.21 → earningscall-0.0.22}/DEVELOPMENT.md +8 -0
  3. {earningscall-0.0.21 → earningscall-0.0.22}/PKG-INFO +38 -2
  4. {earningscall-0.0.21 → earningscall-0.0.22}/README.md +37 -0
  5. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/api.py +9 -1
  6. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/company.py +3 -0
  7. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/transcript.py +10 -1
  8. {earningscall-0.0.21 → earningscall-0.0.22}/pyproject.toml +1 -1
  9. {earningscall-0.0.21 → earningscall-0.0.22}/scripts/download_audio_files.py +6 -0
  10. {earningscall-0.0.21 → earningscall-0.0.22}/scripts/download_sp500_audio_files.py +6 -0
  11. {earningscall-0.0.21 → earningscall-0.0.22}/scripts/get_single_transcript.py +10 -2
  12. earningscall-0.0.22/tests/data/aapl-q1-2022-speaker-name-map-v2.yaml +643 -0
  13. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_get_transcript.py +54 -5
  14. {earningscall-0.0.21 → earningscall-0.0.22}/.github/workflows/release.yml +0 -0
  15. {earningscall-0.0.21 → earningscall-0.0.22}/.github/workflows/test.yml +0 -0
  16. {earningscall-0.0.21 → earningscall-0.0.22}/.gitignore +0 -0
  17. {earningscall-0.0.21 → earningscall-0.0.22}/.python-version +0 -0
  18. {earningscall-0.0.21 → earningscall-0.0.22}/LICENSE +0 -0
  19. {earningscall-0.0.21 → earningscall-0.0.22}/TODO.md +0 -0
  20. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/__init__.py +0 -0
  21. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/errors.py +0 -0
  22. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/event.py +0 -0
  23. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/exports.py +0 -0
  24. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/sectors.py +0 -0
  25. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/symbols.py +0 -0
  26. {earningscall-0.0.21 → earningscall-0.0.22}/earningscall/utils.py +0 -0
  27. {earningscall-0.0.21 → earningscall-0.0.22}/hatch.toml +0 -0
  28. {earningscall-0.0.21 → earningscall-0.0.22}/scripts/download_single_audio_file.py +0 -0
  29. {earningscall-0.0.21 → earningscall-0.0.22}/scripts/get_all_company_transcripts.py +0 -0
  30. {earningscall-0.0.21 → earningscall-0.0.22}/scripts/list_companies.py +0 -0
  31. {earningscall-0.0.21 → earningscall-0.0.22}/setup.cfg +0 -0
  32. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/aapl-q1-2022-advanced-data-level-2.yaml +0 -0
  33. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/aapl-q1-2022-advanced-data-level-3.yaml +0 -0
  34. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/aapl-q1-2022-advanced-data-level-4.yaml +0 -0
  35. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/aapl-q1-2030-not-authorized-l2.yaml +0 -0
  36. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/aapl-q1-2030-not-authorized.yaml +0 -0
  37. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/aapl-q1-2030-not-found.yaml +0 -0
  38. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/aapl-q1-2030-server-error.yaml +0 -0
  39. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/demo-symbols-v2-alpha.yaml +0 -0
  40. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/demo-symbols-v2.yaml +0 -0
  41. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/meta-q3-2024-not-authorized.yaml +0 -0
  42. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/meta-q3-2024-not-found.yaml +0 -0
  43. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/meta-q3-2024-other-error.yaml +0 -0
  44. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/msft-company-events.yaml +0 -0
  45. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/msft-q1-2022-audio-file-short-clip.yaml +0 -0
  46. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/msft-transcript-response.yaml +0 -0
  47. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/sp500-company-list-failed.yaml +0 -0
  48. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/sp500-company-list.yaml +0 -0
  49. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/symbols-v2-missing-edge-cases.yaml +0 -0
  50. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/symbols-v2.yaml +0 -0
  51. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/symbols.txt +0 -0
  52. {earningscall-0.0.21 → earningscall-0.0.22}/tests/data/symbols.yaml +0 -0
  53. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_company.py +0 -0
  54. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_download_audio_files.py +0 -0
  55. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_earnings_event.py +0 -0
  56. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_exports.py +0 -0
  57. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_get_company_events.py +0 -0
  58. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_get_sp500_companies_api.py +0 -0
  59. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_helper.py +0 -0
  60. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_responses_mocking.py +0 -0
  61. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_sectors.py +0 -0
  62. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_symbols.py +0 -0
  63. {earningscall-0.0.21 → earningscall-0.0.22}/tests/test_utils.py +0 -0
@@ -1,3 +1,7 @@
1
+ ## Release `0.0.22` - 2024-10-07
2
+
3
+ * Add **experimental feature**: Speaker Names and Titles
4
+
1
5
  ## Release `0.0.21` - 2024-10-07
2
6
 
3
7
  * Bump version for PyPI release: updated README docs.
@@ -1,5 +1,13 @@
1
1
  # Development
2
2
 
3
+ The instructions on this page are meant for library contributors.
4
+ If you are interested in contributing to this project, read on.
5
+ Otherwise, if you are simply wanting to get EarningsCalls Transcripts or Audio Files,
6
+ please read the [README page](README.md) to get started.
7
+
8
+
9
+ ## Getting Started
10
+
3
11
  First, install Hatch plus other build dependencies. See the Hatch [installation instructions](https://hatch.pypa.io/latest/install/).
4
12
 
5
13
  My preferred way to install it is to use `pip`:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: earningscall
3
- Version: 0.0.21
3
+ Version: 0.0.22
4
4
  Summary: The EarningsCall Python library provides convenient access to the EarningsCall API. It includes a pre-defined set of classes for API resources that initialize themselves dynamically from API responses.
5
5
  Project-URL: Homepage, https://earningscall.biz
6
6
  Project-URL: Documentation, https://github.com/EarningsCall/earningscall-python
@@ -30,7 +30,6 @@ License: MIT License
30
30
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
31
31
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
32
32
  SOFTWARE.
33
- License-File: LICENSE
34
33
  Keywords: earning call app,earnings call,earnings call api,earnings call app,earnings call transcript api,earnings call transcripts,earnings call transcripts api,earnings calls,earnings transcript api,listen to earnings calls,transcripts,where to listen to earnings calls
35
34
  Classifier: Development Status :: 3 - Alpha
36
35
  Classifier: Intended Audience :: Developers
@@ -95,6 +94,8 @@ Apple Inc. Q3 2021 Transcript Text: "Good day, and welcome to the Apple Q3 FY 20
95
94
 
96
95
 
97
96
  ```python
97
+ from datetime import datetime
98
+
98
99
  from earningscall import get_company
99
100
 
100
101
  company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
@@ -102,6 +103,9 @@ company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
102
103
  print(f"Getting all transcripts for: {company}..")
103
104
  # Retrieve all earnings conference call events for a company, and iterate through each one
104
105
  for event in company.events():
106
+ if datetime.now().timestamp() < event.conference_date.timestamp():
107
+ print(f"* {company.company_info.symbol} Q{event.quarter} {event.year} -- skipping, conference date in the future")
108
+ continue
105
109
  transcript = company.get_transcript(event=event) # Fetch the earnings call transcript for this event
106
110
  print(f"* Q{event.quarter} {event.year}")
107
111
  if transcript:
@@ -153,6 +157,38 @@ Speaker: spk11
153
157
  Text: Good day, and welcome to the Apple Q3 FY 2021 Earnings Conference Call. Today's call is being recorded. At this time, for opening remarks and introductions, I would like to turn the call over to Tejas Ghala, Director, Investor Relations and Corporate Finance. Please go ahead.
154
158
  ```
155
159
 
160
+
161
+ ## Get Text by Speaker with Speaker Name and Title
162
+
163
+ NOTE: This is a new experimental feature. It includes Speaker Names and Titles.
164
+
165
+ ```python
166
+ from earningscall import get_company
167
+
168
+ company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
169
+
170
+ transcript = company.get_transcript(year=2021, quarter=3, level=2)
171
+
172
+ speaker = transcript.speakers[1] # Get second speaker
173
+ speaker_label = speaker.speaker_info.name
174
+ text = speaker.text
175
+ print("Speaker:")
176
+ print(f" Name: {speaker.speaker_info.name}")
177
+ print(f" Title: {speaker.speaker_info.title}")
178
+ print()
179
+ print(f"Text: {text}")
180
+ ```
181
+
182
+ Output
183
+
184
+ ```text
185
+ Speaker:
186
+ Name: Tejas Ghala
187
+ Title: Director, Investor Relations and Corporate Finance
188
+
189
+ Text: Thank you. Good afternoon, and thank you for joining us. Speaking first today is Apple CEO Tim Cook, and he'll be followed by CFO Luca Maestri. After that, we'll open the call to questions from analysts. Please note that some of the information you'll hear during our discussion today will consist of forward-looking statements, including without limitation, those regarding revenue, gross margin, operating expenses, other income and expenses, taxes, capital allocation, and future business outlook, including the potential impact of COVID-19 on the company's business and results of operations. These statements involve risks and uncertainties that may cause actual results or trends to differ materially from our forecast. For more information, please refer to the risk factors discussed in Apple's most recently filed annual report on Form 10-K and the Form 8-K filed with the SEC today, along with the associated press release. Apple assumes no obligation to update any forward-looking statements or information which speak as of their respective dates. I'd like to now turn the call over to Tim for introductory remarks.
190
+ ```
191
+
156
192
  ## Get Word-Level Timestamps
157
193
 
158
194
  If you want to get the word-level timestamps, you can do so by setting the `level` parameter to `3`.
@@ -44,6 +44,8 @@ Apple Inc. Q3 2021 Transcript Text: "Good day, and welcome to the Apple Q3 FY 20
44
44
 
45
45
 
46
46
  ```python
47
+ from datetime import datetime
48
+
47
49
  from earningscall import get_company
48
50
 
49
51
  company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
@@ -51,6 +53,9 @@ company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
51
53
  print(f"Getting all transcripts for: {company}..")
52
54
  # Retrieve all earnings conference call events for a company, and iterate through each one
53
55
  for event in company.events():
56
+ if datetime.now().timestamp() < event.conference_date.timestamp():
57
+ print(f"* {company.company_info.symbol} Q{event.quarter} {event.year} -- skipping, conference date in the future")
58
+ continue
54
59
  transcript = company.get_transcript(event=event) # Fetch the earnings call transcript for this event
55
60
  print(f"* Q{event.quarter} {event.year}")
56
61
  if transcript:
@@ -102,6 +107,38 @@ Speaker: spk11
102
107
  Text: Good day, and welcome to the Apple Q3 FY 2021 Earnings Conference Call. Today's call is being recorded. At this time, for opening remarks and introductions, I would like to turn the call over to Tejas Ghala, Director, Investor Relations and Corporate Finance. Please go ahead.
103
108
  ```
104
109
 
110
+
111
+ ## Get Text by Speaker with Speaker Name and Title
112
+
113
+ NOTE: This is a new experimental feature. It includes Speaker Names and Titles.
114
+
115
+ ```python
116
+ from earningscall import get_company
117
+
118
+ company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
119
+
120
+ transcript = company.get_transcript(year=2021, quarter=3, level=2)
121
+
122
+ speaker = transcript.speakers[1] # Get second speaker
123
+ speaker_label = speaker.speaker_info.name
124
+ text = speaker.text
125
+ print("Speaker:")
126
+ print(f" Name: {speaker.speaker_info.name}")
127
+ print(f" Title: {speaker.speaker_info.title}")
128
+ print()
129
+ print(f"Text: {text}")
130
+ ```
131
+
132
+ Output
133
+
134
+ ```text
135
+ Speaker:
136
+ Name: Tejas Ghala
137
+ Title: Director, Investor Relations and Corporate Finance
138
+
139
+ Text: Thank you. Good afternoon, and thank you for joining us. Speaking first today is Apple CEO Tim Cook, and he'll be followed by CFO Luca Maestri. After that, we'll open the call to questions from analysts. Please note that some of the information you'll hear during our discussion today will consist of forward-looking statements, including without limitation, those regarding revenue, gross margin, operating expenses, other income and expenses, taxes, capital allocation, and future business outlook, including the potential impact of COVID-19 on the company's business and results of operations. These statements involve risks and uncertainties that may cause actual results or trends to differ materially from our forecast. For more information, please refer to the risk factors discussed in Apple's most recently filed annual report on Form 10-K and the Form 8-K filed with the SEC today, along with the associated press release. Apple assumes no obligation to update any forward-looking statements or information which speak as of their respective dates. I'd like to now turn the call over to Tim for introductory remarks.
140
+ ```
141
+
105
142
  ## Get Word-Level Timestamps
106
143
 
107
144
  If you want to get the word-level timestamps, you can do so by setting the `level` parameter to `3`.
@@ -1,6 +1,7 @@
1
1
  import importlib
2
2
  import logging
3
3
  import os
4
+ from importlib.metadata import PackageNotFoundError
4
5
  from typing import Optional
5
6
 
6
7
  import requests
@@ -46,8 +47,15 @@ def purge_cache():
46
47
  return cache_session().cache.clear()
47
48
 
48
49
 
50
+ def get_earnings_call_version():
51
+ try:
52
+ return importlib.metadata.version("earningscall")
53
+ except PackageNotFoundError:
54
+ return None
55
+
56
+
49
57
  def get_headers():
50
- earnings_call_version = importlib.metadata.version("earningscall")
58
+ earnings_call_version = get_earnings_call_version()
51
59
  return {
52
60
  "User-Agent": f"EarningsCall Python/{earnings_call_version}",
53
61
  "X-EarningsCall-Version": earnings_call_version,
@@ -92,6 +92,9 @@ class Company:
92
92
  transcript.text = " ".join(map(lambda spk: spk.text, transcript.speakers))
93
93
  elif level == 4:
94
94
  transcript.text = " ".join([transcript.prepared_remarks, transcript.questions_and_answers])
95
+ if transcript.speaker_name_map_v2:
96
+ for speaker in transcript.speakers:
97
+ speaker.speaker_info = transcript.speaker_name_map_v2.get(speaker.speaker)
95
98
  return transcript
96
99
  except requests.exceptions.HTTPError as error:
97
100
  if error.response.status_code == 404:
@@ -1,15 +1,23 @@
1
1
  from dataclasses import dataclass, field
2
- from typing import List, Optional
2
+ from typing import List, Optional, Dict
3
3
 
4
4
  from dataclasses_json import dataclass_json
5
5
 
6
6
  from earningscall.event import EarningsEvent
7
7
 
8
8
 
9
+ @dataclass_json
10
+ @dataclass
11
+ class SpeakerInfo:
12
+ name: str
13
+ title: str
14
+
15
+
9
16
  @dataclass_json
10
17
  @dataclass
11
18
  class Speaker:
12
19
  speaker: str
20
+ speaker_info: Optional[SpeakerInfo] = field(default=None)
13
21
  text: Optional[str] = field(default=None)
14
22
  words: Optional[List[str]] = field(default=None)
15
23
  start_times: Optional[List[float]] = field(default=None)
@@ -23,3 +31,4 @@ class Transcript:
23
31
  speakers: Optional[List[Speaker]] = field(default=None)
24
32
  prepared_remarks: Optional[str] = field(default=None)
25
33
  questions_and_answers: Optional[str] = field(default=None)
34
+ speaker_name_map_v2: Optional[Dict[str, SpeakerInfo]] = field(default=None)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "earningscall"
3
- version = "0.0.21"
3
+ version = "0.0.22"
4
4
  description = "The EarningsCall Python library provides convenient access to the EarningsCall API. It includes a pre-defined set of classes for API resources that initialize themselves dynamically from API responses."
5
5
  readme = "README.md"
6
6
  authors = [
@@ -1,4 +1,5 @@
1
1
  import argparse
2
+ from datetime import datetime
2
3
  import os
3
4
 
4
5
  import earningscall # noqa: F401
@@ -26,6 +27,11 @@ os.makedirs(directory, exist_ok=True)
26
27
  def download_audio_files(company: Company):
27
28
  print(f"Downloading all audio files for: {company}..")
28
29
  for event in company.events():
30
+ if datetime.now().timestamp() < event.conference_date.timestamp():
31
+ print(
32
+ f"* {company.company_info.symbol} Q{event.quarter} {event.year} -- skipping, conference date in the future"
33
+ )
34
+ continue
29
35
  file_name = os.path.join(
30
36
  directory,
31
37
  f"{company.company_info.exchange}_{company.company_info.symbol}_{event.year}_Q{event.quarter}.mp3",
@@ -1,3 +1,4 @@
1
+ from datetime import datetime
1
2
  import os
2
3
 
3
4
  import earningscall # noqa: F401
@@ -14,6 +15,11 @@ os.makedirs(directory, exist_ok=True)
14
15
  def download_audio_files(company: Company):
15
16
  print(f"Downloading all audio files for: {company}..")
16
17
  for event in company.events():
18
+ if datetime.now().timestamp() < event.conference_date.timestamp():
19
+ print(
20
+ f"* {company.company_info.symbol} Q{event.quarter} {event.year} -- skipping, conference date in the future"
21
+ )
22
+ continue
17
23
  file_name = os.path.join(
18
24
  directory,
19
25
  f"{company.company_info.exchange}_{company.company_info.symbol}_{event.year}_Q{event.quarter}.mp3",
@@ -9,5 +9,13 @@ from earningscall import get_company
9
9
 
10
10
  company = get_company("aapl")
11
11
 
12
- transcript = company.get_transcript(year=2021, quarter=3, level=4)
13
- print(f"{company} Q3 2021 Transcript Text: \"{transcript.text[:100]}...\"")
12
+ transcript = company.get_transcript(year=2021, quarter=3, level=2)
13
+
14
+ speaker = transcript.speakers[1]
15
+ speaker_label = speaker.speaker_info.name
16
+ text = speaker.text
17
+ print("Speaker:")
18
+ print(f" Name: {speaker.speaker_info.name}")
19
+ print(f" Title: {speaker.speaker_info.title}")
20
+ print()
21
+ print(f"Text: {text}")
@@ -0,0 +1,643 @@
1
+ responses:
2
+ - response:
3
+ auto_calculate_content_length: false
4
+ body: '{"event": {"year": 2023, "quarter": 1, "conference_date": "2023-02-02T17:00:00.000-05:00"},
5
+ "speakers": [{"speaker": "spk12", "text": "Good day, everyone, and welcome to
6
+ the Apple Q1 Fiscal Year 2023 Earnings Conference Call. Today''s call is being
7
+ recorded. And now at this time, for opening remarks and introductions, I would
8
+ like to turn the call over to Teja Skala, Director of Investor Relations and
9
+ Corporate Finance. Please go ahead."}, {"speaker": "spk07", "text": "Thank you.
10
+ Speaking first today is Apple CEO Tim Cook, and he''ll be followed by CFO Luca
11
+ Maestri. After that, we''ll open the call to questions from analysts. Before
12
+ turning the call over to Tim, I would like to remind everyone that the December
13
+ quarter spanned 14 weeks, while the March quarter, as usual, has 13 weeks. Please
14
+ note that some of the information you''ll hear during our discussion today will
15
+ consist of forward-looking statements including, without limitation, those regarding
16
+ revenue, gross margin, operating expenses, other income and expense, taxes,
17
+ capital allocation, and the future business outlook, including the potential
18
+ impact of COVID-19 on the company''s business and results of operations. These
19
+ statements involve risks and uncertainties that may cause actual results or
20
+ trends to differ materially from our forecast. For more information, please
21
+ refer to the risk factors discussed in Apple''s most recently filed annual report
22
+ on Form 10-K and the Form 8-K filed with the SEC today, along with the associated
23
+ press release. Apple assumes no obligation to update any forward-looking statements
24
+ or information which speak as of their respective dates. I''d now like to turn
25
+ the call over to Tim for introductory remarks."}, {"speaker": "spk01", "text":
26
+ "Thank you, Tejas. Good afternoon, everyone, and thanks for joining us. Today
27
+ we''re reporting revenue of $117.2 billion for the December quarter. We set
28
+ all-time revenue records in a number of markets, including Canada, Indonesia,
29
+ Mexico, Spain, Turkey, and Vietnam, along with quarterly records in Brazil and
30
+ India. As a result of a challenging environment, our revenue was down 5% year
31
+ over year. But I''m proud of the way we have navigated circumstances seen and
32
+ unforeseen over the past several years, and I remain incredibly confident in
33
+ our team, in our mission, and in the work we do every day. Let me discuss the
34
+ three factors that impacted our revenue performance during the quarter. The
35
+ first was foreign exchange headwinds, which had a nearly 800 basis point impact.
36
+ On a constant currency basis, we grew year over year and would have grown in
37
+ the vast majority of the markets we track. The second factor, which we described
38
+ in a November 6th update, was COVID-19-related challenges, which significantly
39
+ impacted the supply of iPhone 14 Pro and iPhone 14 Pro Max and lasted through
40
+ most of December. Because of these constraints, we had significantly less iPhone
41
+ 14 Pro and iPhone 14 Pro Max supply than we planned, causing ship times to extend
42
+ far beyond what we had anticipated. As we always have every step of the way
43
+ throughout the pandemic, we continue to prioritize people and work with our
44
+ suppliers to ensure the health and safety of every worker. Production is now
45
+ back where we want it to be. The third factor was a challenging macroeconomic
46
+ environment as the world continues to face unprecedented circumstances from
47
+ inflation to war in Eastern Europe to the enduring impacts of the pandemic.
48
+ And we know that Apple is not immune to it. But whatever conditions we face,
49
+ our approach is always the same. We are thoughtful and deliberate. We manage
50
+ for the long term. We adapt quickly to circumstances outside our control while
51
+ delivering with excellence in the things we can. We invest in innovation, in
52
+ people, and in the positive difference we can make in the world. And we do it
53
+ all to provide our customers with technology that will enrich their lives and
54
+ help unlock their full creative potential. It''s a wonderful thing to be a part
55
+ of, and it''s so rewarding for all of us at Apple when we hear how much our
56
+ customers are loving what we create. Let me talk now about what we saw across
57
+ our product categories. Starting with iPhone, revenue came in at $65.8 billion
58
+ for the quarter, down 8% year over year. However, on a constant currency basis,
59
+ iPhone revenue was roughly flat. Our customers continue to rave about the astounding
60
+ camera capabilities and unprecedented battery life and the groundbreaking suite
61
+ of health and safety features. The iPhone 14 lineup pushes the limits of what
62
+ users can do with a smartphone. During the quarter, Mac revenue came in at $7.7
63
+ billion, which was in line with what we had expected. We had a difficult compare
64
+ because this time last year we had the extremely successful launch of the redesigned
65
+ M1 MacBook Pros. We also faced a challenging macroeconomic environment and foreign
66
+ exchange headwinds. We remain confident in and focused on the long-term opportunity
67
+ for Mac. Just last month, we introduced new MacBook Pro models powered by our
68
+ latest developments in Apple silicon, M2 Pro and M2 Max. These chips enable
69
+ unprecedented performance and do so with less energy, which is not only good
70
+ for the environment, but gives the newest MacBook Pro the longest battery life
71
+ ever in a Mac. We also introduced the M2-powered Mac Mini, which will supercharge
72
+ productivity for users of all kinds and leave them stunned by just how powerful
73
+ a Mac Mini can be. During the quarter, iPad revenue grew 30% to a total of $9.4
74
+ billion. The very strong growth was due in part to a favorable compare to the
75
+ December quarter a year ago when we experienced significant supply constraints.
76
+ Customers continue to praise our new lineup for its versatility, whether it''s
77
+ the new iPad Pro, now powered by the M2, or the newly designed iPad 10th generation
78
+ with its stunning liquid retina display and beautiful colors. Revenue for wearables,
79
+ home, and accessories was $13.5 billion, which was down 8% year over year, driven
80
+ by foreign exchange headwinds and a challenging macroeconomic environment. We
81
+ remain excited about the long-term opportunity in the category. As an example,
82
+ a few weeks ago, we announced the Next Generation HomePod, which is an indispensable
83
+ addition to the smart home. This powerful smart speaker relies on advanced computational
84
+ audio to produce an incredible listening experience. We''re also helping users
85
+ make their home safer with sound recognition. This feature, arriving later this
86
+ spring, allows HomePod to send a notification directly to a user''s iPhone if
87
+ a smoke or carbon monoxide alarm sound is identified. We continue to hear wide
88
+ praise for Apple Watch Series 8 and Apple Watch Ultra, which has set a new standard
89
+ for what''s possible with a wearable. From a whole host of health and safety
90
+ features to incredible new capabilities for extreme athletes, there is something
91
+ for everyone in these amazing products. Customers are excited about some phenomenal
92
+ new features we''ve made available across many of our products as well. One
93
+ of the highlights is emergency SOS via satellite, which launched for iPhone
94
+ 14 customers in the US and Canada in November, and for customers in France,
95
+ Germany, Ireland, and the UK in December. This is a feature we hope our users
96
+ will never need, but it is incredibly heartening to get emails from people describing
97
+ the life-saving impact our new safety features have had on them. We''re always
98
+ looking for new ways to empower people to create and collaborate. In December,
99
+ we released Freeform, a brand new app that lets users take their ideas wherever
100
+ they want, anywhere they are, all while collaborating in real time. Freeform
101
+ has already received praise from reviewers for its flexibility and simplicity
102
+ as it works seamlessly across iPhone, iPad, and Mac. Today, we are very excited
103
+ to announce that we''ve achieved a truly incredible milestone. Thanks to our
104
+ deep commitment to innovation, incredible customer loyalty and satisfaction,
105
+ and a large number of switchers, we now have more than 2 billion active devices
106
+ as part of our growing installed base, double what it was just seven years ago.
107
+ This is an incredible testament to our products and services and the strength
108
+ of our ecosystem. We set an all-time revenue record of $20.8 billion in services,
109
+ which was better than what we had expected. We achieved double-digit revenue
110
+ growth from App Store subscriptions and set all-time revenue records across
111
+ a number of categories, including cloud and payment services. All told, Apple
112
+ now has more than 935 million paid subscriptions. Apple has also just begun
113
+ a historic 10-year partnership with Major League Soccer. Just yesterday, we
114
+ launched MLS Season Pass, which will give fans in more than 100 countries access
115
+ to every live MLS regular season game, as well as the playoffs and MLS Cup,
116
+ all with no blackouts. And while we''re providing more content to sports fans
117
+ than ever before, Apple TV Plus continues to showcase powerful characters and
118
+ moving storytelling. We were thrilled to celebrate the holidays alongside our
119
+ Apple TV Plus subscribers with the hit movie Spirited, and we''re delighted
120
+ to see how much people are enjoying new and returning series like Shrinking,
121
+ Slow Horses, and Truth Be Told. and we have some great upcoming movies in Sharper
122
+ and Tetris, along with Emmy Award winner Ted Lasso returning this spring. During
123
+ the quarter, we made some great updates to Fitness Plus as well, expanding our
124
+ catalog of more than 3,500 workouts and meditations to include a new kickboxing
125
+ category and a new sleep theme for meditations. Our latest artist spotlight
126
+ series features the music of the incomparable Beyonce, and we''re excited to
127
+ take a stroll with guests appearing on our fifth season of Time to Walk. And
128
+ we continue to build on our decades-long commitment to helping small businesses
129
+ thrive when we announced Apple Business Connect. This new tool gives business
130
+ owners even more control over how billions of people see and engage with their
131
+ products and services every day. Businesses of all sizes can now customize key
132
+ information for users across Apple Maps, Messages, Wallet, Siri, and other apps.
133
+ Meanwhile, in retail, we celebrated 25 years of the Apple online store and also
134
+ opened Apple Pacific Center in Vancouver and Apple American Dream in New Jersey.
135
+ And I''m grateful to all the teams who helped our customers throughout the busy
136
+ holiday season. At Apple, we spend a lot of time focused on creating an unparalleled
137
+ experience for our customers in every product and service that we offer. We''re
138
+ also just as dedicated to leading with our values in everything we do. As part
139
+ of that work, we strengthened our deep commitment to privacy and security, giving
140
+ users three new tools to protect their most sensitive data. iMessage contact
141
+ key verification, security keys for Apple ID, and advanced data protection for
142
+ iCloud. At Apple, we feel a deep sense of responsibility to leave the world
143
+ better than we found it. We''re also a year closer to 2030, and we remain ever
144
+ focused on the environmental commitments we set out for the end of the decade.
145
+ As an example, the latest Mac Mini and MacBook Pro models all use 100% recycled
146
+ aluminum in the enclosure and recycled rare earth elements in all magnets. And
147
+ in a first for HomePod, we''re using 100% recycled gold in the plating of multiple
148
+ printed circuit boards. In honor of Black History Month, we released the Black
149
+ Unity Collection, including the special edition Apple Watch Black Unity Sport
150
+ Loop, a new matching watch face, and iPhone wallpaper. Through our racial equity
151
+ and justice initiative, we''re expanding our support of five organizations focused
152
+ on lifting up communities of color through technology. And we are committed,
153
+ as ever, to building on our progress around inclusion and diversity. During
154
+ the quarter, we also announced that since the inception of our giving program
155
+ 11 years ago, we''ve donated more than $880 million to humanitarian efforts,
156
+ disaster relief, childhood education, and more. And over the last 16 years through
157
+ our partnership with REDD, Apple supported grants have helped more than 11 million
158
+ people get the care and support services they need. As we look ahead in 2023,
159
+ we are excited about the year to come. At Apple, we are always looking forward,
160
+ always focused on the next challenge, always determined to do great things with
161
+ unmatched creativity and unrivaled innovation. And that makes me more confident
162
+ about the future of Apple than I have ever been. With that, I''ll turn it over
163
+ to Luca."}, {"speaker": "spk05", "text": "Thank you Tim, and good afternoon
164
+ everyone. As Tim mentioned, revenue for the December quarter was $117.2 billion,
165
+ down 5% from last year. A number of factors had a significant impact on our
166
+ results. First, we faced a very difficult foreign exchange environment, which
167
+ affected our performance by nearly 800 basis points. In other words, we grew
168
+ revenue on a constant currency basis, and in fact, we did so in the vast majority
169
+ of markets. Second, the macroeconomic environment this past quarter was markedly
170
+ more challenging than 12 months ago. Third, we experienced significant supply
171
+ shortages for iPhone 14 Pro and iPhone 14 Pro Max in November and through December.
172
+ On the other hand, we had the positive impact of the 14th week in the quarter
173
+ that Tejas mentioned at the beginning of the call. Products revenue was 96.4
174
+ billion, down 8% from last year due to the factors I just called out. At the
175
+ same time, however, our installed base of active devices grew double digits
176
+ and achieved all-time records in each geographic segment and in each major product
177
+ category. We are proud to now have over 2 billion active devices in our installed
178
+ base. This continued growth in the installed base is due to extremely strong
179
+ levels of customer satisfaction and loyalty and a high number of customers who
180
+ are new to our products. The installed base growth also helped our services
181
+ set an all-time revenue record of $20.8 billion, up 6% over a year ago. We achieved
182
+ this new milestone despite more than 700 basis points of negative impact from
183
+ foreign exchange. We reached all-time services revenue records in the Americas,
184
+ Europe, and rest of Asia Pacific, and a December quarter record in Greater China.
185
+ We also set records in many services categories, including all-time revenue
186
+ records for cloud services, payment services, and music, and December quarter
187
+ records for the App Store and AppleCare. Company gross margin was 43%, up 70
188
+ basis points from last quarter, due to leverage and favorable mix, partially
189
+ offset by foreign exchange. Products gross margin was 37%, up 240 basis points
190
+ sequentially, and services gross margin was 70.8%, up 30 basis points sequentially,
191
+ both due to the same factors that impacted total company gross margin. Operating
192
+ expenses of 14.3 billion were significantly below the guidance range we provided
193
+ at the beginning of the quarter, and grew at a slower pace than in the past,
194
+ as we took actions to respond to the current macro environment. Net income was
195
+ 30 billion, diluted earnings per share were $1.88, and we generated very strong
196
+ operating cash flow of 34 billion. Let me now get into more detail for each
197
+ of our revenue categories. iPhone revenue was $65.8 billion, despite significant
198
+ foreign exchange headwinds, supply constraints on iPhone 14 Pro and iPhone 14
199
+ Pro Max, and a challenging microeconomic environment. In spite of these circumstances,
200
+ we set all-time iPhone revenue records in Canada, Italy, and Spain, and saw
201
+ strong growth in several emerging markets, including all-time iPhone revenue
202
+ records for India and Vietnam. Importantly, the installed base of active iPhones
203
+ continues to grow nicely and is at an all-time high across all geographic segments.
204
+ In emerging markets in particular, the installed base grew double digits, and
205
+ we had record levels of switchers in India and in Mexico. Our customers continue
206
+ to love their experience with our products, with the latest survey of US consumers
207
+ from 451 Research indicating customer satisfaction of 98% for the iPhone 14
208
+ family. Mac revenue was $7.7 billion, down 29% year-over-year and in line with
209
+ our expectations. There were three key drivers for our Mac results. First, we
210
+ had a challenging compare against last year''s launch of the completely reimagined
211
+ MacBook Pros, our first notebooks with M1 Pro and M1 Macs. Second, we believe
212
+ that the macro environment impacted our Mac performance. And third, we faced
213
+ significant foreign exchange headwinds. At the same time, however, the installed
214
+ base of active Macs reached an all-time high across all geographic segments.
215
+ And we continue to see very strong upgraded activity to Apple Silicon. Customer
216
+ satisfaction with Mac remains very strong at 96% based on the latest survey
217
+ of US consumers from 451 research. iPad revenue was $9.4 billion, up 30% year-over-year,
218
+ despite significant FX headwinds. This performance was driven by two key items.
219
+ First, during the December quarter a year ago, we experienced significant supply
220
+ constraints, while this year we had enough supply to meet demand. Second, we
221
+ launched our new iPad and the iPad Pro powered by the M2 chip during the quarter.
222
+ The iPad install base reached a new all-time high thanks to incredible customer
223
+ loyalty and a high number of new customers. In fact, over half of the customers
224
+ who purchased iPads during the quarter were new to the product. Wearables, home,
225
+ and accessories revenue was $13.5 billion, down 8% year over year. The year-over-year
226
+ decline was driven by significant FX headwinds and a challenging macroeconomic
227
+ environment. However, our installed base of devices in the category set a new
228
+ all-time record thanks to the largest number of customers new to a smartwatch
229
+ that we''ve ever had in a given quarter. In fact, nearly two-thirds of customers
230
+ purchasing an Apple Watch during the quarter were new to the product. Moving
231
+ to services, we generated $20.8 billion in revenue, a new all-time record in
232
+ total and for many services offerings, in spite of a difficult foreign exchange
233
+ environment, and macroeconomic headwinds impacting certain categories such as
234
+ digital advertising and mobile gaming. In constant currency, we grew services
235
+ revenue double digits on top of growing 24% during the December quarter a year
236
+ ago. We remain focused on the large long-term opportunity in this category,
237
+ and we continue to observe several trends that reflect the strength of our ecosystem.
238
+ For example, we saw increased customer engagement with our services during the
239
+ quarter. Both our transacting accounts and paid accounts grew double digits
240
+ year over year, each setting a new all-time record. Paid subscriptions also
241
+ continue to grow nicely. We now have more than 935 million paid subscriptions
242
+ across the services on our platform, up more than 150 million during the last
243
+ 12 months alone, and nearly four times what we had just five years ago. and
244
+ we continue to increase the reach and improve the quality of our offerings.
245
+ For instance, Apple Pay is now available to millions of merchants in nearly
246
+ 70 countries and regions, and we saw a record-breaking number of purchases made
247
+ using Apple Pay globally during the holiday shopping season. Finally, our installed
248
+ base of over 2 billion active devices represents a great foundation for future
249
+ expansion of our ecosystem. And it continues to grow even during difficult macroeconomic
250
+ conditions, which speaks to the exceptionally high levels of customer loyalty
251
+ and satisfaction and our ability to attract new customers to our platform. The
252
+ growth is coming from every major product category and geographic segment, with
253
+ strong double-digit increases in emerging markets, such as Brazil, Mexico, India,
254
+ Indonesia, Thailand, and Vietnam. Turning to the enterprise market, we are seeing
255
+ continued adoption of our services for business. like Apple Business Essentials,
256
+ AppleCare, Tap2Pay, and Apple Financial Services. For example, Mars Incorporated
257
+ has expanded its use of AppleCare for Enterprise to provide timely device support
258
+ and assurance for iPads deployed across their manufacturing sites. Meanwhile,
259
+ HCA Healthcare has leveraged Apple Financial Services to manage the annual refresh
260
+ of its entire fleet of iPhones. This not only ensures that their staff stay
261
+ current on the latest Apple technology, but also provides them with significant
262
+ annual savings in the process. Let me now turn to our capital return program
263
+ and our cash position. We returned over $25 billion to shareholders during the
264
+ December quarter as our business continues to generate very strong cash flow.
265
+ This included $3.8 billion in dividends and equivalents and $19 billion through
266
+ open market repurchases of 133 million Apple shares. We ended the quarter with
267
+ $165 billion in cash and marketable securities. We repaid $1.4 billion in maturing
268
+ debt and decreased commercial paper by $8.2 billion, leaving us with total debt
269
+ of $111 billion. As a result, net cash was $54 billion at the end of the quarter,
270
+ and we maintain our goal of becoming net cash neutral over time. As we move
271
+ into the March quarter, I''d like to review our outlook, which includes the
272
+ types of forward-looking information that Tejas referred to at the beginning
273
+ of the call. Given the continued uncertainty around the world in the near term,
274
+ we are not providing revenue guidance, but we are sharing some directional insights
275
+ based on the assumption that the microeconomic outlook and COVID-related impacts
276
+ to our business do not worsen from what we are projecting today for the current
277
+ quarter. In total, we expect our March quarter year-over-year revenue performance
278
+ to be similar to the December quarter. This represents an acceleration in our
279
+ underlying year-over-year business performance as the December quarter benefited
280
+ from an extra week. For an exchange, we''ll continue to be a headwind, and we
281
+ expect a negative year-over-year impact of five percentage points. For services,
282
+ we expect revenue to grow year-over-year, while continuing to face macroeconomic
283
+ headwinds in areas such as digital advertising and mobile gaming. For iPhone,
284
+ we expect our March quarter year-over-year revenue performance to accelerate
285
+ relative to the December quarter year-over-year revenue performance. For Mac
286
+ and iPad, we expect revenue for both product categories to decline double digits
287
+ year-over-year because of challenging compares and macroeconomic headwinds.
288
+ We expect gross margin to be between 43.5% and 44.5%. We expect OPEX to be between
289
+ $13.7 and $13.9 billion. We expect OINE to be around negative $100 million,
290
+ excluding any potential impact from the mark-to-market of minority investments,
291
+ and our tax rate to be around 16%. Finally, today our board of directors has
292
+ declared a cash dividend of 23 cents per share of common stock, payable on February
293
+ 16, 2023, to shareholders of record as of February 13, 2023. With that, let''s
294
+ open the call to questions."}, {"speaker": "spk07", "text": "Thank you, Luca.
295
+ We ask that you limit yourself to two questions. Operator, may we have the first
296
+ question, please?"}, {"speaker": "spk12", "text": "Certainly. We will go ahead
297
+ and take our first question from David Bott with UBS."}, {"speaker": "spk10",
298
+ "text": "Great. Thanks, guys, for taking my question. So, Tim, and maybe this
299
+ is for Luca as well, you talked about the supply chain returning back to normal
300
+ after a very difficult October-November, but we''re still seeing some disruptions
301
+ across tech products, whether it''s enterprise or consumer-facing. How do you
302
+ think about your supply chain and maybe the levels of inventory or bills that
303
+ you might need as we go forward to sort of insulate your business from these
304
+ sort of episodic disruptions? Have you changed your view? And if so, how does
305
+ that affect ultimately margins and sort of your balance sheet and cash flow
306
+ items going forward? Thanks."}, {"speaker": "spk01", "text": "This is Tim, David.
307
+ From a supply point of view, we did see disruption from early November through
308
+ most of December. And from a supply chain point of view, We''re now at a point
309
+ where production is what we need it to be, and so the problem is behind us.
310
+ In terms of going forward in the supply chain, we build our products everywhere.
311
+ There are component parts coming from many different countries in the world
312
+ and the final assembly coming from from three countries in the world on just
313
+ iPhone. And so we continue to optimize it. We''ll continue to optimize it over
314
+ time and change it to continue to improve. I think when you sort of zoom out
315
+ and back up from it, the last three years have been a pretty difficult time
316
+ between COVID and silicon shortages and the like, and I think we have had a
317
+ very resilient supply chain in the aggregate. In terms of supply for this quarter,
318
+ which I think was one of your points, I think we''re in decent supply on most
319
+ products for the quarter currently."}, {"speaker": "spk13", "text": "Great,
320
+ thank you."}, {"speaker": "spk01", "text": "Yeah."}, {"speaker": "spk07", "text":
321
+ "Great. Thanks. Can we have the next question, please?"}, {"speaker": "spk12",
322
+ "text": "Our next question is from Shannon Cross of Credit Suisse."}, {"speaker":
323
+ "spk11", "text": "Thank you very much. Luca, I wanted to dig a bit more into
324
+ the commentary on gross margin. The guidance, especially 43.5 to 44.5 is obviously
325
+ quite strong. So I''m wondering what''s helping you out there? some mix and
326
+ some other things. And then, you know, how should we think about what currency
327
+ and hedging is going to do as we look forward? And then I have a follow-up."},
328
+ {"speaker": "spk05", "text": "Shannon? Yes, I mean, we''ve had good margin for
329
+ the December quarter to start with. We reported 43%. Obviously, in December,
330
+ we have the benefit of leverage because of the seasonality of the business.
331
+ But we also had favorable mix across the board. Of course, foreign exchange
332
+ is an issue right now. In the December quarter, on a sequential basis, foreign
333
+ exchange was a negative 110 basis points for us. And on a year-over-year basis,
334
+ it''s 300 basis points. So obviously, the FX environment has changed a lot during
335
+ the last 12 months. For March, yeah, we''ve seen a margin expansion, 43.5% to
336
+ 44.5%. We''re doing a lot of work around cost, of course, you know, mix will
337
+ continue to help both within categories and services mix as we move away from
338
+ the holiday season. But we''re doing a lot of work on the cost structure, and
339
+ that is paying off. Foreign exchange is still a negative, about 50 basis points
340
+ sequentially, but it''s mitigating. The last couple of weeks, the dollar has
341
+ weakened a bit. And so hopefully, as we go through the year, hopefully things
342
+ will improve. But for now, as you correctly state, we are in a good position
343
+ on margins."}, {"speaker": "spk11", "text": "Thank you. And then, Tim, can you
344
+ talk a bit about China, what you''re seeing? Obviously, you had the issues with
345
+ production, but I mean more on the demand side. As we''ve gotten through Chinese
346
+ New Year and the opening, I''m just wondering, are you seeing the Chinese consumer
347
+ come back? What are they buying, and how are you thinking about your position
348
+ there? Thank you."}, {"speaker": "spk01", "text": "Shannon, last quarter, we
349
+ declined by 7% on a reported basis, but we actually grew on a constant currency
350
+ basis. And that was despite some significant of the supply constraints that
351
+ we talked about earlier. And obviously the sort of the COVID restrictions throughout
352
+ China that happened in various different places throughout the country, uh also
353
+ impacted the the demand during the quarter uh when you look at uh the opening
354
+ that started happening in december we saw a marked change in traffic in our
355
+ stores as compared to november and that followed through to demand as well and
356
+ I don''t want to get into January. We''ve obviously for January is included
357
+ in the guidance or the color rather that Luca provided earlier. But we did see
358
+ a marked change from December compared to November."}, {"speaker": "spk12",
359
+ "text": "Thank you."}, {"speaker": "spk07", "text": "Yeah. Great. Thanks, Shannon.
360
+ Can we have the next question, please?"}, {"speaker": "spk12", "text": "Our
361
+ next question is from Eric Woodring of Morgan Stanley."}, {"speaker": "spk08",
362
+ "text": "Hey, guys. Thanks for taking my questions. Maybe, Tim, first one for
363
+ you. That $2 billion device install base figure, that''s up, I believe, 200
364
+ million units year over year. That implies the strongest annual gain in new
365
+ devices. And your install base is basically as far back as you''ve provided
366
+ those data points. And so I guess my two questions are, one, can you provide
367
+ the install base for the iPhone at year-end? And then two, is there anything
368
+ that you see in this new cohort of users that might look different or similar
369
+ to past cohorts, either by demographic or regions or monetization ramp? And
370
+ then I will follow up. Thanks."}, {"speaker": "spk01", "text": "Yeah, the install
371
+ base is now over 2 billion active devices, as you mentioned. And we set records
372
+ across each geographic segment and major product category. And so it was a broad-based
373
+ change. To correct one thing you said, it''s up over 150 million year over year.
374
+ The last report we reported to be over 1.85. And so it''s 150, which we''re
375
+ very proud of. We also saw strong double digit in several of the emerging markets,
376
+ which is very important to us. For example, India and Brazil as just two examples.
377
+ So very, very strong and obviously it bodes well for the future."}, {"speaker":
378
+ "spk08", "text": "Great. Thank you for the color, Tim. And then, you know, Luca,
379
+ obviously the December quarter was negatively impacted by the production challenges.
380
+ Can you just maybe unpackage where channel inventory levels are today kind of
381
+ across the iPhone broadly? And then, you know, what the data that you''re seeing
382
+ so far this quarter is telling you about iPhone demand deferral versus kind
383
+ of iPhone demand destruction and perhaps pushing some upgrades later into the
384
+ year rather than into March quarter? And that''s it for me. Thanks."}, {"speaker":
385
+ "spk01", "text": "Yeah, Eric, I''ll take that one as well. The channel inventory
386
+ levels on iPhone, we obviously ended the December quarter below our target range,
387
+ given the supply challenges on iPhone 14 Pro and iPhone 14 Pro Max. But as you
388
+ think about this, keep in mind that a year ago, we also exited the December
389
+ quarter below our target inventory range. because of supply challenges in the
390
+ year-ago quarter. Not related, not the same issue by, just as a point. And so
391
+ that hopefully gives you some flavor of that. In terms of what we''re seeing
392
+ in January, we''ve included In our color that Luca provided, kind of our thinking,
393
+ it''s very hard to estimate the recapture because you have to know exactly what
394
+ would have happened and how many people bought down, and it takes a while to
395
+ get those reports. in during the quarter. And so we''ve made our best guess
396
+ at it. In terms of the sizing of the constraint in Q1, what we estimate, although
397
+ not with precision, is that we would, I thought we believe iPhone would have
398
+ grown during the quarter had it not been for the supply shortages. So hopefully
399
+ that provides you a little bit of color."}, {"speaker": "spk08", "text": "Yep,
400
+ that''s great. Thanks so much."}, {"speaker": "spk07", "text": "Thanks, Eric.
401
+ Can we have the next question, please?"}, {"speaker": "spk12", "text": "Our
402
+ next question comes from Aaron Rakers of Wells Fargo."}, {"speaker": "spk02",
403
+ "text": "Yeah, thanks for taking the question. I have two as well, if I can.
404
+ I guess the first kind of question, just going back on the gross margin line,
405
+ you know, pretty good guidance into this March quarter. I''m curious if you
406
+ unpack that a little bit, specific around what you''re seeing as far as, you
407
+ know, maybe benefits from component pricing."}, {"speaker": "spk05", "text":
408
+ "um you know in in the guidance uh if you''re embedding any of that at this
409
+ point yeah of course you know with our guidance we try to capture every aspect
410
+ uh of our cost structure and obviously components are a big portion of that
411
+ yeah so definitely that''s that''s included and keep in mind again that Foreign
412
+ exchange, I mentioned earlier, I think to Shannon, that the sequential negative
413
+ on FX is 50 basis points versus a year ago, it''s 270 basis points. Obviously,
414
+ the US dollar has moved a lot over the last 12 months. So obviously, we need
415
+ to find offsets and more to the negative FX in order to be able to provide this
416
+ kind of guidance. And so obviously, components are a big part of that."}, {"speaker":
417
+ "spk02", "text": "Yep. And then kind of, you know, from a strategic perspective,
418
+ given kind of the things that we''re seeing out in some of your peer group,
419
+ I''m curious, Tim, how you think about, you know, the role of AI in your strategy
420
+ as far as particularly in the services segment, whether you see opportunities
421
+ to excel monetization abilities within the paid subscriber base and whether
422
+ or not AI is something that you''re implementing a bit more strategically there."},
423
+ {"speaker": "spk01", "text": "Yeah, it is a major focus of ours. It''s incredible
424
+ in terms of how it can enrich customers'' lives. And you can look no further
425
+ than some of the things that we announced in the fall with crash detection and
426
+ fall detection. or back aways with ECG. I mean, these things have literally
427
+ saved people''s lives. And so we see an enormous potential in this space to
428
+ affect virtually everything we do. It''s obviously a horizontal technology,
429
+ not a vertical. And so it will affect every product and every service that we
430
+ have."}, {"speaker": "spk07", "text": "Thanks. Can we have the next question,
431
+ please?"}, {"speaker": "spk12", "text": "Certainly. Our next question comes
432
+ from Amit Daryanani of Evercore."}, {"speaker": "spk03", "text": "Thanks for
433
+ taking my question. Yes, the first one I have is, Tim, I think basically earlier
434
+ comments that iPhones would have grown X the production issue would imply that
435
+ maybe it''s a $7 billion or so impact that you had in December quarter from
436
+ the production challenges on the high-end models. I''m sure it''s tough to see
437
+ what happens this summer round, but I think historically when you''ve had production
438
+ issues or things like this happen, what has the consumer behavior been typically?
439
+ Do they tend to go down towards the lower-end models and get the phone they
440
+ want quickly, or do they just defer their production? Just from a historical
441
+ perspective, I think. Do you typically recover what''s deferred out, or no?"},
442
+ {"speaker": "spk01", "text": "It''s very hard to estimate is the real answer
443
+ because you have to know a lot of data and it''s usually only in hindsight that
444
+ you have a more reasonable view of it. And so we put our best views in the color
445
+ that Luca provided. That''s kind of what I would say."}, {"speaker": "spk03",
446
+ "text": "All right. And then, you know, I guess maybe if I think about services
447
+ as you go forward, and, you know, you''ve had really good growth in services,
448
+ I think, over the last several years, but as you go forward in services, you
449
+ know, what do you think drives the growth more so? Is it the expansion of your
450
+ install base, or is it more going to be driven by, you know, our pool going
451
+ higher for you? I''m just curious, how do you think about those two buckets
452
+ as you go forward?"}, {"speaker": "spk05", "text": "I mean, there''s a number
453
+ of things, and I mentioned a few of them during the call, but The first step
454
+ is always the install base. The install base is the engine for services growth.
455
+ And the fact that the install base is growing very nicely and it''s growing,
456
+ you know, in a lot of emerging markets is growing even faster. That gives us,
457
+ you know, a larger addressable pool of customers. That''s incredibly important.
458
+ The second one is that we are seeing that the level of engagement of our customers
459
+ already in our ecosystem continues to grow. I mentioned that both transacting
460
+ accounts and paid accounts grew double digits. And so that bodes very well for
461
+ the future. And we have a lot of transacting accounts that can move to paid
462
+ accounts over time. The other aspect that is very important for us is to continue
463
+ constantly to improve the reach and the quality of our services. And I give
464
+ the example of Apple Pay, which it''s a great example because we started off
465
+ primarily in the United States. Now we''ve taken it to 70 markets, millions
466
+ of merchants. And so obviously payment services continue to set new highs all
467
+ the time for us. And as you''ve seen over the last few years, we also launched
468
+ new services over time, and that obviously contributes to the growth. We''re
469
+ very excited. And when we look at the behavior of our installed base, we think
470
+ it''s very promising for the continued growth of our services business."}, {"speaker":
471
+ "spk07", "text": "Perfect. Thank you. Thanks, Amit. Can we have the next question,
472
+ please?"}, {"speaker": "spk12", "text": "Our next question comes from harsh
473
+ Kumar Piper Sandler."}, {"speaker": "spk13", "text": "Yeah. Hey, uh, Tim, I
474
+ had a quick question on emerging markets. Uh, it seems like you''re making a
475
+ lot of strikes in India, uh, potentially wanted to understand the kind of share
476
+ you have in China and India. And relative to that, what would be your aspirational,
477
+ but sort of achievable share in iPhones in those territories, whether it''s
478
+ units or revenues, And I was hoping to draw on your experience with what you''ve
479
+ seen in other countries where you''ve had some longer presence."}, {"speaker":
480
+ "spk01", "text": "And looking at the business in India, we set a quarterly revenue
481
+ record and grew very strong double digits year over year. And so we feel very
482
+ good about how we performed. And that''s despite the headwinds that we''ve talked
483
+ about. Taking a step back, India is a hugely exciting market for us and is a
484
+ major focus. We brought the online store there in 2020. We will soon bring Apple
485
+ retail there. So we''re putting a lot of emphasis on the market. There''s been
486
+ a lot done from a financing options and trade-ins to make products more affordable
487
+ and give people more options to buy. And so there''s a lot going on there. We''re
488
+ in essence taking what we learned in China years ago and how we scaled China
489
+ and bringing that to bear. And I don''t have the exact market shares in front
490
+ of me, but I think you would see that from a market share point of view that
491
+ we grew around the world last quarter on iPhone, despite the challenges that
492
+ we had on the supply side. And I wouldn''t expect to have a difference in those
493
+ two markets."}, {"speaker": "spk13", "text": "Understood. And for my follow-up,
494
+ I had sort of an interesting theoretical question on pricing. Assuming we get
495
+ the CHIP Act passed and there''s a whole bunch of manufacturing that happens
496
+ in U.S. and other territories that are potentially somewhat more expensive than
497
+ the ones you might be in now, has the company done any studies to gauge the
498
+ elasticity of demand relative to small price increases in your products?"},
499
+ {"speaker": "spk01", "text": "We have experience in that, but I wouldn''t necessarily
500
+ draw the same conclusion that you have in terms of the cost of the product.
501
+ We don''t know at this point exactly what that will be. We''re all in in terms
502
+ of being the largest customer for TSMC in Arizona and are very proud to take
503
+ part in that. That''s what I would say about that."}, {"speaker": "spk13", "text":
504
+ "Okay, fair enough. Thank you, Tim."}, {"speaker": "spk07", "text": "Yep. Thanks.
505
+ Can we have the next question, please?"}, {"speaker": "spk12", "text": "Sure.
506
+ Our next question comes from Wamsi Moan of Bank of America."}, {"speaker": "spk04",
507
+ "text": "Yes, thank you. Tim, you''ve done a phenomenal job of driving consumer
508
+ choice towards higher-end products within your portfolio. How would you compare
509
+ this cycle for iPhones if you were to segment the pro versus non-pro models
510
+ versus the cycles from the past few years? And do you think this move to higher
511
+ ASPs is sustainable, or do you think it reverses in a tighter consumer spending
512
+ environment? I''ll have a follow-up."}, {"speaker": "spk01", "text": "The pro
513
+ has been a 14 pro and the 14 pro max have done extremely well up until the point
514
+ where we had a supply shortage and couldn''t provide them, couldn''t provide
515
+ the total of the demand. And so it''s definitely a strong pro cycle. I think
516
+ there''s a number of reasons for that, but the most important one is always
517
+ the product. And I think the innovations in the product speak for themselves.
518
+ And we feel very good about the product that we announced back in September
519
+ and are happy to now be at a point where we''re shipping to the demand."}, {"speaker":
520
+ "spk04", "text": "Tim, do you think that this move to sort of higher ASPs that
521
+ has happened over the last few years is sustainable or could it sustain in this
522
+ very tough macro environment that you''ve cited?"}, {"speaker": "spk01", "text":
523
+ "I wouldn''t want to predict, but I would say that the smartphone for us, the
524
+ iPhone, has become so integral into people''s lives. It contains their contacts
525
+ and their health information and their banking information and their smart home
526
+ and so many different parts of their lives. It''s their payment vehicle and
527
+ for many people. And so I think people are willing to really stretch to get
528
+ the best they can afford in that category."}, {"speaker": "spk04", "text": "Okay,
529
+ great. And, Tim, you clearly emphasize the focus and importance of the install
530
+ base. If we think about the absolute grip of the install base from $1 billion
531
+ to $2 billion over seven years from a device standpoint, how should we think
532
+ about the penetration of services or the growth in paying customers on services
533
+ over that time frame? Is that penetration rate increasing or decreasing, how
534
+ fast is that growing relative to the growth of the overall install base?"},
535
+ {"speaker": "spk05", "text": "It''s Luca. And yes, of course, you know, we keep
536
+ track of that. It''s really, really important for us. Over the last seven years,
537
+ as we''ve doubled the install base, we''ve seen a growing engagement of our
538
+ customers on the platform. That happens, first of all, by customers transacting
539
+ on the platform and then moving to paid accounts. So starting to pay for some
540
+ of the services. uh that percentage of paid accounts tends to grow over time
541
+ we''ve seen it in developed markets we see it in emerging markets and that is
542
+ due to some of the reasons that i was explaining earlier including the fact
543
+ that we made it easier for our for our customers to get engaged on the platform
544
+ for example we offer multiple payment methods in in many countries uh and we''ve
545
+ made it easier to explore for more services because we''ve added a lot of services
546
+ on the platform over the last over the last seven years so to your question
547
+ of course higher engagement means a higher percentage of paid accounts over
548
+ time okay thank you all right thanks wamsi can we have the next question please"},
549
+ {"speaker": "spk12", "text": "Our next question comes from Richard Kramer of
550
+ Crete Research, LLP."}, {"speaker": "spk07", "text": "Operator, can we move
551
+ on to the next? Richard. Okay."}, {"speaker": "spk12", "text": "Next we''ll
552
+ hear from Jim Suva of Citigroup. Jim, your line is open. If you can release
553
+ your mute function, we are unable to hear you."}, {"speaker": "spk06", "text":
554
+ "Tim and Luca, you both mentioned earlier on the Q&A a little bit about India.
555
+ I was wondering if we''re now entering a situation of even more opportunity
556
+ because we''ve exited COVID, we''ve exited countries with different COVID criteria.
557
+ We''ve also seen India build out its higher speed transmissions and your market
558
+ shares tremendously underrepresented there. And it appears with the supply chain,
559
+ you''re looking at diversifying kind of operational risk, not specific to any
560
+ country, but just overall of, you know, now you look at potentially opening
561
+ up stores and stuff. Am I right? That that''s the way you look at it is it''s
562
+ even more prime for opportunity now than ever. And once you start opening up
563
+ stores there, you could just see a complete green shoot of adoptions or any
564
+ additional commentary on your view on India as now we''ve navigated COVID and
565
+ supply chain and so many challenges over the past two years. Thank you, gentlemen."},
566
+ {"speaker": "spk01", "text": "Yeah, Jim, we actually did fairly well through
567
+ COVID in India, and I''m even more bullish now on the other side of it, or hopefully
568
+ on the other side of it. And that''s the reason why we''re investing there with
569
+ bringing retail there and bringing the online store there and putting a significant
570
+ amount of energy there. I''m very bullish on India."}, {"speaker": "spk06",
571
+ "text": "Thank you. And then as my quick follow-up, you''d mentioned that services,
572
+ not necessarily specific to India, but services overall were better than expected.
573
+ And of course, supply chain was more challenged than expected. So what was the
574
+ bridge factor of services being better than expected on the upside? Was it like
575
+ advertising or apps or paid monthly subscriptions or what were kind of the things
576
+ that really surprised you to the upside on services? Thank you."}, {"speaker":
577
+ "spk05", "text": "It was primarily, Jim, it''s Luca. It''s primarily this level
578
+ of engagement that we saw, which then it reflects into the As you said, the
579
+ paid subscriptions, we saw very good results in our cloud services business,
580
+ in payment services. Music was very strong. So we had a number of categories
581
+ that set new records, all-time records, and they did a bit better than we were
582
+ expecting at the beginning of the quarter. And so Tim mentioned it. during,
583
+ I think, his prepared remarks that when you look at it in constant currency,
584
+ we grew services double digits, and that was on top of a 24% increase a year
585
+ ago. So it''s very sustained growth that we''re seeing."}, {"speaker": "spk06",
586
+ "text": "Thank you so much, and congratulations to you and all your teams."},
587
+ {"speaker": "spk07", "text": "Thanks, Jim. Can we have the next question, please?"},
588
+ {"speaker": "spk12", "text": "Our next question will come from Chris Sankar
589
+ of Cowan & Company."}, {"speaker": "spk09", "text": "Yeah, hi. Thanks for taking
590
+ my question. I have two of them, too. First one, Tim or Luca, you mentioned
591
+ how the macro did soften and had an impact. And as consumers tighten their belts,
592
+ when you look across your hardware products and service businesses, where have
593
+ you seen the biggest impact and where have you seen the least impact from the
594
+ softening macro? And then I had a quick follow-up."}, {"speaker": "spk01", "text":
595
+ "We think there were some impact across the products and in services. Probably
596
+ the ones that we saw the most impact on were Mac and wearables. You can see
597
+ that in those numbers. And probably the least would have been iPhone."}, {"speaker":
598
+ "spk09", "text": "Got it. Got it. Very helpful, Tim. And then just a quick follow-up
599
+ on the MAC. You know, the PC industry is expecting decline in PC shipments this
600
+ year also. How to think about the MAC relative to kind of like where the PC
601
+ industry as a whole is expecting the shipments to end up? Is there any color
602
+ you can give on that? Thank you very much."}, {"speaker": "spk01", "text": "The
603
+ industry is very challenged, as you say. The industry is contracting. I think
604
+ from us, though, and I don''t know how this year will play out, so I don''t
605
+ want to predict the year, but over the long run, we have a market that is a
606
+ reasonable-sized market, a big market, and we have low share. And we have a
607
+ competitive advantage with Apple Silicon. And so strategically, I think we''re
608
+ well positioned in the market, albeit I think it will be a little rough in the
609
+ short term."}, {"speaker": "spk09", "text": "Thanks a lot, Tim."}, {"speaker":
610
+ "spk01", "text": "Yeah."}, {"speaker": "spk07", "text": "Thanks, Krish. A replay
611
+ of today''s call will be available for two weeks on Apple Podcasts. as a webcast
612
+ on apple.com slash investor and via telephone. The number for the telephone
613
+ replay is 866-583-1035. Please enter confirmation code 654-1285, followed by
614
+ the pound sign. These replays will be available by approximately 5 p.m. Pacific
615
+ time today. Members of the press with additional questions can contact Josh
616
+ Rosenstock at 408-862-1142. Financial analysts can contact me with additional
617
+ questions at 669-227-2402. Thank you again for joining us."}], "speaker_name_map_v2":
618
+ {"spk01": {"name": "Tim Cook", "title": "CEO"}, "spk05": {"name": "Luca Maestri",
619
+ "title": "CFO"}, "spk07": {"name": "Operator", "title": null}, "spk12": {"name":
620
+ "Teja Skala", "title": "Director of Investor Relations and Corporate Finance"},
621
+ "spk10": {"name": "David Bott", "title": "UBS Analyst"}, "spk11": {"name": "Shannon
622
+ Cross", "title": "Credit Suisse Analyst"}, "spk08": {"name": "Eric Woodring",
623
+ "title": "Morgan Stanley Analyst"}, "spk02": {"name": "Aaron Rakers", "title":
624
+ "Wells Fargo Analyst"}, "spk13": {"name": "Harsh Kumar", "title": "Piper Sandler
625
+ Analyst"}, "spk04": {"name": "Wamsi Moan", "title": "Bank of America Analyst"},
626
+ "spk03": {"name": "Amit Daryanani", "title": "Evercore Analyst"}, "spk09": {"name":
627
+ "Chris Sankar", "title": "Cowan & Company Analyst"}, "spk06": {"name": "Jim
628
+ Suva", "title": "Citigroup Analyst"}}}'
629
+ content_type: text/plain
630
+ headers:
631
+ Cache-Control: public, max-age=43200
632
+ ETag: W/"68db756c02f141b4d296c8e204410a78"
633
+ Last-Modified: Sat, 16 Nov 2024 17:42:18 GMT
634
+ Transfer-Encoding: chunked
635
+ Vary: accept-encoding
636
+ Via: 1.1 4bfb5bb8bc988f7af3321a7aa11bee76.cloudfront.net (CloudFront)
637
+ X-Amz-Cf-Id: mYLywjVNV-yZ461fVR0UmsW4ImvVPyXbECAyFjzsVLvwoBwQVu3JHA==
638
+ X-Amz-Cf-Pop: IAH50-C4
639
+ X-Cache: Miss from cloudfront
640
+ x-amz-server-side-encryption: AES256
641
+ method: GET
642
+ status: 200
643
+ url: https://v2.api.earningscall.biz/transcript?apikey=demo&exchange=NASDAQ&symbol=AAPL&year=2023&quarter=1&level=2
@@ -10,6 +10,7 @@ from earningscall.company import Company
10
10
  from earningscall.errors import InsufficientApiAccessError
11
11
  from earningscall.event import EarningsEvent
12
12
  from earningscall.symbols import clear_symbols, CompanyInfo
13
+ from earningscall.transcript import Transcript
13
14
  from earningscall.utils import data_path
14
15
 
15
16
 
@@ -112,6 +113,36 @@ def test_get_demo_company_with_advanced_transcript_data():
112
113
  assert transcript.speakers[0].start_times is None
113
114
 
114
115
 
116
+ @responses.activate
117
+ def test_get_demo_company_with_speaker_name_map_v2():
118
+ ##
119
+ responses._add_from_file(file_path=data_path("symbols-v2.yaml"))
120
+ responses._add_from_file(file_path=data_path("aapl-q1-2022-speaker-name-map-v2.yaml"))
121
+ ##
122
+ company = get_company("aapl")
123
+ ##
124
+ transcript = company.get_transcript(year=2023, quarter=1, level=2)
125
+ ##
126
+ assert transcript.event.year == 2023
127
+ assert transcript.event.quarter == 1
128
+ assert transcript.event.conference_date.isoformat() == "2023-02-02T17:00:00-05:00"
129
+ assert transcript.text[:100] == (
130
+ "Good day, everyone, and welcome to the Apple Q1 Fiscal Year 2023 Earnings Conference Call. Today's c"
131
+ )
132
+ assert transcript.speakers[0].speaker == "spk12"
133
+ assert transcript.speakers[0].speaker_info.name == "Teja Skala"
134
+ assert transcript.speakers[0].speaker_info.title == "Director of Investor Relations and Corporate Finance"
135
+ assert transcript.speakers[0].words is None
136
+ assert transcript.speakers[0].start_times is None
137
+ assert transcript.speakers[1].speaker == "spk07"
138
+ assert transcript.speakers[1].speaker_info.name == "Operator"
139
+ assert transcript.speakers[1].speaker_info.title is None
140
+ assert transcript.speakers[1].words is None
141
+ assert transcript.speakers[1].start_times is None
142
+ assert transcript.speaker_name_map_v2["spk01"].name == "Tim Cook"
143
+ assert transcript.speaker_name_map_v2["spk01"].title == "CEO"
144
+
145
+
115
146
  @responses.activate
116
147
  def test_get_demo_company_with_advanced_transcript_data_level_3():
117
148
  ##
@@ -227,6 +258,24 @@ def test_get_transcript_server_error():
227
258
  company.get_transcript(year=2030, quarter=1)
228
259
 
229
260
 
261
+ def test_data_class_for_transcript():
262
+ ##
263
+ transcript = Transcript.from_dict(
264
+ {
265
+ "speakers": [],
266
+ "speaker_name_map_v2": {
267
+ "spk01": {
268
+ "name": "John Doe",
269
+ "title": "CEO",
270
+ }
271
+ },
272
+ }
273
+ )
274
+ ##
275
+ assert transcript.speaker_name_map_v2["spk01"].name == "John Doe"
276
+ assert transcript.speaker_name_map_v2["spk01"].title == "CEO"
277
+
278
+
230
279
  # Uncomment and run following code to generate demo-symbols-v2.yaml file
231
280
  #
232
281
  # import requests
@@ -234,19 +283,19 @@ def test_get_transcript_server_error():
234
283
  # from responses import _recorder
235
284
  #
236
285
  #
237
- # @_recorder.record(file_path="demo-symbols-v2.yaml")
238
- # def test_save_symbols_v1():
239
- # requests.get("https://v2.api.earningscall.biz/symbols-v2.txt?apikey=demo")
286
+ # @_recorder.record(file_path="data/aapl-q1-2022-speaker-name-map-v2-blah.yaml")
287
+ # def test_save_symbols_v1_first():
288
+ # requests.get("https://v2.api.earningscall.biz/transcript?apikey=demo&exchange=NASDAQ&symbol=AAPL&year=2023&quarter=1&level=2")
240
289
 
241
290
  # Uncomment and run following code to generate demo-symbols-v2.yaml file
242
- #
291
+
243
292
  # import requests
244
293
  #
245
294
  # from responses import _recorder
246
295
  #
247
296
  #
248
297
  # @_recorder.record(file_path="data/aapl-q1-2030-not-found.yaml")
249
- # def test_save_symbols_v1():
298
+ # def test_save_symbols_v1_second():
250
299
  # requests.get(
251
300
  # "https://v2.api.earningscall.biz/transcript?apikey=demo&exchange=NASDAQ&symbol=AAPL&year=2030&quarter=1&level=1"
252
301
  # )
File without changes
File without changes
File without changes
File without changes
File without changes