Metadata-Version: 2.1
Name: Safe
Version: 0.4
Summary: Is your password safe?
Home-page: https://github.com/lepture/safe
Author: Hsiaoming Yang
Author-email: me@lepture.com
License: BSD
Platform: any
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: Implementation
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Libraries :: Python Modules
License-File: LICENSE

Safe
====

Is your password safe? **Safe** will check the password strength for you.

.. image:: https://travis-ci.org/lepture/safe.png?branch=master
   :target: https://travis-ci.org/lepture/safe

How it works
------------

**Safe** will check if the password has a simple pattern, for instance:

1. password is in the order on your QWERT keyboards.
2. password is simple alphabet step by step, such as: abcd, 1357

**Safe** will check if the password is a common used password.
Many thanks to Mark Burnett for the great work on `10000 Top Passwords <https://xato.net/passwords/more-top-worst-passwords/>`_.

**Safe** will check if the password has mixed number, alphabet, marks.

Installation
------------

Install Safe with pip::

    $ pip install Safe

If pip is not available, try easy_install::

    $ easy_install Safe

Usage
-----

It's very simple to check the strength of a password::

    >>> import safe
    >>> safe.check(1)
    terrible
    >>> safe.check('password')
    simpile
    >>> safe.check('is.safe')
    medium
    >>> safe.check('x*V-92Ba')
    strong
    >>> strength = safe.check('x*V-92Ba')
    >>> bool(strength)
    True
    >>> repr(strength)
    'strong'
    >>> str(strength)
    'password is perfect'
    >>> strength.valid
    True
    >>> strength.strength
    'strong'
    >>> strength.message
    'good password'


Environ Variables
-----------------

1. **PYTHON_SAFE_WORDS_CACHE**: cache words in this file, default is a tempfile
2. **PYTHON_SAFE_WORDS_FILE**: words vocabulary file, default is the 10k top passwords

Other Implementations
---------------------

1. **JavaScript**: `lepture/safe.js <https://github.com/lepture/safe.js>`_
