diff --git a/docs/sdks/languages/python.mdx b/docs/sdks/languages/python.mdx
index caf916451..fbab3e2f8 100644
--- a/docs/sdks/languages/python.mdx
+++ b/docs/sdks/languages/python.mdx
@@ -3,31 +3,38 @@ title: "Python"
icon: "python"
---
-If you're working with Python, the official [infisical-python](https://github.com/Infisical/infisical-python) package is the easiest way to fetch and work with secrets for your application.
+If you're working with Python, the official [infisical-python](https://github.com/Infisical/sdk/edit/main/crates/infisical-py) package is the easiest way to fetch and work with secrets for your application.
## Basic Usage
```py
from flask import Flask
-from infisical import InfisicalClient
+from infisical_client import ClientSettings, InfisicalClient, GetSecretOptions
app = Flask(__name__)
-client = InfisicalClient(token="your_infisical_token")
+client = InfisicalClient(ClientSettings(
+ client_id="MACHINE_IDENTITY_CLIENT_ID",
+ client_secret="MACHINE_IDENTITY_CLIENT_SECRET",
+))
@app.route("/")
def hello_world():
# access value
- name = client.get_secret("NAME")
+
+ name = client.getSecret(options=GetSecretOptions(
+ environment="dev",
+ project_id="PROJECT_ID",
+ secret_name="NAME"
+ ))
+
return f"Hello! My name is: {name.secret_value}"
```
This example demonstrates how to use the Infisical Python SDK with a Flask application. The application retrieves a secret named "NAME" and responds to requests with a greeting that includes the secret value.
- We do not recommend hardcoding your [Infisical
- Token](/documentation/platform/token). Setting it as an environment
- variable would be best.
+ We do not recommend hardcoding your [Machine Identity Tokens](/platform/identities/overview). Setting it as an environment variable would be best.
## Installation
@@ -35,26 +42,34 @@ This example demonstrates how to use the Infisical Python SDK with a Flask appli
Run `pip` to add `infisical-python` to your project
```console
-$ pip install infisical
+$ pip install infisical-python
```
Note: You need Python 3.7+.
## Configuration
-Import the SDK and create a client instance with your [Infisical Token](/documentation/platform/token).
+Import the SDK and create a client instance with your [Machine Identity](/api-reference/overview/authentication).
```py
-from infisical import InfisicalClient
+from infisical_client import ClientSettings, InfisicalClient
-client = InfisicalClient(token="your_infisical_token")
+client = InfisicalClient(ClientSettings(
+ client_id="MACHINE_IDENTITY_CLIENT_ID",
+ client_secret="MACHINE_IDENTITY_CLIENT_SECRET",
+))
```
### Parameters
-
- An [Infisical Token](/documentation/platform/token) scoped to a project
- and environment
+
+ Your Infisical Client ID.
+
+
+ Your Infisical Client Secret.
+
+
+ If you want to directly pass an access token obtained from the authentication endpoints, you can do so.
-
- Time-to-live (in seconds) for refreshing cached secrets. Default: `300`.
-
-
- Whether or not debug mode is on
-
-
-## Caching
-
-The SDK caches every secret and updates it periodically based on the provided `cache_ttl`. For example, if `cache_ttl` of `300` is provided, then a secret will be refetched 5 minutes after the first fetch; if the fetch fails, the cached secret is returned.
-
-
- For optimal performance, we recommend creating a single instance of the Infisical client and exporting it to be used across your entire app to take advantage of caching benefits.
-
## Working with Secrets
-### client.get_all_secrets()
+### client.listSecrets(options)
```py
-secrets = client.get_all_secrets()
+client.listSecrets(options=ListSecretsOptions(
+ environment="dev",
+ project_id="PROJECT_ID"
+))
```
Retrieve all secrets within the Infisical project and environment that client is connected to
-### client.get_secret(secret_name, options)
+### Parameters
+
+
+
+
+ The slug name (dev, prod, etc) of the environment from where secrets should be fetched from.
+
+
+ The project ID where the secret lives in.
+
+
+
+ The path from where secrets should be fetched from.
+
+
+
+ Whether or not to include imported secrets from the current path. Read about [secret import](/platform/secret-reference)
+
+
+
+
+
+### client.getSecret(options)
```py
-secret = client.get_secret("API_KEY")
+secret = client.getSecret(options=GetSecretOptions(
+ environment="dev",
+ project_id="658066938ffb84aa0aa507f6",
+ secret_name="API_KEY"
+))
value = secret.secret_value # get its value
```
-By default, `get_secret()` fetches and returns a personal secret. If not found, it returns a shared secret, or tries to retrieve the value from `os.environ`. If a secret is fetched, `get_secret()` caches it to reduce excessive calls and re-fetches periodically based on the `cacheTTL` option (default is 300 seconds) when initializing the client — for more information, see the caching section.
+By default, `getSecret()` fetches and returns a shared secret. If not found, it returns a personal secret.
### Parameters
-
- The key of the secret to retrieve
-
-
- The type of the secret. Valid options are "shared" or "personal"
+
+
+
+ The key of the secret to retrieve
+
+
+ The slug name (dev, prod, etc) of the environment from where secrets should be fetched from.
+
+
+ The project ID where the secret lives in.
+
+
+ The path from where secret should be fetched from.
+
+
+ The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "personal".
+
+
+ Whether or not to include imported secrets from the current path. Read about [secret import](/platform/secret-reference)
+
+
-### client.create_secret(secret_name, secret_value, options)
+### client.createSecret(options)
```py
-new_api_key = client.create_secret("API_KEY", "FOO");
+api_key = client.createSecret(options=CreateSecretOptions(
+ secret_name="API_KEY",
+ secret_value="Some API Key",
+ environment="dev",
+ project_id="PROJECT_ID"
+))
```
Create a new secret in Infisical.
### Parameters
-
- The key of the secret to create
-
-
- The value of the secret to create
-
-
- The type of the secret. Valid options are "shared" or "personal". A personal secret can only be created if a shared secret with the same name exists.
+
+
+
+ The key of the secret to create.
+
+
+ The value of the secret.
+
+
+ The project ID where the secret lives in.
+
+
+ The slug name (dev, prod, etc) of the environment from where secrets should be fetched from.
+
+
+ The path from where secret should be created.
+
+
+ The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared".
+
+
-### client.update_secret(secret_name, secret_value, options)
+### client.updateSecret(options)
```py
-updated_api_key = client.update_secret("API_KEY", "BAR");
+client.updateSecret(options=UpdateSecretOptions(
+ secret_name="API_KEY",
+ secret_value="NEW_VALUE",
+ environment="dev",
+ project_id="PROJECT_ID"
+))
```
Update an existing secret in Infisical.
### Parameters
-
- The key of the secret to update
-
-
- The new value of the secret
-
-
- The type of the secret. Valid options are "shared" or "personal"
+
+
+
+ The key of the secret to update.
+
+
+ The new value of the secret.
+
+
+ The project ID where the secret lives in.
+
+
+ The slug name (dev, prod, etc) of the environment from where secrets should be fetched from.
+
+
+ The path from where secret should be updated.
+
+
+ The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared".
+
+
-### client.delete_secret(secret_name, options)
+### client.deleteSecret(options)
```py
-deleted_secret = client.delete_secret("API_KEY");
+client.deleteSecret(options=DeleteSecretOptions(
+ environment="dev",
+ project_id="PROJECT_ID",
+ secret_name="API_KEY"
+))
```
Delete a secret in Infisical.
### Parameters
-
- The key of the secret to delete
+
+
+
+ The key of the secret to update.
+
+
+ The project ID where the secret lives in.
+
+
+ The slug name (dev, prod, etc) of the environment from where secrets should be fetched from.
+
+
+ The path from where secret should be deleted.
+
+
+ The type of the secret. Valid options are "shared" or "personal". If not specified, the default value is "shared".
+
+
-
- The type of the secret. Valid options are "shared" or "personal"
-
-
-Follow this GitHub
-[issue](https://github.com/Infisical/infisical/issues/433) to stay updated.