Metadata-Version: 2.1
Name: lemur
Version: 0.8.0
Summary: Certificate management and orchestration service
Home-page: https://github.com/Netflix/lemur
Author: The Lemur developers
Author-email: security@netflix.com
License: UNKNOWN
Platform: UNKNOWN
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.5
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: Apache Software License
Requires-Dist: acme (==1.9.0)
Requires-Dist: alembic-autogenerate-enums (==0.0.2)
Requires-Dist: alembic (==1.4.2)
Requires-Dist: amqp (==2.5.2)
Requires-Dist: aniso8601 (==8.0.0)
Requires-Dist: arrow (==0.17.0)
Requires-Dist: asyncpool (==1.0)
Requires-Dist: bcrypt (==3.1.7)
Requires-Dist: beautifulsoup4 (==4.9.1)
Requires-Dist: billiard (==3.6.3.0)
Requires-Dist: blinker (==1.4)
Requires-Dist: boto3 (==1.16.14)
Requires-Dist: botocore (==1.19.14)
Requires-Dist: celery[redis] (==4.4.2)
Requires-Dist: certifi (==2020.11.8)
Requires-Dist: certsrv (==2.1.1)
Requires-Dist: cffi (==1.14.0)
Requires-Dist: chardet (==3.0.4)
Requires-Dist: click (==7.1.2)
Requires-Dist: cloudflare (==2.8.13)
Requires-Dist: cryptography (==3.2.1)
Requires-Dist: dnspython3 (==1.15.0)
Requires-Dist: dnspython (==1.15.0)
Requires-Dist: dyn (==1.8.1)
Requires-Dist: flask-bcrypt (==0.7.1)
Requires-Dist: flask-cors (==3.0.9)
Requires-Dist: flask-mail (==0.9.1)
Requires-Dist: flask-migrate (==2.5.3)
Requires-Dist: flask-principal (==0.4.0)
Requires-Dist: flask-replicated (==1.4)
Requires-Dist: flask-restful (==0.3.8)
Requires-Dist: flask-script (==2.0.6)
Requires-Dist: flask-sqlalchemy (==2.4.4)
Requires-Dist: flask (==1.1.2)
Requires-Dist: future (==0.18.2)
Requires-Dist: gunicorn (==20.0.4)
Requires-Dist: hvac (==0.10.5)
Requires-Dist: idna (==2.9)
Requires-Dist: inflection (==0.5.1)
Requires-Dist: itsdangerous (==1.1.0)
Requires-Dist: javaobj-py3 (==0.4.0.1)
Requires-Dist: jinja2 (==2.11.2)
Requires-Dist: jmespath (==0.9.5)
Requires-Dist: josepy (==1.3.0)
Requires-Dist: jsonlines (==1.2.0)
Requires-Dist: kombu (==4.6.8)
Requires-Dist: lockfile (==0.12.2)
Requires-Dist: logmatic-python (==0.1.7)
Requires-Dist: mako (==1.1.2)
Requires-Dist: markupsafe (==1.1.1)
Requires-Dist: marshmallow-sqlalchemy (==0.23.1)
Requires-Dist: marshmallow (==2.20.4)
Requires-Dist: ndg-httpsclient (==0.5.1)
Requires-Dist: paramiko (==2.7.2)
Requires-Dist: pem (==20.1.0)
Requires-Dist: psycopg2 (==2.8.6)
Requires-Dist: pyasn1-modules (==0.2.8)
Requires-Dist: pyasn1 (==0.4.8)
Requires-Dist: pycparser (==2.20)
Requires-Dist: pycryptodomex (==3.9.7)
Requires-Dist: pyjks (==20.0.0)
Requires-Dist: pyjwt (==1.7.1)
Requires-Dist: pynacl (==1.3.0)
Requires-Dist: pyopenssl (==19.1.0)
Requires-Dist: pyrfc3339 (==1.1)
Requires-Dist: python-dateutil (==2.8.1)
Requires-Dist: python-editor (==1.0.4)
Requires-Dist: python-json-logger (==0.1.11)
Requires-Dist: python-ldap (==3.3.1)
Requires-Dist: pytz (==2019.3)
Requires-Dist: pyyaml (==5.3.1)
Requires-Dist: raven[flask] (==6.10.0)
Requires-Dist: redis (==3.5.3)
Requires-Dist: requests-toolbelt (==0.9.1)
Requires-Dist: requests[security] (==2.24.0)
Requires-Dist: retrying (==1.3.3)
Requires-Dist: s3transfer (==0.3.3)
Requires-Dist: six (==1.15.0)
Requires-Dist: soupsieve (==2.0.1)
Requires-Dist: sqlalchemy-utils (==0.36.8)
Requires-Dist: sqlalchemy (==1.3.16)
Requires-Dist: tabulate (==0.8.7)
Requires-Dist: twofish (==0.3.0)
Requires-Dist: urllib3 (==1.25.8)
Requires-Dist: vine (==1.3.0)
Requires-Dist: werkzeug (==1.0.1)
Requires-Dist: xmltodict (==0.12.0)
Provides-Extra: dev
Requires-Dist: appdirs (==1.4.3) ; extra == 'dev'
Requires-Dist: bleach (==3.1.4) ; extra == 'dev'
Requires-Dist: certifi (==2020.11.8) ; extra == 'dev'
Requires-Dist: cffi (==1.14.0) ; extra == 'dev'
Requires-Dist: cfgv (==3.1.0) ; extra == 'dev'
Requires-Dist: chardet (==3.0.4) ; extra == 'dev'
Requires-Dist: colorama (==0.4.3) ; extra == 'dev'
Requires-Dist: cryptography (==3.2.1) ; extra == 'dev'
Requires-Dist: distlib (==0.3.0) ; extra == 'dev'
Requires-Dist: docutils (==0.16) ; extra == 'dev'
Requires-Dist: filelock (==3.0.12) ; extra == 'dev'
Requires-Dist: flake8 (==3.8.4) ; extra == 'dev'
Requires-Dist: identify (==1.4.14) ; extra == 'dev'
Requires-Dist: idna (==2.9) ; extra == 'dev'
Requires-Dist: invoke (==1.4.1) ; extra == 'dev'
Requires-Dist: jeepney (==0.4.3) ; extra == 'dev'
Requires-Dist: keyring (==21.2.0) ; extra == 'dev'
Requires-Dist: mccabe (==0.6.1) ; extra == 'dev'
Requires-Dist: nodeenv (==1.5.0) ; extra == 'dev'
Requires-Dist: pkginfo (==1.5.0.1) ; extra == 'dev'
Requires-Dist: pre-commit (==2.8.2) ; extra == 'dev'
Requires-Dist: pycodestyle (==2.6.0) ; extra == 'dev'
Requires-Dist: pycparser (==2.20) ; extra == 'dev'
Requires-Dist: pyflakes (==2.2.0) ; extra == 'dev'
Requires-Dist: pygments (==2.6.1) ; extra == 'dev'
Requires-Dist: pyyaml (==5.3.1) ; extra == 'dev'
Requires-Dist: readme-renderer (==25.0) ; extra == 'dev'
Requires-Dist: requests-toolbelt (==0.9.1) ; extra == 'dev'
Requires-Dist: requests (==2.24.0) ; extra == 'dev'
Requires-Dist: rfc3986 (==1.4.0) ; extra == 'dev'
Requires-Dist: secretstorage (==3.1.2) ; extra == 'dev'
Requires-Dist: six (==1.15.0) ; extra == 'dev'
Requires-Dist: toml (==0.10.0) ; extra == 'dev'
Requires-Dist: tqdm (==4.45.0) ; extra == 'dev'
Requires-Dist: twine (==3.2.0) ; extra == 'dev'
Requires-Dist: urllib3 (==1.25.8) ; extra == 'dev'
Requires-Dist: virtualenv (==20.0.17) ; extra == 'dev'
Requires-Dist: webencodings (==0.5.1) ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: acme (==1.9.0) ; extra == 'docs'
Requires-Dist: alabaster (==0.7.12) ; extra == 'docs'
Requires-Dist: alembic-autogenerate-enums (==0.0.2) ; extra == 'docs'
Requires-Dist: alembic (==1.4.2) ; extra == 'docs'
Requires-Dist: amqp (==2.5.2) ; extra == 'docs'
Requires-Dist: aniso8601 (==8.0.0) ; extra == 'docs'
Requires-Dist: arrow (==0.17.0) ; extra == 'docs'
Requires-Dist: asyncpool (==1.0) ; extra == 'docs'
Requires-Dist: babel (==2.8.0) ; extra == 'docs'
Requires-Dist: bcrypt (==3.1.7) ; extra == 'docs'
Requires-Dist: beautifulsoup4 (==4.9.1) ; extra == 'docs'
Requires-Dist: billiard (==3.6.3.0) ; extra == 'docs'
Requires-Dist: blinker (==1.4) ; extra == 'docs'
Requires-Dist: boto3 (==1.16.14) ; extra == 'docs'
Requires-Dist: botocore (==1.19.14) ; extra == 'docs'
Requires-Dist: celery[redis] (==4.4.2) ; extra == 'docs'
Requires-Dist: certifi (==2020.11.8) ; extra == 'docs'
Requires-Dist: certsrv (==2.1.1) ; extra == 'docs'
Requires-Dist: cffi (==1.14.0) ; extra == 'docs'
Requires-Dist: chardet (==3.0.4) ; extra == 'docs'
Requires-Dist: click (==7.1.2) ; extra == 'docs'
Requires-Dist: cloudflare (==2.8.13) ; extra == 'docs'
Requires-Dist: cryptography (==3.2.1) ; extra == 'docs'
Requires-Dist: dnspython3 (==1.15.0) ; extra == 'docs'
Requires-Dist: dnspython (==1.15.0) ; extra == 'docs'
Requires-Dist: docutils (==0.15.2) ; extra == 'docs'
Requires-Dist: dyn (==1.8.1) ; extra == 'docs'
Requires-Dist: flask-bcrypt (==0.7.1) ; extra == 'docs'
Requires-Dist: flask-cors (==3.0.9) ; extra == 'docs'
Requires-Dist: flask-mail (==0.9.1) ; extra == 'docs'
Requires-Dist: flask-migrate (==2.5.3) ; extra == 'docs'
Requires-Dist: flask-principal (==0.4.0) ; extra == 'docs'
Requires-Dist: flask-replicated (==1.4) ; extra == 'docs'
Requires-Dist: flask-restful (==0.3.8) ; extra == 'docs'
Requires-Dist: flask-script (==2.0.6) ; extra == 'docs'
Requires-Dist: flask-sqlalchemy (==2.4.4) ; extra == 'docs'
Requires-Dist: flask (==1.1.2) ; extra == 'docs'
Requires-Dist: future (==0.18.2) ; extra == 'docs'
Requires-Dist: gunicorn (==20.0.4) ; extra == 'docs'
Requires-Dist: hvac (==0.10.5) ; extra == 'docs'
Requires-Dist: idna (==2.9) ; extra == 'docs'
Requires-Dist: imagesize (==1.2.0) ; extra == 'docs'
Requires-Dist: inflection (==0.5.1) ; extra == 'docs'
Requires-Dist: itsdangerous (==1.1.0) ; extra == 'docs'
Requires-Dist: javaobj-py3 (==0.4.0.1) ; extra == 'docs'
Requires-Dist: jinja2 (==2.11.2) ; extra == 'docs'
Requires-Dist: jmespath (==0.9.5) ; extra == 'docs'
Requires-Dist: josepy (==1.3.0) ; extra == 'docs'
Requires-Dist: jsonlines (==1.2.0) ; extra == 'docs'
Requires-Dist: kombu (==4.6.8) ; extra == 'docs'
Requires-Dist: lockfile (==0.12.2) ; extra == 'docs'
Requires-Dist: logmatic-python (==0.1.7) ; extra == 'docs'
Requires-Dist: mako (==1.1.2) ; extra == 'docs'
Requires-Dist: markupsafe (==1.1.1) ; extra == 'docs'
Requires-Dist: marshmallow-sqlalchemy (==0.23.1) ; extra == 'docs'
Requires-Dist: marshmallow (==2.20.4) ; extra == 'docs'
Requires-Dist: ndg-httpsclient (==0.5.1) ; extra == 'docs'
Requires-Dist: packaging (==20.3) ; extra == 'docs'
Requires-Dist: paramiko (==2.7.2) ; extra == 'docs'
Requires-Dist: pem (==20.1.0) ; extra == 'docs'
Requires-Dist: psycopg2 (==2.8.6) ; extra == 'docs'
Requires-Dist: pyasn1-modules (==0.2.8) ; extra == 'docs'
Requires-Dist: pyasn1 (==0.4.8) ; extra == 'docs'
Requires-Dist: pycparser (==2.20) ; extra == 'docs'
Requires-Dist: pycryptodomex (==3.9.7) ; extra == 'docs'
Requires-Dist: pygments (==2.6.1) ; extra == 'docs'
Requires-Dist: pyjks (==20.0.0) ; extra == 'docs'
Requires-Dist: pyjwt (==1.7.1) ; extra == 'docs'
Requires-Dist: pynacl (==1.3.0) ; extra == 'docs'
Requires-Dist: pyopenssl (==19.1.0) ; extra == 'docs'
Requires-Dist: pyparsing (==2.4.7) ; extra == 'docs'
Requires-Dist: pyrfc3339 (==1.1) ; extra == 'docs'
Requires-Dist: python-dateutil (==2.8.1) ; extra == 'docs'
Requires-Dist: python-editor (==1.0.4) ; extra == 'docs'
Requires-Dist: python-json-logger (==0.1.11) ; extra == 'docs'
Requires-Dist: pytz (==2019.3) ; extra == 'docs'
Requires-Dist: pyyaml (==5.3.1) ; extra == 'docs'
Requires-Dist: raven[flask] (==6.10.0) ; extra == 'docs'
Requires-Dist: redis (==3.5.3) ; extra == 'docs'
Requires-Dist: requests-toolbelt (==0.9.1) ; extra == 'docs'
Requires-Dist: requests[security] (==2.24.0) ; extra == 'docs'
Requires-Dist: retrying (==1.3.3) ; extra == 'docs'
Requires-Dist: s3transfer (==0.3.3) ; extra == 'docs'
Requires-Dist: six (==1.15.0) ; extra == 'docs'
Requires-Dist: snowballstemmer (==2.0.0) ; extra == 'docs'
Requires-Dist: soupsieve (==2.0.1) ; extra == 'docs'
Requires-Dist: sphinx-rtd-theme (==0.5.0) ; extra == 'docs'
Requires-Dist: sphinx (==3.3.0) ; extra == 'docs'
Requires-Dist: sphinxcontrib-applehelp (==1.0.2) ; extra == 'docs'
Requires-Dist: sphinxcontrib-devhelp (==1.0.2) ; extra == 'docs'
Requires-Dist: sphinxcontrib-htmlhelp (==1.0.3) ; extra == 'docs'
Requires-Dist: sphinxcontrib-httpdomain (==1.7.0) ; extra == 'docs'
Requires-Dist: sphinxcontrib-jsmath (==1.0.1) ; extra == 'docs'
Requires-Dist: sphinxcontrib-qthelp (==1.0.3) ; extra == 'docs'
Requires-Dist: sphinxcontrib-serializinghtml (==1.1.4) ; extra == 'docs'
Requires-Dist: sqlalchemy-utils (==0.36.8) ; extra == 'docs'
Requires-Dist: sqlalchemy (==1.3.16) ; extra == 'docs'
Requires-Dist: tabulate (==0.8.7) ; extra == 'docs'
Requires-Dist: twofish (==0.3.0) ; extra == 'docs'
Requires-Dist: urllib3 (==1.25.8) ; extra == 'docs'
Requires-Dist: vine (==1.3.0) ; extra == 'docs'
Requires-Dist: werkzeug (==1.0.1) ; extra == 'docs'
Requires-Dist: xmltodict (==0.12.0) ; extra == 'docs'
Provides-Extra: tests
Requires-Dist: appdirs (==1.4.3) ; extra == 'tests'
Requires-Dist: attrs (==19.3.0) ; extra == 'tests'
Requires-Dist: aws-sam-translator (==1.22.0) ; extra == 'tests'
Requires-Dist: aws-xray-sdk (==2.5.0) ; extra == 'tests'
Requires-Dist: bandit (==1.6.2) ; extra == 'tests'
Requires-Dist: black (==20.8b1) ; extra == 'tests'
Requires-Dist: boto3 (==1.16.14) ; extra == 'tests'
Requires-Dist: boto (==2.49.0) ; extra == 'tests'
Requires-Dist: botocore (==1.19.14) ; extra == 'tests'
Requires-Dist: certifi (==2020.11.8) ; extra == 'tests'
Requires-Dist: cffi (==1.14.0) ; extra == 'tests'
Requires-Dist: cfn-lint (==0.29.5) ; extra == 'tests'
Requires-Dist: chardet (==3.0.4) ; extra == 'tests'
Requires-Dist: click (==7.1.2) ; extra == 'tests'
Requires-Dist: coverage (==5.3) ; extra == 'tests'
Requires-Dist: cryptography (==3.2.1) ; extra == 'tests'
Requires-Dist: decorator (==4.4.2) ; extra == 'tests'
Requires-Dist: docker (==4.2.0) ; extra == 'tests'
Requires-Dist: ecdsa (==0.14.1) ; extra == 'tests'
Requires-Dist: factory-boy (==3.1.0) ; extra == 'tests'
Requires-Dist: faker (==4.14.2) ; extra == 'tests'
Requires-Dist: fakeredis (==1.4.4) ; extra == 'tests'
Requires-Dist: flask (==1.1.2) ; extra == 'tests'
Requires-Dist: freezegun (==1.0.0) ; extra == 'tests'
Requires-Dist: future (==0.18.2) ; extra == 'tests'
Requires-Dist: gitdb (==4.0.4) ; extra == 'tests'
Requires-Dist: gitpython (==3.1.1) ; extra == 'tests'
Requires-Dist: idna (==2.8) ; extra == 'tests'
Requires-Dist: importlib-metadata (==1.6.0) ; extra == 'tests'
Requires-Dist: iniconfig (==1.0.1) ; extra == 'tests'
Requires-Dist: itsdangerous (==1.1.0) ; extra == 'tests'
Requires-Dist: jinja2 (==2.11.2) ; extra == 'tests'
Requires-Dist: jmespath (==0.9.5) ; extra == 'tests'
Requires-Dist: jsondiff (==1.1.2) ; extra == 'tests'
Requires-Dist: jsonpatch (==1.25) ; extra == 'tests'
Requires-Dist: jsonpickle (==1.4) ; extra == 'tests'
Requires-Dist: jsonpointer (==2.0) ; extra == 'tests'
Requires-Dist: jsonschema (==3.2.0) ; extra == 'tests'
Requires-Dist: markupsafe (==1.1.1) ; extra == 'tests'
Requires-Dist: mock (==4.0.2) ; extra == 'tests'
Requires-Dist: more-itertools (==8.2.0) ; extra == 'tests'
Requires-Dist: moto (==1.3.16) ; extra == 'tests'
Requires-Dist: mypy-extensions (==0.4.3) ; extra == 'tests'
Requires-Dist: networkx (==2.4) ; extra == 'tests'
Requires-Dist: nose (==1.3.7) ; extra == 'tests'
Requires-Dist: packaging (==20.3) ; extra == 'tests'
Requires-Dist: pathspec (==0.8.0) ; extra == 'tests'
Requires-Dist: pbr (==5.4.5) ; extra == 'tests'
Requires-Dist: pluggy (==0.13.1) ; extra == 'tests'
Requires-Dist: py (==1.9.0) ; extra == 'tests'
Requires-Dist: pyasn1 (==0.4.8) ; extra == 'tests'
Requires-Dist: pycparser (==2.20) ; extra == 'tests'
Requires-Dist: pyflakes (==2.2.0) ; extra == 'tests'
Requires-Dist: pyparsing (==2.4.7) ; extra == 'tests'
Requires-Dist: pyrsistent (==0.16.0) ; extra == 'tests'
Requires-Dist: pytest-flask (==1.1.0) ; extra == 'tests'
Requires-Dist: pytest-mock (==3.3.1) ; extra == 'tests'
Requires-Dist: pytest (==6.1.2) ; extra == 'tests'
Requires-Dist: python-dateutil (==2.8.1) ; extra == 'tests'
Requires-Dist: python-jose[cryptography] (==3.1.0) ; extra == 'tests'
Requires-Dist: pytz (==2019.3) ; extra == 'tests'
Requires-Dist: pyyaml (==5.3.1) ; extra == 'tests'
Requires-Dist: redis (==3.5.3) ; extra == 'tests'
Requires-Dist: regex (==2020.4.4) ; extra == 'tests'
Requires-Dist: requests-mock (==1.8.0) ; extra == 'tests'
Requires-Dist: requests (==2.24.0) ; extra == 'tests'
Requires-Dist: responses (==0.10.12) ; extra == 'tests'
Requires-Dist: rsa (==4.0) ; extra == 'tests'
Requires-Dist: s3transfer (==0.3.3) ; extra == 'tests'
Requires-Dist: six (==1.15.0) ; extra == 'tests'
Requires-Dist: smmap (==3.0.2) ; extra == 'tests'
Requires-Dist: sortedcontainers (==2.1.0) ; extra == 'tests'
Requires-Dist: sshpubkeys (==3.1.0) ; extra == 'tests'
Requires-Dist: stevedore (==1.32.0) ; extra == 'tests'
Requires-Dist: text-unidecode (==1.3) ; extra == 'tests'
Requires-Dist: toml (==0.10.1) ; extra == 'tests'
Requires-Dist: typed-ast (==1.4.1) ; extra == 'tests'
Requires-Dist: typing-extensions (==3.7.4.3) ; extra == 'tests'
Requires-Dist: urllib3 (==1.25.8) ; extra == 'tests'
Requires-Dist: websocket-client (==0.57.0) ; extra == 'tests'
Requires-Dist: werkzeug (==1.0.1) ; extra == 'tests'
Requires-Dist: wrapt (==1.12.1) ; extra == 'tests'
Requires-Dist: xmltodict (==0.12.0) ; extra == 'tests'
Requires-Dist: zipp (==3.1.0) ; extra == 'tests'

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://travis-ci.org/Netflix/lemur.svg
    :target: https://travis-ci.org/Netflix/lemur

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



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.

It works on Python 3.7. We deploy on Ubuntu and develop 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>`_


