Metadata-Version: 2.5
Name: reauth
Version: 0.4.2
Summary: The authentication toolkit for Python
Project-URL: Documentation, https://frankie567.github.io/reauth/
Project-URL: Source, https://github.com/frankie567/reauth
Author-email: reauth <hello@fvoron.com>
License-File: LICENSE
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.14
Requires-Dist: anyio
Requires-Dist: cryptography>=50.0.0
Requires-Dist: httpx>=0.28.1
Requires-Dist: pyjwt>=2.12.1
Description-Content-Type: text/markdown

# Reauth

<p align="center">
    <em>The authentication toolkit for Python</em>
</p>

[![build](https://github.com/frankie567/reauth/workflows/Build/badge.svg)](https://github.com/frankie567/reauth/actions)
[![codecov](https://codecov.io/gh/frankie567/reauth/branch/master/graph/badge.svg)](https://codecov.io/gh/frankie567/reauth)
[![PyPI version](https://badge.fury.io/py/reauth.svg)](https://badge.fury.io/py/reauth)

---

**Documentation**: <a href="https://frankie567.github.io/reauth/" target="_blank">https://frankie567.github.io/reauth/</a>

**Source Code**: <a href="https://github.com/frankie567/reauth" target="_blank">https://github.com/frankie567/reauth</a>

---

> [!WARNING]
> This is an early-stage project with many moving parts and mostly missing documentation. The API is not yet stable and breaking changes are expected.

## Roadmap

Our vision is to build a comprehensive, flexible authentication toolkit for Python that handles everything from low-level factor primitives to high-level OIDC server capabilities.

### Short-term: Core Foundation

- [ ] Factor primitives — building blocks for authentication factors
    - [x] Email OTP
    - [x] HOTP
    - [x] TOTP
    - [ ] Passwords
    - [ ] Security keys
    - [ ] Passkeys
    - [x] Social Login
- [x] MFA authentication management — multi-factor authentication workflows

### Mid-term: Integration Layer

- [x] Sessions management — robust session handling
- [ ] ORM and web frameworks wrappers — seamless integration with popular frameworks

### Long-term: Full Platform

- [ ] OIDC server — complete OpenID Connect provider implementation
- [ ] Team management — multi-user and organizational features
- [ ] And more — expanding the ecosystem

## Development

### Setup environment

We use [uv](https://docs.astral.sh/uv/) to manage the development environment and production build, and [just](https://github.com/casey/just) to manage command shortcuts. Ensure they are installed on your system.

### Run unit tests

You can run all the tests with:

```bash
just test
```

### Format the code

Execute the following command to apply linting and check typing:

```bash
just lint
```

### Publish a new version

You can bump the version, create a commit and associated tag with one command:

```bash
just version patch
```

```bash
just version minor
```

```bash
just version major
```

Your default Git text editor will open so you can add information about the release.

When you push the tag on GitHub, the workflow will automatically publish it on PyPi and a GitHub release will be created as draft.

## Serve the documentation

The documentation and landing page use [Zensical](https://zensical.org/).
Start the local preview with:

```bash
just docs-serve
```

Open http://localhost:8000. The preview reloads when documentation changes.
Edit pages in `docs/` and configure the site in `zensical.toml`.

Build the static site into `site/` with:

```bash
just docs-build
```

## License

This project is licensed under the terms of the MIT license.
