{"id":354,"library":"itsdangerous","title":"ItsDangerous","description":"ItsDangerous is designed to safely pass data to untrusted environments and back. The current version is 2.2.0, with feature releases being frequent and focused on supporting the latest features and removing deprecated code.","status":"active","version":"2.2.0","language":"python","source_language":"en","source_url":"https://github.com/pallets/itsdangerous/","tags":["serialization","security","data"],"install":[{"cmd":"pip install itsdangerous","lang":"bash","label":"Install ItsDangerous"}],"dependencies":[],"imports":[{"note":"Ensure that you import from the correct module for serialization.","symbol":"URLSafeSerializer","correct":"from itsdangerous import URLSafeSerializer"}],"quickstart":{"code":"from itsdangerous import URLSafeSerializer\n\nserializer = URLSafeSerializer('secret-key')\nserialized_data = serializer.dumps({'data': 'value'})\ndeserialized_data = serializer.loads(serialized_data)\nprint(deserialized_data)","lang":"python","description":"Basic usage of ItsDangerous for serializing and deserializing data."},"warnings":[{"fix":"Update your code to use the latest features as per the 2.2.0 documentation.","message":"Some previously deprecated features were removed in version 2.2.0.","severity":"breaking","affected_versions":"<=2.1.x"},{"fix":"Use a sufficiently long and random string for the secret key.","message":"Ensure your secret key is strong and kept confidential.","severity":"gotcha","affected_versions":"all"},{"fix":"It is recommended to use a virtual environment or run pip as a non-root user.","message":"Running pip as the 'root' user can result in broken permissions and conflicting behavior with the system package manager.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-12T13:14:59.217Z","next_check":"2026-06-27T00:00:00.000Z","problems":[{"fix":"Install the library using pip: `pip install itsdangerous`","cause":"The 'itsdangerous' library is not installed in your Python environment or is not accessible within the current project's virtual environment.","error":"ModuleNotFoundError: No module named 'itsdangerous'"},{"fix":"Replace `TimedJSONWebSignatureSerializer` with `URLSafeTimedSerializer` (or `TimedSerializer` if URL-safety is not required). Example: `from itsdangerous import URLSafeTimedSerializer as Serializer`","cause":"The `TimedJSONWebSignatureSerializer` class was deprecated and removed in `itsdangerous` version 2.0.0.","error":"ImportError: cannot import name 'TimedJSONWebSignatureSerializer' from 'itsdangerous'"},{"fix":"Ensure the same `secret_key` (and `salt`, if used) is consistently used for both signing and unsigning. Also, verify that the signed data has not been modified.","cause":"This error occurs when the provided signature does not match the computed signature, often due to using a different secret key, a tampered payload, or an incorrect salt between signing and unsigning.","error":"itsdangerous.exc.BadSignature: Signature '...' does not match"},{"fix":"Increase the `max_age` parameter when unsigning the token, or generate a new signature if the old one is genuinely stale and needs to be refreshed. Example: `signer.unsign(token, max_age=3600)` (for 1 hour).","cause":"A time-based signature has been received and validated, but its timestamp indicates that it is older than the `max_age` specified during the unsigning process.","error":"itsdangerous.exc.SignatureExpired: Signature age X > Y seconds"}],"ecosystem":"pypi","meta_description":null,"install_score":100,"install_tag":"verified","quickstart_score":80,"quickstart_tag":"verified","pypi_latest":null,"install_checks":{"last_tested":"2026-05-12","tag":"verified","tag_description":"installs cleanly on critical runtimes, fast import, recently tested","results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1.3,"disk_size":"17.9M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.3,"disk_size":"18M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"19.7M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.04,"mem_mb":1.4,"disk_size":"20M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1,"disk_size":"11.6M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1,"disk_size":"12M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1.1,"disk_size":"11.2M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":0.9,"disk_size":"12M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.03,"mem_mb":1.2,"disk_size":"17.4M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"default","exit_code":0,"wheel_type":null,"failure_reason":null,"install_time_s":null,"import_time_s":0.02,"mem_mb":1.2,"disk_size":"18M"}]},"quickstart_checks":{"last_tested":"2026-04-23","tag":"verified","tag_description":"quickstart runs on critical runtimes, recently tested","results":[{"runtime":"python:3.10-alpine","exit_code":0},{"runtime":"python:3.10-slim","exit_code":0},{"runtime":"python:3.11-alpine","exit_code":0},{"runtime":"python:3.11-slim","exit_code":0},{"runtime":"python:3.12-alpine","exit_code":0},{"runtime":"python:3.12-slim","exit_code":0},{"runtime":"python:3.13-alpine","exit_code":0},{"runtime":"python:3.13-slim","exit_code":0},{"runtime":"python:3.9-alpine","exit_code":0},{"runtime":"python:3.9-slim","exit_code":0}]}}