Metadata-Version: 2.1
Name: firemelon
Version: 1.1.1
Summary: firemelon — Simple Password Generator
Home-page: https://github.com/evtn/firemelon
Author: evtn
Author-email: g@evtn.ru
License: MIT License
Download-URL: https://github.com/evtn/firemelon/archive/v1.1.1.tar.gz
Keywords: password
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.6.*
Description-Content-Type: text/markdown
License-File: LICENSE

# firemelon - a *simple password* generator

## Why?

Passwords don't have to be something like `GY/hyTJmw#B$E3,x`.    
Simple combinations like `sure,happy,95194,sad` or `2874;people;only;penguin` are also pretty strong (see below).    
But those are also easy to remember (and you can even turn it into some drawing to remember while still keeping it a secret)    

This module is doing exactly that - creating passwords using random words and, sometimes, numbers.    

### Is it really strong?

- It is pretty diverse:
    - With default settings (`complexity=4, sep=random`) you get `5513210562816000` different passwords
    - With one specific separator (or no separator at all) you get `945337888000` different passwords - significantly less, still many.
    - With one specific separator (or no separator at all) and `complexity=3` you get `231852000` different passwords - still many.
- You definitely should use 2FA for important accounts, no matter how strong is your password.
- Decent services should have a cooldown for too many wrong password attempts
- Most passwords are stolen (e.g. with phishing), not brute-forced, those have nothing to do with password strength
- Use different passwords for different accounts (or at least don't use the same password everywhere), of course

## Installation

As simple as `python -m pip install firemelon`    

## Basic usage

```python
from firemelon import passgen

# complexity=4, sep=random, use_number=True
print(passgen()) # "hot_legal:498;goose"
```

## Into the deep

If you want to change generation options, pass `complexity` and `sep` params:

```python
from firemelon import passgen

print(passgen(complexity=2, sep=":", use_number=False)) # "idea:night"
```

Complexity just sets how much parts the result will have, and sep is a separator between parts.    
If you won't pass `sep`, every separator would be chosen at random.    
If you will pass a list of separators as `sep`, every separator would be chosen at random from your list.    
`use_number` is pretty straightforward.

### Generator

If you want to go even further and construct a password yourself, you'll need a `Generator`:    

```python
from firemelon import Generator as gen

password = "".join([gen.adjective(), " ", gen.noun(), gen.sep(), gen.number(3)]) # "pure fish,268"

print(password)
```

### .variance

Generator has a `variance` method with exactly the same signature as `generate`, but which returns a number of variations for specific arguments.

```python
from firemelon import Generator

gen = Generator()
print(gen.variance()) # 5513210562816000

```


## Contributing

Why? It's finished. 

