Skip to content

Commit 09ac07d

Browse files
committed
chore: gameday release
1 parent a2b5324 commit 09ac07d

File tree

4 files changed

+9
-447
lines changed

4 files changed

+9
-447
lines changed

CHANGES.md

+6
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ twilio-python Changelog
33

44
Here you can see the full list of changes between each twilio-python release.
55

6+
[2025-04-09] Version 8.0.0-rc.2
7+
--------------------------
8+
**Library**
9+
- Test Release must not be used
10+
11+
612
[2025-04-07] Version 9.5.2
713
--------------------------
814
**Studio**

README.md

+1-303
Original file line numberDiff line numberDiff line change
@@ -1,305 +1,3 @@
11
# twilio-python
22

3-
[![Tests](https://github.com/twilio/twilio-python/actions/workflows/test-and-deploy.yml/badge.svg)](https://github.com/twilio/twilio-python/actions/workflows/test-and-deploy.yml)
4-
[![PyPI](https://img.shields.io/pypi/v/twilio.svg)](https://pypi.python.org/pypi/twilio)
5-
[![PyPI](https://img.shields.io/pypi/pyversions/twilio.svg)](https://pypi.python.org/pypi/twilio)
6-
[![Learn OSS Contribution in TwilioQuest](https://img.shields.io/static/v1?label=TwilioQuest&message=Learn%20to%20contribute%21&color=F22F46&labelColor=1f243c&style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAASFBMVEUAAAAZGRkcHBwjIyMoKCgAAABgYGBoaGiAgICMjIyzs7PJycnMzMzNzc3UoBfd3d3m5ubqrhfrMEDu7u739/f4vSb/3AD///9tbdyEAAAABXRSTlMAAAAAAMJrBrEAAAKoSURBVHgB7ZrRcuI6EESdyxXGYoNFvMD//+l2bSszRgyUYpFAsXOeiJGmj4NkuWx1Qeh+Ekl9DgEXOBwOx+Px5xyQhDykfgq4wG63MxxaR4ddIkg6Ul3g84vCIcjPBA5gmUMeXESrlukuoK33+33uID8TWeLAdOWsKpJYzwVMB7bOzYSGOciyUlXSn0/ABXTosJ1M1SbypZ4O4MbZuIDMU02PMbauhhHMHXbmebmALIiEbbbbbUrpF1gwE9kFfRNAJaP+FQEXCCTGyJ4ngDrjOFo3jEL5JdqjF/pueR4cCeCGgAtwmuRS6gDwaRiGvu+DMFwSBLTE3+jF8JyuV1okPZ+AC4hDFhCHyHQjdjPHUKFDlHSJkHQXMB3KpSwXNGJPcwwTdZiXlRN0gSp0zpWxNtM0beYE0nRH6QIbO7rawwXaBYz0j78gxjokDuv12gVeUuBD0MDi0OQCLvDaAho4juP1Q/jkAncXqIcCfd+7gAu4QLMACCLxpRsSuQh0igu0C9Svhi7weAGZg50L3IE3cai4IfkNZAC8dfdhsUD3CgKBVC9JE5ABAFzg4QL/taYPAAWrHdYcgfLaIgAXWJ7OV38n1LEF8tt2TH29E+QAoDoO5Ve/LtCQDmKM9kPbvCEBApK+IXzbcSJ0cIGF6e8gpcRhUDogWZ8JnaWjPXc/fNnBBUKRngiHgTUSivSzDRDgHZQOLvBQgf8rRt+VdBUUhwkU6VpJ+xcOwQUqZr+mR0kvBUgv6cB4+37hQAkXqE8PwGisGhJtN4xAHMzrsgvI7rccXqSvKh6jltGlrOHA3Xk1At3LC4QiPdX9/0ndHpGVvTjR4bZA1ypAKgVcwE5vx74ulwIugDt8e/X7JgfkucBMIAr26ndnB4UCLnDOqvteQsHlgX9N4A+c4cW3DXSPbwAAAABJRU5ErkJggg==)](https://twil.io/learn-open-source)
7-
8-
## Documentation
9-
10-
The documentation for the Twilio API can be found [here][apidocs].
11-
12-
The Python library documentation can be found [here][libdocs].
13-
14-
## Versions
15-
16-
`twilio-python` uses a modified version of [Semantic Versioning](https://semver.org) for all changes. [See this document](VERSIONS.md) for details.
17-
18-
### Supported Python Versions
19-
20-
This library supports the following Python implementations:
21-
22-
- Python 3.7
23-
- Python 3.8
24-
- Python 3.9
25-
- Python 3.10
26-
- Python 3.11
27-
28-
## Installation
29-
30-
Install from PyPi using [pip](https://pip.pypa.io/en/latest/), a
31-
package manager for Python.
32-
33-
```shell
34-
pip3 install twilio
35-
```
36-
37-
If pip install fails on Windows, check the path length of the directory. If it is greater 260 characters then enable [Long Paths](https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation) or choose other shorter location.
38-
39-
Don't have pip installed? Try installing it, by running this from the command
40-
line:
41-
42-
```shell
43-
curl https://bootstrap.pypa.io/get-pip.py | python
44-
```
45-
46-
Or, you can [download the source code
47-
(ZIP)](https://github.com/twilio/twilio-python/zipball/main 'twilio-python
48-
source code') for `twilio-python`, and then run:
49-
50-
```shell
51-
python3 setup.py install
52-
```
53-
54-
> **Info**
55-
> If the command line gives you an error message that says Permission Denied, try running the above commands with `sudo` (e.g., `sudo pip3 install twilio`).
56-
57-
### Test your installation
58-
59-
Try sending yourself an SMS message. Save the following code sample to your computer with a text editor. Be sure to update the `account_sid`, `auth_token`, and `from_` phone number with values from your [Twilio account](https://console.twilio.com). The `to` phone number will be your own mobile phone.
60-
61-
```python
62-
from twilio.rest import Client
63-
64-
# Your Account SID and Auth Token from console.twilio.com
65-
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
66-
auth_token = "your_auth_token"
67-
68-
client = Client(account_sid, auth_token)
69-
70-
message = client.messages.create(
71-
to="+15558675309",
72-
from_="+15017250604",
73-
body="Hello from Python!")
74-
75-
print(message.sid)
76-
```
77-
78-
Save the file as `send_sms.py`. In the terminal, `cd` to the directory containing the file you just saved then run:
79-
80-
```shell
81-
python3 send_sms.py
82-
```
83-
84-
After a brief delay, you will receive the text message on your phone.
85-
86-
> **Warning**
87-
> It's okay to hardcode your credentials when testing locally, but you should use environment variables to keep them secret before committing any code or deploying to production. Check out [How to Set Environment Variables](https://www.twilio.com/blog/2017/01/how-to-set-environment-variables.html) for more information.
88-
89-
## OAuth Feature for Twilio APIs
90-
We are introducing Client Credentials Flow-based OAuth 2.0 authentication. This feature is currently in beta and its implementation is subject to change.
91-
92-
API examples [here](https://github.com/twilio/twilio-python/blob/main/examples/public_oauth.py)
93-
94-
Organisation API examples [here](https://github.com/twilio/twilio-python/blob/main/examples/organization_api.py)
95-
96-
## Use the helper library
97-
98-
### API Credentials
99-
100-
The `Twilio` client needs your Twilio credentials. You can either pass these directly to the constructor (see the code below) or via environment variables.
101-
102-
Authenticating with Account SID and Auth Token:
103-
104-
```python
105-
from twilio.rest import Client
106-
107-
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
108-
auth_token = "your_auth_token"
109-
client = Client(account_sid, auth_token)
110-
```
111-
112-
Authenticating with API Key and API Secret:
113-
114-
```python
115-
from twilio.rest import Client
116-
117-
api_key = "XXXXXXXXXXXXXXXXX"
118-
api_secret = "YYYYYYYYYYYYYYYYYY"
119-
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
120-
client = Client(api_key, api_secret, account_sid)
121-
```
122-
123-
Alternatively, a `Client` constructor without these parameters will
124-
look for `TWILIO_ACCOUNT_SID` and `TWILIO_AUTH_TOKEN` variables inside the
125-
current environment.
126-
127-
We suggest storing your credentials as environment variables. Why? You'll never
128-
have to worry about committing your credentials and accidentally posting them
129-
somewhere public.
130-
131-
```python
132-
from twilio.rest import Client
133-
client = Client()
134-
```
135-
136-
### Specify Region and/or Edge
137-
138-
To take advantage of Twilio's [Global Infrastructure](https://www.twilio.com/docs/global-infrastructure), specify the target Region and Edge for the client:
139-
140-
> **Note:** When specifying a `region` parameter for a helper library client, be sure to also specify the `edge` parameter. For backward compatibility purposes, specifying a `region` without specifying an `edge` will result in requests being routed to US1.
141-
142-
```python
143-
from twilio.rest import Client
144-
145-
client = Client(region='au1', edge='sydney')
146-
```
147-
148-
A `Client` constructor without these parameters will also look for `TWILIO_REGION` and `TWILIO_EDGE` variables inside the current environment.
149-
150-
Alternatively, you may specify the edge and/or region after constructing the Twilio client:
151-
152-
```python
153-
from twilio.rest import Client
154-
155-
client = Client()
156-
client.region = 'au1'
157-
client.edge = 'sydney'
158-
```
159-
160-
This will result in the `hostname` transforming from `api.twilio.com` to `api.sydney.au1.twilio.com`.
161-
162-
### Make a Call
163-
164-
```python
165-
from twilio.rest import Client
166-
167-
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
168-
auth_token = "your_auth_token"
169-
client = Client(account_sid, auth_token)
170-
171-
call = client.calls.create(to="9991231234",
172-
from_="9991231234",
173-
url="http://twimlets.com/holdmusic?Bucket=com.twilio.music.ambient")
174-
print(call.sid)
175-
```
176-
177-
### Get data about an existing call
178-
179-
```python
180-
from twilio.rest import Client
181-
182-
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
183-
auth_token = "your_auth_token"
184-
client = Client(account_sid, auth_token)
185-
186-
call = client.calls.get("CA42ed11f93dc08b952027ffbc406d0868")
187-
print(call.to)
188-
```
189-
190-
### Iterate through records
191-
192-
The library automatically handles paging for you. Collections, such as `calls` and `messages`, have `list` and `stream` methods that page under the hood. With both `list` and `stream`, you can specify the number of records you want to receive (`limit`) and the maximum size you want each page fetch to be (`page_size`). The library will then handle the task for you.
193-
194-
`list` eagerly fetches all records and returns them as a list, whereas `stream` returns an iterator and lazily retrieves pages of records as you iterate over the collection. You can also page manually using the `page` method.
195-
196-
#### Use the `list` method
197-
198-
```python
199-
from twilio.rest import Client
200-
201-
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
202-
auth_token = "your_auth_token"
203-
client = Client(account_sid, auth_token)
204-
205-
for sms in client.messages.list():
206-
print(sms.to)
207-
```
208-
209-
### Asynchronous API Requests
210-
211-
By default, the Twilio Client will make synchronous requests to the Twilio API. To allow for asynchronous, non-blocking requests, we've included an optional asynchronous HTTP client. When used with the Client and the accompanying `*_async` methods, requests made to the Twilio API will be performed asynchronously.
212-
213-
```python
214-
from twilio.http.async_http_client import AsyncTwilioHttpClient
215-
from twilio.rest import Client
216-
217-
async def main():
218-
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
219-
auth_token = "your_auth_token"
220-
http_client = AsyncTwilioHttpClient()
221-
client = Client(account_sid, auth_token, http_client=http_client)
222-
223-
message = await client.messages.create_async(to="+12316851234", from_="+15555555555",
224-
body="Hello there!")
225-
226-
asyncio.run(main())
227-
```
228-
229-
### Enable Debug Logging
230-
231-
Log the API request and response data to the console:
232-
233-
```python
234-
import logging
235-
236-
client = Client(account_sid, auth_token)
237-
logging.basicConfig()
238-
client.http_client.logger.setLevel(logging.INFO)
239-
```
240-
241-
Log the API request and response data to a file:
242-
243-
```python
244-
import logging
245-
246-
client = Client(account_sid, auth_token)
247-
logging.basicConfig(filename='./log.txt')
248-
client.http_client.logger.setLevel(logging.INFO)
249-
```
250-
251-
### Handling Exceptions
252-
253-
Version 8.x of `twilio-python` exports an exception class to help you handle exceptions that are specific to Twilio methods. To use it, import `TwilioRestException` and catch exceptions as follows:
254-
255-
```python
256-
from twilio.rest import Client
257-
from twilio.base.exceptions import TwilioRestException
258-
259-
account_sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
260-
auth_token = "your_auth_token"
261-
client = Client(account_sid, auth_token)
262-
263-
try:
264-
message = client.messages.create(to="+12316851234", from_="+15555555555",
265-
body="Hello there!")
266-
except TwilioRestException as e:
267-
print(e)
268-
```
269-
270-
### Generating TwiML
271-
272-
To control phone calls, your application needs to output [TwiML][twiml].
273-
274-
Use `twilio.twiml.Response` to easily create such responses.
275-
276-
```python
277-
from twilio.twiml.voice_response import VoiceResponse
278-
279-
r = VoiceResponse()
280-
r.say("Welcome to twilio!")
281-
print(str(r))
282-
```
283-
284-
```xml
285-
<?xml version="1.0" encoding="utf-8"?>
286-
<Response><Say>Welcome to twilio!</Say></Response>
287-
```
288-
289-
### Other advanced examples
290-
291-
- [Learn how to create your own custom HTTP client](./advanced-examples/custom-http-client.md)
292-
293-
### Docker Image
294-
295-
The `Dockerfile` present in this repository and its respective `twilio/twilio-python` Docker image are currently used by Twilio for testing purposes only.
296-
297-
### Getting help
298-
299-
If you need help installing or using the library, please check the [Twilio Support Help Center](https://support.twilio.com) first, and [file a support ticket](https://twilio.com/help/contact) if you don't find an answer to your question.
300-
301-
If you've instead found a bug in the library or would like new features added, go ahead and open issues or pull requests against this repo!
302-
303-
[apidocs]: https://www.twilio.com/docs/api
304-
[twiml]: https://www.twilio.com/docs/api/twiml
305-
[libdocs]: https://twilio.github.io/twilio-python
3+
## Test Release must not be used

0 commit comments

Comments
 (0)