Metadata-Version: 2.4
Name: lemur
Version: 1.9.0
Summary: Certificate management and orchestration service
Author-email: The Lemur developers <security@netflix.com>
License: Apache License, Version 2.0
Project-URL: homepage, https://github.com/Netflix/lemur
Project-URL: repository, https://github.com/Netflix/lemur
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: Apache Software License
Requires-Python: >=3.10
Description-Content-Type: text/x-rst
License-File: LICENSE
License-File: AUTHORS
Requires-Dist: acme==5.5.0
Requires-Dist: alembic==1.14.1
Requires-Dist: alembic-autogenerate-enums==0.1.2
Requires-Dist: amqp==5.3.1
Requires-Dist: aniso8601==10.0.1
Requires-Dist: arrow==1.4.0
Requires-Dist: async-timeout==5.0.1
Requires-Dist: asyncpool==1.0
Requires-Dist: attrs==26.1.0
Requires-Dist: bcrypt==5.0.0
Requires-Dist: billiard==4.2.4
Requires-Dist: blinker==1.9.0
Requires-Dist: boto3==1.42.91
Requires-Dist: botocore==1.42.91
Requires-Dist: celery[redis]==5.6.2
Requires-Dist: certbot==5.5.0
Requires-Dist: certifi==2026.2.25
Requires-Dist: certsrv[ntlm]==2.1.1
Requires-Dist: cffi==2.0.0
Requires-Dist: charset-normalizer==3.4.6
Requires-Dist: click==8.3.1
Requires-Dist: click-didyoumean==0.3.1
Requires-Dist: click-plugins==1.1.1.2
Requires-Dist: click-repl==0.3.0
Requires-Dist: cloudflare==2.20.0
Requires-Dist: configargparse==1.7.5
Requires-Dist: configobj==5.0.9
Requires-Dist: cryptography==46.0.7
Requires-Dist: deprecated==1.3.1
Requires-Dist: distro==1.9.0
Requires-Dist: dnspython==1.15.0
Requires-Dist: dnspython3==1.15.0
Requires-Dist: dyn==1.8.6
Requires-Dist: exceptiongroup==1.3.1
Requires-Dist: flask==2.3.3
Requires-Dist: flask-bcrypt==1.0.1
Requires-Dist: flask-cors==6.0.2
Requires-Dist: flask-limiter==4.1.1
Requires-Dist: flask-mail==0.10.0
Requires-Dist: flask-migrate==4.1.0
Requires-Dist: flask-principal==0.4.0
Requires-Dist: flask-replicated==2.1
Requires-Dist: flask-restful==0.3.10
Requires-Dist: flask-sqlalchemy==2.5.1
Requires-Dist: future==1.0.0
Requires-Dist: google-api-core[grpc]==2.30.0
Requires-Dist: google-auth==2.49.1
Requires-Dist: google-cloud-private-ca==1.18.0
Requires-Dist: google-cloud-storage==3.10.1
Requires-Dist: googleapis-common-protos[grpc]==1.73.0
Requires-Dist: grpc-google-iam-v1==0.14.3
Requires-Dist: grpcio==1.78.0
Requires-Dist: grpcio-status==1.78.0
Requires-Dist: gunicorn==25.3.0
Requires-Dist: hvac==2.4.0
Requires-Dist: idna==3.11
Requires-Dist: inflection==0.5.1
Requires-Dist: invoke==3.0.3
Requires-Dist: itsdangerous==2.2.0
Requires-Dist: javaobj-py3==0.4.4
Requires-Dist: jinja2==3.1.6
Requires-Dist: jmespath==1.1.0
Requires-Dist: josepy==2.2.0
Requires-Dist: jsonlines==4.0.0
Requires-Dist: kombu[redis]==5.6.2
Requires-Dist: limits==5.8.0
Requires-Dist: lockfile==0.12.2
Requires-Dist: mako==1.3.11
Requires-Dist: markupsafe==3.0.3
Requires-Dist: marshmallow==2.21.0
Requires-Dist: marshmallow-sqlalchemy==0.23.1
Requires-Dist: ndg-httpsclient==0.5.1
Requires-Dist: ordered-set==4.1.0
Requires-Dist: packaging==26.0
Requires-Dist: paramiko==4.0.0
Requires-Dist: parsedatetime==2.6
Requires-Dist: pem==23.1.0
Requires-Dist: prompt-toolkit==3.0.52
Requires-Dist: proto-plus==1.27.1
Requires-Dist: protobuf==6.33.6
Requires-Dist: psycopg2==2.9.11
Requires-Dist: pyasn1==0.6.3
Requires-Dist: pyasn1-modules==0.4.2
Requires-Dist: pycparser==3.0
Requires-Dist: pycryptodomex==3.23.0
Requires-Dist: pyjks==20.0.0
Requires-Dist: pyjwt==2.12.1
Requires-Dist: pynacl==1.6.2
Requires-Dist: pyopenssl==26.0.0
Requires-Dist: pyrfc3339==2.1.0
Requires-Dist: pyspnego==0.12.1
Requires-Dist: python-dateutil==2.9.0.post0
Requires-Dist: python-json-logger==4.1.0
Requires-Dist: python-ldap==3.4.5
Requires-Dist: pytz==2026.1.post1
Requires-Dist: pyyaml==6.0.3
Requires-Dist: redis==6.4.0
Requires-Dist: requests==2.33.1
Requires-Dist: requests-ntlm==1.3.0
Requires-Dist: retrying==1.4.2
Requires-Dist: s3transfer==0.16.0
Requires-Dist: sentry-sdk==2.58.0
Requires-Dist: six==1.17.0
Requires-Dist: sqlalchemy==1.3.24
Requires-Dist: sqlalchemy-utils==0.41.2
Requires-Dist: tabulate==0.10.0
Requires-Dist: twofish==0.3.0
Requires-Dist: types-protobuf==7.34.1.20260408
Requires-Dist: typing-extensions==4.15.0
Requires-Dist: tzdata==2025.3
Requires-Dist: tzlocal==5.3.1
Requires-Dist: urllib3==2.6.3
Requires-Dist: validators==0.35.0
Requires-Dist: vine==5.1.0
Requires-Dist: wcwidth==0.6.0
Requires-Dist: werkzeug==3.1.8
Requires-Dist: wrapt==2.1.2
Requires-Dist: xmltodict==1.0.4
Provides-Extra: tests
Requires-Dist: acme==5.5.0; extra == "tests"
Requires-Dist: alembic==1.14.1; extra == "tests"
Requires-Dist: alembic-autogenerate-enums==0.1.2; extra == "tests"
Requires-Dist: amqp==5.3.1; extra == "tests"
Requires-Dist: aniso8601==10.0.1; extra == "tests"
Requires-Dist: annotated-types==0.7.0; extra == "tests"
Requires-Dist: arrow==1.4.0; extra == "tests"
Requires-Dist: async-timeout==5.0.1; extra == "tests"
Requires-Dist: asyncpool==1.0; extra == "tests"
Requires-Dist: attrs==26.1.0; extra == "tests"
Requires-Dist: aws-sam-translator==1.108.0; extra == "tests"
Requires-Dist: aws-xray-sdk==2.15.0; extra == "tests"
Requires-Dist: bandit==1.9.4; extra == "tests"
Requires-Dist: bcrypt==5.0.0; extra == "tests"
Requires-Dist: billiard==4.2.4; extra == "tests"
Requires-Dist: black==26.3.1; extra == "tests"
Requires-Dist: blinker==1.9.0; extra == "tests"
Requires-Dist: boto3==1.42.91; extra == "tests"
Requires-Dist: botocore==1.42.91; extra == "tests"
Requires-Dist: celery[redis]==5.6.2; extra == "tests"
Requires-Dist: certbot==5.5.0; extra == "tests"
Requires-Dist: certifi==2026.2.25; extra == "tests"
Requires-Dist: certsrv[ntlm]==2.1.1; extra == "tests"
Requires-Dist: cffi==2.0.0; extra == "tests"
Requires-Dist: cfn-lint==1.47.1; extra == "tests"
Requires-Dist: charset-normalizer==3.4.6; extra == "tests"
Requires-Dist: click==8.3.1; extra == "tests"
Requires-Dist: click-didyoumean==0.3.1; extra == "tests"
Requires-Dist: click-plugins==1.1.1.2; extra == "tests"
Requires-Dist: click-repl==0.3.0; extra == "tests"
Requires-Dist: cloudflare==2.20.0; extra == "tests"
Requires-Dist: configargparse==1.7.5; extra == "tests"
Requires-Dist: configobj==5.0.9; extra == "tests"
Requires-Dist: coverage==7.13.5; extra == "tests"
Requires-Dist: cryptography==46.0.7; extra == "tests"
Requires-Dist: deprecated==1.3.1; extra == "tests"
Requires-Dist: distro==1.9.0; extra == "tests"
Requires-Dist: dnspython==1.15.0; extra == "tests"
Requires-Dist: dnspython3==1.15.0; extra == "tests"
Requires-Dist: docker==7.1.0; extra == "tests"
Requires-Dist: dyn==1.8.6; extra == "tests"
Requires-Dist: ecdsa==0.19.2; extra == "tests"
Requires-Dist: exceptiongroup==1.3.1; extra == "tests"
Requires-Dist: factory-boy==3.3.3; extra == "tests"
Requires-Dist: faker==40.15.0; extra == "tests"
Requires-Dist: fakeredis==2.35.1; extra == "tests"
Requires-Dist: flask==2.3.3; extra == "tests"
Requires-Dist: flask-bcrypt==1.0.1; extra == "tests"
Requires-Dist: flask-cors==6.0.2; extra == "tests"
Requires-Dist: flask-limiter==4.1.1; extra == "tests"
Requires-Dist: flask-mail==0.10.0; extra == "tests"
Requires-Dist: flask-migrate==4.1.0; extra == "tests"
Requires-Dist: flask-principal==0.4.0; extra == "tests"
Requires-Dist: flask-replicated==2.1; extra == "tests"
Requires-Dist: flask-restful==0.3.10; extra == "tests"
Requires-Dist: flask-sqlalchemy==2.5.1; extra == "tests"
Requires-Dist: freezegun==1.5.5; extra == "tests"
Requires-Dist: future==1.0.0; extra == "tests"
Requires-Dist: google-api-core[grpc]==2.30.0; extra == "tests"
Requires-Dist: google-auth==2.49.1; extra == "tests"
Requires-Dist: google-cloud-private-ca==1.18.0; extra == "tests"
Requires-Dist: google-cloud-storage==3.10.1; extra == "tests"
Requires-Dist: googleapis-common-protos[grpc]==1.73.0; extra == "tests"
Requires-Dist: graphql-core==3.2.8; extra == "tests"
Requires-Dist: grpc-google-iam-v1==0.14.3; extra == "tests"
Requires-Dist: grpcio==1.78.0; extra == "tests"
Requires-Dist: grpcio-status==1.78.0; extra == "tests"
Requires-Dist: gunicorn==25.3.0; extra == "tests"
Requires-Dist: hvac==2.4.0; extra == "tests"
Requires-Dist: idna==3.11; extra == "tests"
Requires-Dist: inflection==0.5.1; extra == "tests"
Requires-Dist: iniconfig==2.3.0; extra == "tests"
Requires-Dist: invoke==3.0.3; extra == "tests"
Requires-Dist: itsdangerous==2.2.0; extra == "tests"
Requires-Dist: javaobj-py3==0.4.4; extra == "tests"
Requires-Dist: jinja2==3.1.6; extra == "tests"
Requires-Dist: jmespath==1.1.0; extra == "tests"
Requires-Dist: josepy==2.2.0; extra == "tests"
Requires-Dist: jsondiff==2.2.1; extra == "tests"
Requires-Dist: jsonlines==4.0.0; extra == "tests"
Requires-Dist: jsonpatch==1.33; extra == "tests"
Requires-Dist: jsonpointer==3.1.1; extra == "tests"
Requires-Dist: jsonschema==4.24.1; extra == "tests"
Requires-Dist: jsonschema-path==0.4.5; extra == "tests"
Requires-Dist: jsonschema-specifications==2025.9.1; extra == "tests"
Requires-Dist: kombu[redis]==5.6.2; extra == "tests"
Requires-Dist: lazy-object-proxy==1.12.0; extra == "tests"
Requires-Dist: librt==0.8.1; extra == "tests"
Requires-Dist: limits==5.8.0; extra == "tests"
Requires-Dist: lockfile==0.12.2; extra == "tests"
Requires-Dist: mako==1.3.11; extra == "tests"
Requires-Dist: markdown-it-py==4.0.0; extra == "tests"
Requires-Dist: markupsafe==3.0.3; extra == "tests"
Requires-Dist: marshmallow==2.21.0; extra == "tests"
Requires-Dist: marshmallow-sqlalchemy==0.23.1; extra == "tests"
Requires-Dist: mdurl==0.1.2; extra == "tests"
Requires-Dist: moto[all]==4.2.14; extra == "tests"
Requires-Dist: mpmath==1.3.0; extra == "tests"
Requires-Dist: multipart==1.3.1; extra == "tests"
Requires-Dist: mypy==1.20.1; extra == "tests"
Requires-Dist: mypy-extensions==1.1.0; extra == "tests"
Requires-Dist: ndg-httpsclient==0.5.1; extra == "tests"
Requires-Dist: networkx==3.4.2; extra == "tests"
Requires-Dist: nose==1.3.7; extra == "tests"
Requires-Dist: openapi-schema-validator==0.8.1; extra == "tests"
Requires-Dist: openapi-spec-validator==0.8.4; extra == "tests"
Requires-Dist: ordered-set==4.1.0; extra == "tests"
Requires-Dist: packaging==26.0; extra == "tests"
Requires-Dist: paramiko==4.0.0; extra == "tests"
Requires-Dist: parsedatetime==2.6; extra == "tests"
Requires-Dist: pathable==0.5.0; extra == "tests"
Requires-Dist: pathspec==1.0.4; extra == "tests"
Requires-Dist: pem==23.1.0; extra == "tests"
Requires-Dist: platformdirs==4.9.4; extra == "tests"
Requires-Dist: pluggy==1.6.0; extra == "tests"
Requires-Dist: prompt-toolkit==3.0.52; extra == "tests"
Requires-Dist: proto-plus==1.27.1; extra == "tests"
Requires-Dist: protobuf==6.33.6; extra == "tests"
Requires-Dist: psycopg2==2.9.11; extra == "tests"
Requires-Dist: py-partiql-parser==0.5.0; extra == "tests"
Requires-Dist: pyasn1==0.6.3; extra == "tests"
Requires-Dist: pyasn1-modules==0.4.2; extra == "tests"
Requires-Dist: pycparser==3.0; extra == "tests"
Requires-Dist: pycryptodomex==3.23.0; extra == "tests"
Requires-Dist: pydantic==2.12.5; extra == "tests"
Requires-Dist: pydantic-core==2.41.5; extra == "tests"
Requires-Dist: pydantic-settings==2.13.1; extra == "tests"
Requires-Dist: pyflakes==3.4.0; extra == "tests"
Requires-Dist: pygments==2.20.0; extra == "tests"
Requires-Dist: pyjks==20.0.0; extra == "tests"
Requires-Dist: pyjwt==2.12.1; extra == "tests"
Requires-Dist: pynacl==1.6.2; extra == "tests"
Requires-Dist: pyopenssl==26.0.0; extra == "tests"
Requires-Dist: pyparsing==3.3.2; extra == "tests"
Requires-Dist: pyrfc3339==2.1.0; extra == "tests"
Requires-Dist: pyspnego==0.12.1; extra == "tests"
Requires-Dist: pytest==9.0.2; extra == "tests"
Requires-Dist: pytest-flask==1.3.0; extra == "tests"
Requires-Dist: pytest-mock==3.15.1; extra == "tests"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "tests"
Requires-Dist: python-dotenv==1.2.2; extra == "tests"
Requires-Dist: python-jose[cryptography]==3.5.0; extra == "tests"
Requires-Dist: python-json-logger==4.1.0; extra == "tests"
Requires-Dist: python-ldap==3.4.5; extra == "tests"
Requires-Dist: pytokens==0.4.1; extra == "tests"
Requires-Dist: pytz==2026.1.post1; extra == "tests"
Requires-Dist: pyyaml==6.0.3; extra == "tests"
Requires-Dist: redis==6.4.0; extra == "tests"
Requires-Dist: referencing==0.37.0; extra == "tests"
Requires-Dist: regex==2026.2.28; extra == "tests"
Requires-Dist: requests==2.33.1; extra == "tests"
Requires-Dist: requests-mock==1.12.1; extra == "tests"
Requires-Dist: requests-ntlm==1.3.0; extra == "tests"
Requires-Dist: responses==0.26.0; extra == "tests"
Requires-Dist: retrying==1.4.2; extra == "tests"
Requires-Dist: rfc3339-validator==0.1.4; extra == "tests"
Requires-Dist: rich==14.3.3; extra == "tests"
Requires-Dist: rpds-py==0.30.0; extra == "tests"
Requires-Dist: rsa==4.9.1; extra == "tests"
Requires-Dist: s3transfer==0.16.0; extra == "tests"
Requires-Dist: sentry-sdk==2.58.0; extra == "tests"
Requires-Dist: six==1.17.0; extra == "tests"
Requires-Dist: sortedcontainers==2.4.0; extra == "tests"
Requires-Dist: sqlalchemy==1.3.24; extra == "tests"
Requires-Dist: sqlalchemy-utils==0.41.2; extra == "tests"
Requires-Dist: sshpubkeys==3.3.1; extra == "tests"
Requires-Dist: stevedore==5.7.0; extra == "tests"
Requires-Dist: sympy==1.14.0; extra == "tests"
Requires-Dist: tabulate==0.10.0; extra == "tests"
Requires-Dist: tomli==2.4.1; extra == "tests"
Requires-Dist: twofish==0.3.0; extra == "tests"
Requires-Dist: types-cffi==2.0.0.20260316; extra == "tests"
Requires-Dist: types-deprecated==1.3.1.20260402; extra == "tests"
Requires-Dist: types-paramiko==4.0.0.20260408; extra == "tests"
Requires-Dist: types-protobuf==7.34.1.20260408; extra == "tests"
Requires-Dist: types-pyopenssl==24.1.0.20240722; extra == "tests"
Requires-Dist: types-pyrfc3339==2.0.1.20250825; extra == "tests"
Requires-Dist: types-pytz==2026.1.1.20260408; extra == "tests"
Requires-Dist: types-redis==4.6.0.20241004; extra == "tests"
Requires-Dist: types-requests==2.33.0.20260408; extra == "tests"
Requires-Dist: types-setuptools==82.0.0.20260408; extra == "tests"
Requires-Dist: types-six==1.17.0.20260408; extra == "tests"
Requires-Dist: types-tabulate==0.10.0.20260408; extra == "tests"
Requires-Dist: typing-extensions==4.15.0; extra == "tests"
Requires-Dist: typing-inspection==0.4.2; extra == "tests"
Requires-Dist: tzdata==2025.3; extra == "tests"
Requires-Dist: tzlocal==5.3.1; extra == "tests"
Requires-Dist: urllib3==2.6.3; extra == "tests"
Requires-Dist: validators==0.35.0; extra == "tests"
Requires-Dist: vine==5.1.0; extra == "tests"
Requires-Dist: wcwidth==0.6.0; extra == "tests"
Requires-Dist: werkzeug==3.1.8; extra == "tests"
Requires-Dist: wrapt==2.1.2; extra == "tests"
Requires-Dist: xmltodict==1.0.4; extra == "tests"
Provides-Extra: docs
Requires-Dist: acme==5.5.0; extra == "docs"
Requires-Dist: alabaster==1.0.0; extra == "docs"
Requires-Dist: alembic==1.14.1; extra == "docs"
Requires-Dist: alembic-autogenerate-enums==0.1.2; extra == "docs"
Requires-Dist: amqp==5.3.1; extra == "docs"
Requires-Dist: aniso8601==10.0.1; extra == "docs"
Requires-Dist: annotated-types==0.7.0; extra == "docs"
Requires-Dist: arrow==1.4.0; extra == "docs"
Requires-Dist: async-timeout==5.0.1; extra == "docs"
Requires-Dist: asyncpool==1.0; extra == "docs"
Requires-Dist: attrs==26.1.0; extra == "docs"
Requires-Dist: aws-sam-translator==1.108.0; extra == "docs"
Requires-Dist: aws-xray-sdk==2.15.0; extra == "docs"
Requires-Dist: babel==2.18.0; extra == "docs"
Requires-Dist: bandit==1.9.4; extra == "docs"
Requires-Dist: bcrypt==5.0.0; extra == "docs"
Requires-Dist: billiard==4.2.4; extra == "docs"
Requires-Dist: black==26.3.1; extra == "docs"
Requires-Dist: blinker==1.9.0; extra == "docs"
Requires-Dist: boto3==1.42.91; extra == "docs"
Requires-Dist: botocore==1.42.91; extra == "docs"
Requires-Dist: celery[redis]==5.6.2; extra == "docs"
Requires-Dist: certbot==5.5.0; extra == "docs"
Requires-Dist: certifi==2026.2.25; extra == "docs"
Requires-Dist: certsrv[ntlm]==2.1.1; extra == "docs"
Requires-Dist: cffi==2.0.0; extra == "docs"
Requires-Dist: cfn-lint==1.47.1; extra == "docs"
Requires-Dist: charset-normalizer==3.4.6; extra == "docs"
Requires-Dist: click==8.3.1; extra == "docs"
Requires-Dist: click-didyoumean==0.3.1; extra == "docs"
Requires-Dist: click-plugins==1.1.1.2; extra == "docs"
Requires-Dist: click-repl==0.3.0; extra == "docs"
Requires-Dist: cloudflare==2.20.0; extra == "docs"
Requires-Dist: configargparse==1.7.5; extra == "docs"
Requires-Dist: configobj==5.0.9; extra == "docs"
Requires-Dist: coverage==7.13.5; extra == "docs"
Requires-Dist: cryptography==46.0.7; extra == "docs"
Requires-Dist: deprecated==1.3.1; extra == "docs"
Requires-Dist: distro==1.9.0; extra == "docs"
Requires-Dist: dnspython==1.15.0; extra == "docs"
Requires-Dist: dnspython3==1.15.0; extra == "docs"
Requires-Dist: docker==7.1.0; extra == "docs"
Requires-Dist: docutils==0.21.2; extra == "docs"
Requires-Dist: dyn==1.8.6; extra == "docs"
Requires-Dist: ecdsa==0.19.2; extra == "docs"
Requires-Dist: exceptiongroup==1.3.1; extra == "docs"
Requires-Dist: factory-boy==3.3.3; extra == "docs"
Requires-Dist: faker==40.15.0; extra == "docs"
Requires-Dist: fakeredis==2.35.1; extra == "docs"
Requires-Dist: flask==2.3.3; extra == "docs"
Requires-Dist: flask-bcrypt==1.0.1; extra == "docs"
Requires-Dist: flask-cors==6.0.2; extra == "docs"
Requires-Dist: flask-limiter==4.1.1; extra == "docs"
Requires-Dist: flask-mail==0.10.0; extra == "docs"
Requires-Dist: flask-migrate==4.1.0; extra == "docs"
Requires-Dist: flask-principal==0.4.0; extra == "docs"
Requires-Dist: flask-replicated==2.1; extra == "docs"
Requires-Dist: flask-restful==0.3.10; extra == "docs"
Requires-Dist: flask-sqlalchemy==2.5.1; extra == "docs"
Requires-Dist: freezegun==1.5.5; extra == "docs"
Requires-Dist: future==1.0.0; extra == "docs"
Requires-Dist: google-api-core[grpc]==2.30.0; extra == "docs"
Requires-Dist: google-auth==2.49.1; extra == "docs"
Requires-Dist: google-cloud-private-ca==1.18.0; extra == "docs"
Requires-Dist: googleapis-common-protos[grpc]==1.73.0; extra == "docs"
Requires-Dist: graphql-core==3.2.8; extra == "docs"
Requires-Dist: grpc-google-iam-v1==0.14.3; extra == "docs"
Requires-Dist: grpcio==1.78.0; extra == "docs"
Requires-Dist: grpcio-status==1.78.0; extra == "docs"
Requires-Dist: gunicorn==25.3.0; extra == "docs"
Requires-Dist: hvac==2.4.0; extra == "docs"
Requires-Dist: idna==3.11; extra == "docs"
Requires-Dist: imagesize==2.0.0; extra == "docs"
Requires-Dist: inflection==0.5.1; extra == "docs"
Requires-Dist: iniconfig==2.3.0; extra == "docs"
Requires-Dist: invoke==3.0.3; extra == "docs"
Requires-Dist: itsdangerous==2.2.0; extra == "docs"
Requires-Dist: javaobj-py3==0.4.4; extra == "docs"
Requires-Dist: jinja2==3.1.6; extra == "docs"
Requires-Dist: jmespath==1.1.0; extra == "docs"
Requires-Dist: josepy==2.2.0; extra == "docs"
Requires-Dist: jsondiff==2.2.1; extra == "docs"
Requires-Dist: jsonlines==4.0.0; extra == "docs"
Requires-Dist: jsonpatch==1.33; extra == "docs"
Requires-Dist: jsonpointer==3.1.1; extra == "docs"
Requires-Dist: jsonschema==4.24.1; extra == "docs"
Requires-Dist: jsonschema-path==0.4.5; extra == "docs"
Requires-Dist: jsonschema-specifications==2025.9.1; extra == "docs"
Requires-Dist: kombu[redis]==5.6.2; extra == "docs"
Requires-Dist: lazy-object-proxy==1.12.0; extra == "docs"
Requires-Dist: librt==0.8.1; extra == "docs"
Requires-Dist: limits==5.8.0; extra == "docs"
Requires-Dist: lockfile==0.12.2; extra == "docs"
Requires-Dist: logmatic-python==0.1.7; extra == "docs"
Requires-Dist: mako==1.3.11; extra == "docs"
Requires-Dist: markdown-it-py==4.0.0; extra == "docs"
Requires-Dist: markupsafe==3.0.3; extra == "docs"
Requires-Dist: marshmallow==2.21.0; extra == "docs"
Requires-Dist: marshmallow-sqlalchemy==0.23.1; extra == "docs"
Requires-Dist: mdurl==0.1.2; extra == "docs"
Requires-Dist: moto[all]==4.2.14; extra == "docs"
Requires-Dist: mpmath==1.3.0; extra == "docs"
Requires-Dist: multipart==1.3.1; extra == "docs"
Requires-Dist: mypy==1.20.1; extra == "docs"
Requires-Dist: mypy-extensions==1.1.0; extra == "docs"
Requires-Dist: ndg-httpsclient==0.5.1; extra == "docs"
Requires-Dist: networkx==3.4.2; extra == "docs"
Requires-Dist: nose==1.3.7; extra == "docs"
Requires-Dist: openapi-schema-validator==0.8.1; extra == "docs"
Requires-Dist: openapi-spec-validator==0.8.4; extra == "docs"
Requires-Dist: ordered-set==4.1.0; extra == "docs"
Requires-Dist: packaging==26.0; extra == "docs"
Requires-Dist: paramiko==4.0.0; extra == "docs"
Requires-Dist: parsedatetime==2.6; extra == "docs"
Requires-Dist: pathable==0.5.0; extra == "docs"
Requires-Dist: pathspec==1.0.4; extra == "docs"
Requires-Dist: pem==23.1.0; extra == "docs"
Requires-Dist: platformdirs==4.9.4; extra == "docs"
Requires-Dist: pluggy==1.6.0; extra == "docs"
Requires-Dist: prompt-toolkit==3.0.52; extra == "docs"
Requires-Dist: proto-plus==1.27.1; extra == "docs"
Requires-Dist: protobuf==6.33.6; extra == "docs"
Requires-Dist: psycopg2==2.9.11; extra == "docs"
Requires-Dist: py-partiql-parser==0.5.0; extra == "docs"
Requires-Dist: pyasn1==0.6.3; extra == "docs"
Requires-Dist: pyasn1-modules==0.4.2; extra == "docs"
Requires-Dist: pycparser==3.0; extra == "docs"
Requires-Dist: pycryptodomex==3.23.0; extra == "docs"
Requires-Dist: pydantic==2.12.5; extra == "docs"
Requires-Dist: pydantic-core==2.41.5; extra == "docs"
Requires-Dist: pydantic-settings==2.13.1; extra == "docs"
Requires-Dist: pyflakes==3.4.0; extra == "docs"
Requires-Dist: pygments==2.20.0; extra == "docs"
Requires-Dist: pyjks==20.0.0; extra == "docs"
Requires-Dist: pyjwt==2.12.1; extra == "docs"
Requires-Dist: pynacl==1.6.2; extra == "docs"
Requires-Dist: pyopenssl==26.0.0; extra == "docs"
Requires-Dist: pyparsing==3.3.2; extra == "docs"
Requires-Dist: pyrfc3339==2.1.0; extra == "docs"
Requires-Dist: pyspnego==0.12.1; extra == "docs"
Requires-Dist: pytest==9.0.2; extra == "docs"
Requires-Dist: pytest-flask==1.3.0; extra == "docs"
Requires-Dist: pytest-mock==3.15.1; extra == "docs"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "docs"
Requires-Dist: python-dotenv==1.2.2; extra == "docs"
Requires-Dist: python-jose[cryptography]==3.5.0; extra == "docs"
Requires-Dist: python-json-logger==4.1.0; extra == "docs"
Requires-Dist: python-ldap==3.4.5; extra == "docs"
Requires-Dist: pytokens==0.4.1; extra == "docs"
Requires-Dist: pytz==2026.1.post1; extra == "docs"
Requires-Dist: pyyaml==6.0.3; extra == "docs"
Requires-Dist: redis==6.4.0; extra == "docs"
Requires-Dist: referencing==0.37.0; extra == "docs"
Requires-Dist: regex==2026.2.28; extra == "docs"
Requires-Dist: requests==2.33.1; extra == "docs"
Requires-Dist: requests-mock==1.12.1; extra == "docs"
Requires-Dist: requests-ntlm==1.3.0; extra == "docs"
Requires-Dist: responses==0.26.0; extra == "docs"
Requires-Dist: retrying==1.4.2; extra == "docs"
Requires-Dist: rfc3339-validator==0.1.4; extra == "docs"
Requires-Dist: rich==14.3.3; extra == "docs"
Requires-Dist: rpds-py==0.30.0; extra == "docs"
Requires-Dist: rsa==4.9.1; extra == "docs"
Requires-Dist: s3transfer==0.16.0; extra == "docs"
Requires-Dist: sentry-sdk==2.58.0; extra == "docs"
Requires-Dist: six==1.17.0; extra == "docs"
Requires-Dist: snowballstemmer==3.0.1; extra == "docs"
Requires-Dist: sortedcontainers==2.4.0; extra == "docs"
Requires-Dist: sphinx==8.1.3; extra == "docs"
Requires-Dist: sphinx-rtd-theme==3.1.0; extra == "docs"
Requires-Dist: sphinxcontrib-applehelp==2.0.0; extra == "docs"
Requires-Dist: sphinxcontrib-devhelp==2.0.0; extra == "docs"
Requires-Dist: sphinxcontrib-htmlhelp==2.1.0; extra == "docs"
Requires-Dist: sphinxcontrib-httpdomain==2.0.0; extra == "docs"
Requires-Dist: sphinxcontrib-jquery==4.1; extra == "docs"
Requires-Dist: sphinxcontrib-jsmath==1.0.1; extra == "docs"
Requires-Dist: sphinxcontrib-qthelp==2.0.0; extra == "docs"
Requires-Dist: sphinxcontrib-serializinghtml==2.0.0; extra == "docs"
Requires-Dist: sqlalchemy==1.3.24; extra == "docs"
Requires-Dist: sqlalchemy-utils==0.41.2; extra == "docs"
Requires-Dist: sshpubkeys==3.3.1; extra == "docs"
Requires-Dist: stevedore==5.7.0; extra == "docs"
Requires-Dist: sympy==1.14.0; extra == "docs"
Requires-Dist: tabulate==0.10.0; extra == "docs"
Requires-Dist: tomli==2.4.1; extra == "docs"
Requires-Dist: twofish==0.3.0; extra == "docs"
Requires-Dist: types-cffi==2.0.0.20260316; extra == "docs"
Requires-Dist: types-deprecated==1.3.1.20260402; extra == "docs"
Requires-Dist: types-paramiko==4.0.0.20260408; extra == "docs"
Requires-Dist: types-protobuf==7.34.1.20260408; extra == "docs"
Requires-Dist: types-pyopenssl==24.1.0.20240722; extra == "docs"
Requires-Dist: types-pyrfc3339==2.0.1.20250825; extra == "docs"
Requires-Dist: types-pytz==2026.1.1.20260408; extra == "docs"
Requires-Dist: types-redis==4.6.0.20241004; extra == "docs"
Requires-Dist: types-requests==2.33.0.20260408; extra == "docs"
Requires-Dist: types-setuptools==82.0.0.20260408; extra == "docs"
Requires-Dist: types-six==1.17.0.20260408; extra == "docs"
Requires-Dist: types-tabulate==0.10.0.20260408; extra == "docs"
Requires-Dist: typing-extensions==4.15.0; extra == "docs"
Requires-Dist: typing-inspection==0.4.2; extra == "docs"
Requires-Dist: tzdata==2025.3; extra == "docs"
Requires-Dist: tzlocal==5.3.1; extra == "docs"
Requires-Dist: urllib3==2.6.3; extra == "docs"
Requires-Dist: validators==0.35.0; extra == "docs"
Requires-Dist: vine==5.1.0; extra == "docs"
Requires-Dist: wcwidth==0.6.0; extra == "docs"
Requires-Dist: werkzeug==3.1.8; extra == "docs"
Requires-Dist: wrapt==2.1.2; extra == "docs"
Requires-Dist: xmltodict==1.0.4; extra == "docs"
Provides-Extra: dev
Requires-Dist: acme==5.5.0; extra == "dev"
Requires-Dist: alembic==1.14.1; extra == "dev"
Requires-Dist: alembic-autogenerate-enums==0.1.2; extra == "dev"
Requires-Dist: amqp==5.3.1; extra == "dev"
Requires-Dist: aniso8601==10.0.1; extra == "dev"
Requires-Dist: annotated-types==0.7.0; extra == "dev"
Requires-Dist: arrow==1.4.0; extra == "dev"
Requires-Dist: async-timeout==5.0.1; extra == "dev"
Requires-Dist: asyncpool==1.0; extra == "dev"
Requires-Dist: attrs==26.1.0; extra == "dev"
Requires-Dist: aws-sam-translator==1.108.0; extra == "dev"
Requires-Dist: aws-xray-sdk==2.15.0; extra == "dev"
Requires-Dist: backports-tarfile==1.2.0; extra == "dev"
Requires-Dist: bandit==1.9.4; extra == "dev"
Requires-Dist: bcrypt==5.0.0; extra == "dev"
Requires-Dist: billiard==4.2.4; extra == "dev"
Requires-Dist: black==26.3.1; extra == "dev"
Requires-Dist: blinker==1.9.0; extra == "dev"
Requires-Dist: boto3==1.42.91; extra == "dev"
Requires-Dist: botocore==1.42.91; extra == "dev"
Requires-Dist: celery[redis]==5.6.2; extra == "dev"
Requires-Dist: certbot==5.5.0; extra == "dev"
Requires-Dist: certifi==2026.2.25; extra == "dev"
Requires-Dist: certsrv[ntlm]==2.1.1; extra == "dev"
Requires-Dist: cffi==2.0.0; extra == "dev"
Requires-Dist: cfgv==3.5.0; extra == "dev"
Requires-Dist: cfn-lint==1.47.1; extra == "dev"
Requires-Dist: charset-normalizer==3.4.6; extra == "dev"
Requires-Dist: click==8.3.1; extra == "dev"
Requires-Dist: click-didyoumean==0.3.1; extra == "dev"
Requires-Dist: click-plugins==1.1.1.2; extra == "dev"
Requires-Dist: click-repl==0.3.0; extra == "dev"
Requires-Dist: cloudflare==2.20.0; extra == "dev"
Requires-Dist: configargparse==1.7.5; extra == "dev"
Requires-Dist: configobj==5.0.9; extra == "dev"
Requires-Dist: coverage==7.13.5; extra == "dev"
Requires-Dist: cryptography==46.0.7; extra == "dev"
Requires-Dist: deprecated==1.3.1; extra == "dev"
Requires-Dist: distlib==0.4.0; extra == "dev"
Requires-Dist: distro==1.9.0; extra == "dev"
Requires-Dist: dnspython==1.15.0; extra == "dev"
Requires-Dist: dnspython3==1.15.0; extra == "dev"
Requires-Dist: docker==7.1.0; extra == "dev"
Requires-Dist: docutils==0.22.4; extra == "dev"
Requires-Dist: dyn==1.8.6; extra == "dev"
Requires-Dist: ecdsa==0.19.2; extra == "dev"
Requires-Dist: exceptiongroup==1.3.1; extra == "dev"
Requires-Dist: factory-boy==3.3.3; extra == "dev"
Requires-Dist: faker==40.15.0; extra == "dev"
Requires-Dist: fakeredis==2.35.1; extra == "dev"
Requires-Dist: filelock==3.25.2; extra == "dev"
Requires-Dist: flake8==7.3.0; extra == "dev"
Requires-Dist: flake8-pyproject==1.2.4; extra == "dev"
Requires-Dist: flask==2.3.3; extra == "dev"
Requires-Dist: flask-bcrypt==1.0.1; extra == "dev"
Requires-Dist: flask-cors==6.0.2; extra == "dev"
Requires-Dist: flask-limiter==4.1.1; extra == "dev"
Requires-Dist: flask-mail==0.10.0; extra == "dev"
Requires-Dist: flask-migrate==4.1.0; extra == "dev"
Requires-Dist: flask-principal==0.4.0; extra == "dev"
Requires-Dist: flask-replicated==2.1; extra == "dev"
Requires-Dist: flask-restful==0.3.10; extra == "dev"
Requires-Dist: flask-sqlalchemy==2.5.1; extra == "dev"
Requires-Dist: freezegun==1.5.5; extra == "dev"
Requires-Dist: future==1.0.0; extra == "dev"
Requires-Dist: google-api-core[grpc]==2.30.0; extra == "dev"
Requires-Dist: google-auth==2.49.1; extra == "dev"
Requires-Dist: google-cloud-private-ca==1.18.0; extra == "dev"
Requires-Dist: googleapis-common-protos[grpc]==1.73.0; extra == "dev"
Requires-Dist: graphql-core==3.2.8; extra == "dev"
Requires-Dist: grpc-google-iam-v1==0.14.3; extra == "dev"
Requires-Dist: grpcio==1.78.0; extra == "dev"
Requires-Dist: grpcio-status==1.78.0; extra == "dev"
Requires-Dist: gunicorn==25.3.0; extra == "dev"
Requires-Dist: hvac==2.4.0; extra == "dev"
Requires-Dist: id==1.6.1; extra == "dev"
Requires-Dist: identify==2.6.18; extra == "dev"
Requires-Dist: idna==3.11; extra == "dev"
Requires-Dist: importlib-metadata==9.0.0; extra == "dev"
Requires-Dist: inflection==0.5.1; extra == "dev"
Requires-Dist: iniconfig==2.3.0; extra == "dev"
Requires-Dist: invoke==3.0.3; extra == "dev"
Requires-Dist: itsdangerous==2.2.0; extra == "dev"
Requires-Dist: jaraco-classes==3.4.0; extra == "dev"
Requires-Dist: jaraco-context==6.1.2; extra == "dev"
Requires-Dist: jaraco-functools==4.4.0; extra == "dev"
Requires-Dist: javaobj-py3==0.4.4; extra == "dev"
Requires-Dist: jeepney==0.9.0; extra == "dev"
Requires-Dist: jinja2==3.1.6; extra == "dev"
Requires-Dist: jmespath==1.1.0; extra == "dev"
Requires-Dist: josepy==2.2.0; extra == "dev"
Requires-Dist: jsondiff==2.2.1; extra == "dev"
Requires-Dist: jsonlines==4.0.0; extra == "dev"
Requires-Dist: jsonpatch==1.33; extra == "dev"
Requires-Dist: jsonpointer==3.1.1; extra == "dev"
Requires-Dist: jsonschema==4.24.1; extra == "dev"
Requires-Dist: jsonschema-path==0.4.5; extra == "dev"
Requires-Dist: jsonschema-specifications==2025.9.1; extra == "dev"
Requires-Dist: keyring==25.7.0; extra == "dev"
Requires-Dist: kombu[redis]==5.6.2; extra == "dev"
Requires-Dist: lazy-object-proxy==1.12.0; extra == "dev"
Requires-Dist: librt==0.8.1; extra == "dev"
Requires-Dist: limits==5.8.0; extra == "dev"
Requires-Dist: lockfile==0.12.2; extra == "dev"
Requires-Dist: mako==1.3.11; extra == "dev"
Requires-Dist: markdown-it-py==4.0.0; extra == "dev"
Requires-Dist: markupsafe==3.0.3; extra == "dev"
Requires-Dist: marshmallow==2.21.0; extra == "dev"
Requires-Dist: marshmallow-sqlalchemy==0.23.1; extra == "dev"
Requires-Dist: mccabe==0.7.0; extra == "dev"
Requires-Dist: mdurl==0.1.2; extra == "dev"
Requires-Dist: more-itertools==10.8.0; extra == "dev"
Requires-Dist: moto[all]==4.2.14; extra == "dev"
Requires-Dist: mpmath==1.3.0; extra == "dev"
Requires-Dist: multipart==1.3.1; extra == "dev"
Requires-Dist: mypy==1.20.1; extra == "dev"
Requires-Dist: mypy-extensions==1.1.0; extra == "dev"
Requires-Dist: ndg-httpsclient==0.5.1; extra == "dev"
Requires-Dist: networkx==3.4.2; extra == "dev"
Requires-Dist: nh3==0.3.4; extra == "dev"
Requires-Dist: nodeenv==1.10.0; extra == "dev"
Requires-Dist: nose==1.3.7; extra == "dev"
Requires-Dist: openapi-schema-validator==0.8.1; extra == "dev"
Requires-Dist: openapi-spec-validator==0.8.4; extra == "dev"
Requires-Dist: ordered-set==4.1.0; extra == "dev"
Requires-Dist: packaging==26.0; extra == "dev"
Requires-Dist: paramiko==4.0.0; extra == "dev"
Requires-Dist: parsedatetime==2.6; extra == "dev"
Requires-Dist: pathable==0.5.0; extra == "dev"
Requires-Dist: pathspec==1.0.4; extra == "dev"
Requires-Dist: pem==23.1.0; extra == "dev"
Requires-Dist: platformdirs==4.9.4; extra == "dev"
Requires-Dist: pluggy==1.6.0; extra == "dev"
Requires-Dist: pre-commit==4.5.1; extra == "dev"
Requires-Dist: prompt-toolkit==3.0.52; extra == "dev"
Requires-Dist: proto-plus==1.27.1; extra == "dev"
Requires-Dist: protobuf==6.33.6; extra == "dev"
Requires-Dist: psycopg2==2.9.11; extra == "dev"
Requires-Dist: py-partiql-parser==0.5.0; extra == "dev"
Requires-Dist: pyasn1==0.6.3; extra == "dev"
Requires-Dist: pyasn1-modules==0.4.2; extra == "dev"
Requires-Dist: pycodestyle==2.14.0; extra == "dev"
Requires-Dist: pycparser==3.0; extra == "dev"
Requires-Dist: pycryptodomex==3.23.0; extra == "dev"
Requires-Dist: pydantic==2.12.5; extra == "dev"
Requires-Dist: pydantic-core==2.41.5; extra == "dev"
Requires-Dist: pydantic-settings==2.13.1; extra == "dev"
Requires-Dist: pyflakes==3.4.0; extra == "dev"
Requires-Dist: pygments==2.20.0; extra == "dev"
Requires-Dist: pyjks==20.0.0; extra == "dev"
Requires-Dist: pyjwt==2.12.1; extra == "dev"
Requires-Dist: pynacl==1.6.2; extra == "dev"
Requires-Dist: pyopenssl==26.0.0; extra == "dev"
Requires-Dist: pyparsing==3.3.2; extra == "dev"
Requires-Dist: pyrfc3339==2.1.0; extra == "dev"
Requires-Dist: pyspnego==0.12.1; extra == "dev"
Requires-Dist: pytest==9.0.2; extra == "dev"
Requires-Dist: pytest-flask==1.3.0; extra == "dev"
Requires-Dist: pytest-mock==3.15.1; extra == "dev"
Requires-Dist: python-dateutil==2.9.0.post0; extra == "dev"
Requires-Dist: python-discovery==1.2.0; extra == "dev"
Requires-Dist: python-dotenv==1.2.2; extra == "dev"
Requires-Dist: python-jose[cryptography]==3.5.0; extra == "dev"
Requires-Dist: python-json-logger==4.1.0; extra == "dev"
Requires-Dist: python-ldap==3.4.5; extra == "dev"
Requires-Dist: pytokens==0.4.1; extra == "dev"
Requires-Dist: pytz==2026.1.post1; extra == "dev"
Requires-Dist: pyyaml==6.0.3; extra == "dev"
Requires-Dist: readme-renderer==44.0; extra == "dev"
Requires-Dist: redis==6.4.0; extra == "dev"
Requires-Dist: referencing==0.37.0; extra == "dev"
Requires-Dist: regex==2026.2.28; extra == "dev"
Requires-Dist: requests==2.33.1; extra == "dev"
Requires-Dist: requests-mock==1.12.1; extra == "dev"
Requires-Dist: requests-ntlm==1.3.0; extra == "dev"
Requires-Dist: requests-toolbelt==1.0.0; extra == "dev"
Requires-Dist: responses==0.26.0; extra == "dev"
Requires-Dist: retrying==1.4.2; extra == "dev"
Requires-Dist: rfc3339-validator==0.1.4; extra == "dev"
Requires-Dist: rfc3986==2.0.0; extra == "dev"
Requires-Dist: rich==14.3.3; extra == "dev"
Requires-Dist: rpds-py==0.30.0; extra == "dev"
Requires-Dist: rsa==4.9.1; extra == "dev"
Requires-Dist: s3transfer==0.16.0; extra == "dev"
Requires-Dist: secretstorage==3.5.0; extra == "dev"
Requires-Dist: sentry-sdk==2.58.0; extra == "dev"
Requires-Dist: six==1.17.0; extra == "dev"
Requires-Dist: sortedcontainers==2.4.0; extra == "dev"
Requires-Dist: sqlalchemy==1.3.24; extra == "dev"
Requires-Dist: sqlalchemy-utils==0.41.2; extra == "dev"
Requires-Dist: sshpubkeys==3.3.1; extra == "dev"
Requires-Dist: stevedore==5.7.0; extra == "dev"
Requires-Dist: sympy==1.14.0; extra == "dev"
Requires-Dist: tabulate==0.10.0; extra == "dev"
Requires-Dist: tomli==2.4.1; extra == "dev"
Requires-Dist: twine==6.2.0; extra == "dev"
Requires-Dist: twofish==0.3.0; extra == "dev"
Requires-Dist: types-cffi==2.0.0.20260316; extra == "dev"
Requires-Dist: types-deprecated==1.3.1.20260402; extra == "dev"
Requires-Dist: types-paramiko==4.0.0.20260408; extra == "dev"
Requires-Dist: types-protobuf==7.34.1.20260408; extra == "dev"
Requires-Dist: types-pyopenssl==24.1.0.20240722; extra == "dev"
Requires-Dist: types-pyrfc3339==2.0.1.20250825; extra == "dev"
Requires-Dist: types-pytz==2026.1.1.20260408; extra == "dev"
Requires-Dist: types-redis==4.6.0.20241004; extra == "dev"
Requires-Dist: types-requests==2.33.0.20260408; extra == "dev"
Requires-Dist: types-setuptools==82.0.0.20260408; extra == "dev"
Requires-Dist: types-six==1.17.0.20260408; extra == "dev"
Requires-Dist: types-tabulate==0.10.0.20260408; extra == "dev"
Requires-Dist: typing-extensions==4.15.0; extra == "dev"
Requires-Dist: typing-inspection==0.4.2; extra == "dev"
Requires-Dist: tzdata==2025.3; extra == "dev"
Requires-Dist: tzlocal==5.3.1; extra == "dev"
Requires-Dist: urllib3==2.6.3; extra == "dev"
Requires-Dist: validators==0.35.0; extra == "dev"
Requires-Dist: vine==5.1.0; extra == "dev"
Requires-Dist: virtualenv==21.2.0; extra == "dev"
Requires-Dist: wcwidth==0.6.0; extra == "dev"
Requires-Dist: werkzeug==3.1.8; extra == "dev"
Requires-Dist: wrapt==2.1.2; extra == "dev"
Requires-Dist: xmltodict==1.0.4; extra == "dev"
Requires-Dist: zipp==3.23.0; extra == "dev"
Dynamic: license-file

Lemur
=====

.. image:: https://badges.gitter.im/Join%20Chat.svg
   :alt: Join the chat at https://gitter.im/Netflix/lemur
   :target: https://gitter.im/Netflix/lemur?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge

.. image:: https://readthedocs.org/projects/lemur/badge/?version=latest
    :target: https://lemur.readthedocs.io
    :alt: Latest Docs

.. image:: https://img.shields.io/badge/NetflixOSS-active-brightgreen.svg

.. image:: https://coveralls.io/repos/github/Netflix/lemur/badge.svg?branch=main
    :target: https://coveralls.io/github/Netflix/lemur?branch=main



Lemur manages TLS certificate creation. While not able to issue certificates itself, Lemur acts as a broker between CAs
and environments providing a central portal for developers to issue TLS certificates with 'sane' defaults.

Lemur aims to support the 3 most recent python releases which have been released for at least a year. For example, if python3.12 released last month, we'd aim to support versions 3.9, 3.10, and 3.11.
We deploy on Ubuntu and develop mostly on OS X.


Project resources
=================

- `Lemur Blog Post <http://techblog.netflix.com/2015/09/introducing-lemur.html>`_
- `Documentation <http://lemur.readthedocs.io/>`_
- `Source code <https://github.com/netflix/lemur>`_
- `Issue tracker <https://github.com/netflix/lemur/issues>`_
- `Docker <https://github.com/Netflix/lemur-docker>`_
