earningscall 0.0.19__tar.gz → 0.0.21__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.
- {earningscall-0.0.19 → earningscall-0.0.21}/CHANGELOG.md +8 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/PKG-INFO +93 -1
- {earningscall-0.0.19 → earningscall-0.0.21}/README.md +92 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/api.py +3 -3
- {earningscall-0.0.19 → earningscall-0.0.21}/pyproject.toml +1 -1
- {earningscall-0.0.19 → earningscall-0.0.21}/.github/workflows/release.yml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/.github/workflows/test.yml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/.gitignore +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/.python-version +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/DEVELOPMENT.md +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/LICENSE +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/TODO.md +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/__init__.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/company.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/errors.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/event.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/exports.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/sectors.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/symbols.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/transcript.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/earningscall/utils.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/hatch.toml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/scripts/download_audio_files.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/scripts/download_single_audio_file.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/scripts/download_sp500_audio_files.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/scripts/get_all_company_transcripts.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/scripts/get_single_transcript.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/scripts/list_companies.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/setup.cfg +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2022-advanced-data-level-2.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2022-advanced-data-level-3.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2022-advanced-data-level-4.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2030-not-authorized-l2.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2030-not-authorized.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2030-not-found.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2030-server-error.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/demo-symbols-v2-alpha.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/demo-symbols-v2.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/meta-q3-2024-not-authorized.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/meta-q3-2024-not-found.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/meta-q3-2024-other-error.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/msft-company-events.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/msft-q1-2022-audio-file-short-clip.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/msft-transcript-response.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/sp500-company-list-failed.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/sp500-company-list.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/symbols-v2-missing-edge-cases.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/symbols-v2.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/symbols.txt +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/data/symbols.yaml +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_company.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_download_audio_files.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_earnings_event.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_exports.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_get_company_events.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_get_sp500_companies_api.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_get_transcript.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_helper.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_responses_mocking.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_sectors.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_symbols.py +0 -0
- {earningscall-0.0.19 → earningscall-0.0.21}/tests/test_utils.py +0 -0
@@ -1,3 +1,11 @@
|
|
1
|
+
## Release `0.0.21` - 2024-10-07
|
2
|
+
|
3
|
+
* Bump version for PyPI release: updated README docs.
|
4
|
+
|
5
|
+
## Release `0.0.20` - 2024-10-07
|
6
|
+
|
7
|
+
* Bugfix: Fix importlib error.
|
8
|
+
|
1
9
|
## Release `0.0.19` - 2024-10-07
|
2
10
|
|
3
11
|
* Add Advanced Transcript Data structures (Beta: and subject to change in the future).
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: earningscall
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.21
|
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
|
@@ -126,6 +126,98 @@ Getting all transcripts for: Apple Inc...
|
|
126
126
|
...
|
127
127
|
```
|
128
128
|
|
129
|
+
|
130
|
+
## Get Text by Speaker
|
131
|
+
|
132
|
+
If you want to get the text by speaker, you can do so by setting the `level` parameter to `2`.
|
133
|
+
|
134
|
+
NOTE: Level `2` data is provided in any plan that includes Enhanced Transcript Data.
|
135
|
+
|
136
|
+
```python
|
137
|
+
from earningscall import get_company
|
138
|
+
|
139
|
+
company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
|
140
|
+
|
141
|
+
transcript = company.get_transcript(year=2021, quarter=3, level=2)
|
142
|
+
|
143
|
+
first_speaker = transcript.speakers[0]
|
144
|
+
speaker_label = first_speaker.speaker
|
145
|
+
text = first_speaker.text
|
146
|
+
print(f"Speaker: {speaker_label}\nText: {text}")
|
147
|
+
```
|
148
|
+
|
149
|
+
Output
|
150
|
+
|
151
|
+
```text
|
152
|
+
Speaker: spk11
|
153
|
+
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
|
+
```
|
155
|
+
|
156
|
+
## Get Word-Level Timestamps
|
157
|
+
|
158
|
+
If you want to get the word-level timestamps, you can do so by setting the `level` parameter to `3`.
|
159
|
+
|
160
|
+
Each timestamp is the number of seconds since the start of the transcript.
|
161
|
+
|
162
|
+
NOTE: Level `3` data is provided in any plan that includes Enhanced Transcript Data.
|
163
|
+
|
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=3)
|
171
|
+
|
172
|
+
first_speaker = transcript.speakers[0]
|
173
|
+
words_and_start_times = list(zip(first_speaker.words, first_speaker.start_times))
|
174
|
+
print(f"Speaker: {first_speaker.speaker}")
|
175
|
+
print(f"Words with start times: {words_and_start_times}")
|
176
|
+
```
|
177
|
+
|
178
|
+
Output
|
179
|
+
|
180
|
+
```text
|
181
|
+
Speaker: spk11
|
182
|
+
Words with start times: [('Good', 0.049), ('day,', 0.229), ('and', 0.489), ('welcome', 0.609), ('to', 0.929), ('the', 1.029), ('Apple', 1.229), ('Q3', 1.629), ('FY', 2.65), ('2021', 2.6599999999999997), ('Earnings', 3.81), ('Conference', 4.17), ('Call.', 4.55), ("Today's", 5.411), ('call', 5.811), ('is', 6.111), ('being', 6.271), ('recorded.', 6.471), ('At', 7.571), ('this', 7.671), ('time,', 7.871), ('for', 8.111), ('opening', 8.351), ('remarks', 8.631), ('and', 9.092), ('introductions,', 9.232), ('I', 9.832), ('would', 9.912), ('like', 10.052), ('to', 10.192), ('turn', 10.292), ('the', 10.492), ('call', 10.592), ('over', 10.872), ('to', 11.052), ('Tejas', 11.152), ('Ghala,', 11.532), ('Director,', 12.112), ('Investor', 12.533), ('Relations', 12.873), ('and', 13.353), ('Corporate', 13.473), ('Finance.', 13.773), ('Please', 14.413), ('go', 14.653), ('ahead.', 14.793)]
|
183
|
+
```
|
184
|
+
|
185
|
+
## Get Prepared Remarks and Q&A for a Single Quarter
|
186
|
+
|
187
|
+
If you want to get the prepared remarks and Q&A for a single quarter, you can do so by setting the `level` parameter to `4`.
|
188
|
+
|
189
|
+
NOTE: Level `4` data is provided in any plan that includes Enhanced Transcript Data.
|
190
|
+
|
191
|
+
```python
|
192
|
+
from earningscall import get_company
|
193
|
+
|
194
|
+
company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
|
195
|
+
|
196
|
+
transcript = company.get_transcript(year=2021, quarter=3, level=4)
|
197
|
+
print(f"{company} Q3 2021 Prepared Remarks: \"{transcript.prepared_remarks[:100]}...\"")
|
198
|
+
print(f"{company} Q3 2021 Q&A: \"{transcript.questions_and_answers[:100]}...\"")
|
199
|
+
```
|
200
|
+
|
201
|
+
Output
|
202
|
+
|
203
|
+
```text
|
204
|
+
Apple Inc. Q3 2021 Prepared Remarks: "Good day, and welcome to the Apple Q3 FY 2021 Earnings Conference Call. Today's call is being record..."
|
205
|
+
Apple Inc. Q3 2021 Q&A: "Our first question comes from Katie Huberty from Morgan Stanley. Please go ahead. Hello, Katie. Your..."
|
206
|
+
```
|
207
|
+
|
208
|
+
## Download Audio File
|
209
|
+
|
210
|
+
If you want to download the audio file for a single quarter, you can call the `download_audio_file` function.
|
211
|
+
|
212
|
+
```python
|
213
|
+
from earningscall import get_company
|
214
|
+
|
215
|
+
company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
|
216
|
+
|
217
|
+
print("Downloading audio file for Apple Inc. Q3 2021...")
|
218
|
+
audio_file = company.download_audio_file(year=2021, quarter=3, file_name="Apple Q3 2021.mp3")
|
219
|
+
```
|
220
|
+
|
129
221
|
## List All Companies
|
130
222
|
|
131
223
|
```python
|
@@ -75,6 +75,98 @@ Getting all transcripts for: Apple Inc...
|
|
75
75
|
...
|
76
76
|
```
|
77
77
|
|
78
|
+
|
79
|
+
## Get Text by Speaker
|
80
|
+
|
81
|
+
If you want to get the text by speaker, you can do so by setting the `level` parameter to `2`.
|
82
|
+
|
83
|
+
NOTE: Level `2` data is provided in any plan that includes Enhanced Transcript Data.
|
84
|
+
|
85
|
+
```python
|
86
|
+
from earningscall import get_company
|
87
|
+
|
88
|
+
company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
|
89
|
+
|
90
|
+
transcript = company.get_transcript(year=2021, quarter=3, level=2)
|
91
|
+
|
92
|
+
first_speaker = transcript.speakers[0]
|
93
|
+
speaker_label = first_speaker.speaker
|
94
|
+
text = first_speaker.text
|
95
|
+
print(f"Speaker: {speaker_label}\nText: {text}")
|
96
|
+
```
|
97
|
+
|
98
|
+
Output
|
99
|
+
|
100
|
+
```text
|
101
|
+
Speaker: spk11
|
102
|
+
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
|
+
```
|
104
|
+
|
105
|
+
## Get Word-Level Timestamps
|
106
|
+
|
107
|
+
If you want to get the word-level timestamps, you can do so by setting the `level` parameter to `3`.
|
108
|
+
|
109
|
+
Each timestamp is the number of seconds since the start of the transcript.
|
110
|
+
|
111
|
+
NOTE: Level `3` data is provided in any plan that includes Enhanced Transcript Data.
|
112
|
+
|
113
|
+
|
114
|
+
```python
|
115
|
+
from earningscall import get_company
|
116
|
+
|
117
|
+
company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
|
118
|
+
|
119
|
+
transcript = company.get_transcript(year=2021, quarter=3, level=3)
|
120
|
+
|
121
|
+
first_speaker = transcript.speakers[0]
|
122
|
+
words_and_start_times = list(zip(first_speaker.words, first_speaker.start_times))
|
123
|
+
print(f"Speaker: {first_speaker.speaker}")
|
124
|
+
print(f"Words with start times: {words_and_start_times}")
|
125
|
+
```
|
126
|
+
|
127
|
+
Output
|
128
|
+
|
129
|
+
```text
|
130
|
+
Speaker: spk11
|
131
|
+
Words with start times: [('Good', 0.049), ('day,', 0.229), ('and', 0.489), ('welcome', 0.609), ('to', 0.929), ('the', 1.029), ('Apple', 1.229), ('Q3', 1.629), ('FY', 2.65), ('2021', 2.6599999999999997), ('Earnings', 3.81), ('Conference', 4.17), ('Call.', 4.55), ("Today's", 5.411), ('call', 5.811), ('is', 6.111), ('being', 6.271), ('recorded.', 6.471), ('At', 7.571), ('this', 7.671), ('time,', 7.871), ('for', 8.111), ('opening', 8.351), ('remarks', 8.631), ('and', 9.092), ('introductions,', 9.232), ('I', 9.832), ('would', 9.912), ('like', 10.052), ('to', 10.192), ('turn', 10.292), ('the', 10.492), ('call', 10.592), ('over', 10.872), ('to', 11.052), ('Tejas', 11.152), ('Ghala,', 11.532), ('Director,', 12.112), ('Investor', 12.533), ('Relations', 12.873), ('and', 13.353), ('Corporate', 13.473), ('Finance.', 13.773), ('Please', 14.413), ('go', 14.653), ('ahead.', 14.793)]
|
132
|
+
```
|
133
|
+
|
134
|
+
## Get Prepared Remarks and Q&A for a Single Quarter
|
135
|
+
|
136
|
+
If you want to get the prepared remarks and Q&A for a single quarter, you can do so by setting the `level` parameter to `4`.
|
137
|
+
|
138
|
+
NOTE: Level `4` data is provided in any plan that includes Enhanced Transcript Data.
|
139
|
+
|
140
|
+
```python
|
141
|
+
from earningscall import get_company
|
142
|
+
|
143
|
+
company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
|
144
|
+
|
145
|
+
transcript = company.get_transcript(year=2021, quarter=3, level=4)
|
146
|
+
print(f"{company} Q3 2021 Prepared Remarks: \"{transcript.prepared_remarks[:100]}...\"")
|
147
|
+
print(f"{company} Q3 2021 Q&A: \"{transcript.questions_and_answers[:100]}...\"")
|
148
|
+
```
|
149
|
+
|
150
|
+
Output
|
151
|
+
|
152
|
+
```text
|
153
|
+
Apple Inc. Q3 2021 Prepared Remarks: "Good day, and welcome to the Apple Q3 FY 2021 Earnings Conference Call. Today's call is being record..."
|
154
|
+
Apple Inc. Q3 2021 Q&A: "Our first question comes from Katie Huberty from Morgan Stanley. Please go ahead. Hello, Katie. Your..."
|
155
|
+
```
|
156
|
+
|
157
|
+
## Download Audio File
|
158
|
+
|
159
|
+
If you want to download the audio file for a single quarter, you can call the `download_audio_file` function.
|
160
|
+
|
161
|
+
```python
|
162
|
+
from earningscall import get_company
|
163
|
+
|
164
|
+
company = get_company("aapl") # Lookup Apple, Inc by its ticker symbol, "AAPL"
|
165
|
+
|
166
|
+
print("Downloading audio file for Apple Inc. Q3 2021...")
|
167
|
+
audio_file = company.download_audio_file(year=2021, quarter=3, file_name="Apple Q3 2021.mp3")
|
168
|
+
```
|
169
|
+
|
78
170
|
## List All Companies
|
79
171
|
|
80
172
|
```python
|
@@ -12,7 +12,6 @@ log = logging.getLogger(__file__)
|
|
12
12
|
|
13
13
|
DOMAIN = os.environ.get("ECALL_DOMAIN", "earningscall.biz")
|
14
14
|
API_BASE = f"https://v2.api.{DOMAIN}"
|
15
|
-
EARNINGS_CALL_VERSION = importlib.metadata.version("earningscall")
|
16
15
|
|
17
16
|
|
18
17
|
def get_api_key():
|
@@ -48,9 +47,10 @@ def purge_cache():
|
|
48
47
|
|
49
48
|
|
50
49
|
def get_headers():
|
50
|
+
earnings_call_version = importlib.metadata.version("earningscall")
|
51
51
|
return {
|
52
|
-
"User-Agent": f"EarningsCall Python/{
|
53
|
-
"X-EarningsCall-Version":
|
52
|
+
"User-Agent": f"EarningsCall Python/{earnings_call_version}",
|
53
|
+
"X-EarningsCall-Version": earnings_call_version,
|
54
54
|
}
|
55
55
|
|
56
56
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "earningscall"
|
3
|
-
version = "0.0.
|
3
|
+
version = "0.0.21"
|
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 = [
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2022-advanced-data-level-2.yaml
RENAMED
File without changes
|
{earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2022-advanced-data-level-3.yaml
RENAMED
File without changes
|
{earningscall-0.0.19 → earningscall-0.0.21}/tests/data/aapl-q1-2022-advanced-data-level-4.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{earningscall-0.0.19 → earningscall-0.0.21}/tests/data/msft-q1-2022-audio-file-short-clip.yaml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|