<a id="installation"></a>

# Installation

[python-social-auth](https://github.com/python-social-auth) is a very modular library looking to provide the
basic tools to implement social authentication / authorization in
Python projects. For that reason, the project is split in smaller
components that focus on providing a simpler functionality. Some
components are:

* [social-auth-core](https://github.com/python-social-auth/social-core)
  Core library that the rest depends on, this contains the basic
  functionality to establish an authentication/authorization flow with
  the different supported providers.
* [social-auth-storage-sqlalchemy](https://github.com/python-social-auth/social-storage-sqlalchemy), [social-auth-storage-peewee](https://github.com/python-social-auth/social-storage-peewee), [social-auth-storage-mongoengine](https://github.com/python-social-auth/social-storage-mongoengine)
  Different storage solutions that can be reused across the supported
  frameworks or newer implementations.
* [social-auth-app-django](https://github.com/python-social-auth/social-app-django), [social-auth-app-django-mongoengine](https://github.com/python-social-auth/social-app-django-mongoengine)
  Django framework integration
* [social-auth-app-flask](https://github.com/python-social-auth/social-app-flask), [social-auth-app-flask-sqlalchemy](https://github.com/python-social-auth/social-app-flask-sqlalchemy), [social-auth-app-flask-mongoengine](https://github.com/python-social-auth/social-app-flask-mongoengine), [social-auth-app-flask-peewee](https://github.com/python-social-auth/social-app-flask-peewee)
  Flask framework integration
* [social-auth-app-pyramid](https://github.com/python-social-auth/social-app-pyramid)
  Pyramid framework integration
* [social-auth-app-cherrypy](https://github.com/python-social-auth/social-app-cherrypy)
  Cherrypy framework integration
* [social-auth-app-tornado](https://github.com/python-social-auth/social-app-tornado)
  Tornado framework integration
* [social-auth-app-webpy](https://github.com/python-social-auth/social-app-webpy)
  Webpy framework integration

<a id="dependencies"></a>

## Dependencies

Dependencies are properly defined in the requirements files.
There are some `extras` defined to install the corresponding
dependencies since they are required to build extensions that, unless
used, are undesired.

* [SAML](backends/saml.html.md) support requires the use of the `saml` extra.
* [Shopify](backends/shopify.html.md) support requires the use of the `shopify` extra.
* [Google](backends/google.html.md) One Tap support requires the use of the `google-onetap` extra.
* [Microsoft Entra ID and Azure AD B2C](backends/azuread.html.md) support requires the use of the `azuread` extra.

There’s also the `all` extra that will install all the extra options.

Several backends demand application registration on their
corresponding sites and other dependencies like [SQLAlchemy](http://www.sqlalchemy.org/) on Flask
and Webpy.

<a id="get-a-copy"></a>

## Get a copy

From [PyPI](https://pypi.org/project/social-auth-core/):

```default
$ pip install social-auth-<component>
```

Or, grab the relevant repository from [GitHub](https://github.com/python-social-auth/), then:

```default
$ cd social-auth-<component>
$ sudo python setup.py install
```

<a id="using-the-extras-options"></a>

## Using the `extras` options

To enable any of the `extras` options to bring the dependencies for
[SAML](https://www.onelogin.com/saml), or all:

```default
$ pip install "social-auth-core[saml]"
$ pip install "social-auth-core[all]"
```
