oauth2fast-fastapi 0.2.4__tar.gz → 0.2.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {oauth2fast_fastapi-0.2.4/src/oauth2fast_fastapi.egg-info → oauth2fast_fastapi-0.2.6}/PKG-INFO +5 -5
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/pyproject.toml +10 -7
- oauth2fast_fastapi-0.2.6/src/oauth2fast_fastapi/__version__.py +1 -0
- oauth2fast_fastapi-0.2.6/src/oauth2fast_fastapi/models/bases.py +23 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/schemas/user_schema.py +1 -1
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6/src/oauth2fast_fastapi.egg-info}/PKG-INFO +5 -5
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi.egg-info/SOURCES.txt +0 -2
- oauth2fast_fastapi-0.2.6/src/oauth2fast_fastapi.egg-info/requires.txt +8 -0
- oauth2fast_fastapi-0.2.4/src/oauth2fast_fastapi/__version__.py +0 -1
- oauth2fast_fastapi-0.2.4/src/oauth2fast_fastapi/models/bases.py +0 -18
- oauth2fast_fastapi-0.2.4/src/oauth2fast_fastapi/models/mixins.py +0 -53
- oauth2fast_fastapi-0.2.4/src/oauth2fast_fastapi/schemas/mixins.py +0 -8
- oauth2fast_fastapi-0.2.4/src/oauth2fast_fastapi.egg-info/requires.txt +0 -8
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/LICENSE +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/MANIFEST.in +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/README.md +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/docs/env.example +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/docs/usage.md +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/examples/basic_usage.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/examples/complete_flow.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/examples/custom_user.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/setup.cfg +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/__init__.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/database.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/dependencies.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/mail/__init__.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/mail/service.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/mail/templates/verification.html +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/mail/templates/welcome.html +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/models/__init__.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/models/user_model.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/routers/__init__.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/routers/base_router.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/routers/users_router.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/schemas/__init__.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/schemas/token_schema.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/schemas/verification_schema.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/settings.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/utils/__init__.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/utils/password_utils.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/utils/token_utils.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/utils/verification_utils.py +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi.egg-info/dependency_links.txt +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi.egg-info/top_level.txt +0 -0
- {oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/tests/test_integration.py +0 -0
{oauth2fast_fastapi-0.2.4/src/oauth2fast_fastapi.egg-info → oauth2fast_fastapi-0.2.6}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oauth2fast-fastapi
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.6
|
|
4
4
|
Summary: Fast and secure OAuth2 authentication module for FastAPI with email verification
|
|
5
5
|
Author-email: Angel Daniel Sanchez Castillo <angeldaniel.sanchezcastillo@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -43,14 +43,14 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
43
43
|
Requires-Python: >=3.10
|
|
44
44
|
Description-Content-Type: text/markdown
|
|
45
45
|
License-File: LICENSE
|
|
46
|
-
Requires-Dist: pgsqlasync2fast-fastapi>=0.1.
|
|
47
|
-
Requires-Dist: mailing2fast-fastapi>=0.2.
|
|
46
|
+
Requires-Dist: pgsqlasync2fast-fastapi>=0.1.2
|
|
47
|
+
Requires-Dist: mailing2fast-fastapi>=0.2.1
|
|
48
|
+
Requires-Dist: log2fast-fastapi>=0.1.2
|
|
49
|
+
Requires-Dist: tools2fast-fastapi>=0.1.0
|
|
48
50
|
Requires-Dist: python-jose[cryptography]>=3.3.0
|
|
49
51
|
Requires-Dist: passlib[argon2]>=1.7.4
|
|
50
52
|
Requires-Dist: argon2-cffi>=25.0.0
|
|
51
53
|
Requires-Dist: python-multipart>=0.0.6
|
|
52
|
-
Requires-Dist: log2fast-fastapi>=0.1.0
|
|
53
|
-
Requires-Dist: sqlmodel>=0.0.16
|
|
54
54
|
Dynamic: license-file
|
|
55
55
|
|
|
56
56
|
# oauth2fast-fastapi
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "oauth2fast-fastapi"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.6"
|
|
8
8
|
description = "Fast and secure OAuth2 authentication module for FastAPI with email verification"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -28,18 +28,20 @@ classifiers = [
|
|
|
28
28
|
|
|
29
29
|
dependencies = [
|
|
30
30
|
# External modules (include their own dependencies)
|
|
31
|
-
|
|
32
|
-
"
|
|
31
|
+
# Databases
|
|
32
|
+
"pgsqlasync2fast-fastapi>=0.1.2",
|
|
33
|
+
# Mailing
|
|
34
|
+
"mailing2fast-fastapi>=0.2.1",
|
|
35
|
+
# Logging
|
|
36
|
+
"log2fast-fastapi>=0.1.2",
|
|
37
|
+
# Tools
|
|
38
|
+
"tools2fast-fastapi>=0.1.0",
|
|
33
39
|
# JWT and authentication
|
|
34
40
|
"python-jose[cryptography]>=3.3.0",
|
|
35
41
|
"passlib[argon2]>=1.7.4",
|
|
36
42
|
"argon2-cffi>=25.0.0", # Required for Argon2 password hashing
|
|
37
43
|
# Form data handling
|
|
38
44
|
"python-multipart>=0.0.6",
|
|
39
|
-
# Logging
|
|
40
|
-
"log2fast-fastapi>=0.1.0",
|
|
41
|
-
# ORM
|
|
42
|
-
"sqlmodel>=0.0.16",
|
|
43
45
|
]
|
|
44
46
|
|
|
45
47
|
[dependency-groups]
|
|
@@ -77,6 +79,7 @@ python_files = ["test_*.py"]
|
|
|
77
79
|
python_classes = ["Test*"]
|
|
78
80
|
python_functions = ["test_*"]
|
|
79
81
|
asyncio_mode = "auto"
|
|
82
|
+
asyncio_default_fixture_loop_scope = "function"
|
|
80
83
|
|
|
81
84
|
[tool.mypy]
|
|
82
85
|
python_version = "3.10"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.6"
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from sqlmodel import MetaData, SQLModel
|
|
2
|
+
|
|
3
|
+
from tools2fast_fastapi import IdMixin, TimestampMixin
|
|
4
|
+
|
|
5
|
+
metadata = MetaData()
|
|
6
|
+
|
|
7
|
+
class BasicModel(SQLModel):
|
|
8
|
+
__abstract__ = True
|
|
9
|
+
metadata = metadata
|
|
10
|
+
|
|
11
|
+
class BasicAuthModel(TimestampMixin, BasicModel):
|
|
12
|
+
"""Base model without predefined primary key, but with timestamps."""
|
|
13
|
+
|
|
14
|
+
__abstract__ = True
|
|
15
|
+
|
|
16
|
+
class IdAuthModel(IdMixin, BasicModel):
|
|
17
|
+
"""Base model with BigInteger primary key."""
|
|
18
|
+
__abstract__ = True
|
|
19
|
+
|
|
20
|
+
class AuthModel(TimestampMixin, IdAuthModel):
|
|
21
|
+
"""Default base model with BigInteger primary key and timestamps."""
|
|
22
|
+
|
|
23
|
+
__abstract__ = True
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6/src/oauth2fast_fastapi.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oauth2fast-fastapi
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.6
|
|
4
4
|
Summary: Fast and secure OAuth2 authentication module for FastAPI with email verification
|
|
5
5
|
Author-email: Angel Daniel Sanchez Castillo <angeldaniel.sanchezcastillo@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -43,14 +43,14 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
43
43
|
Requires-Python: >=3.10
|
|
44
44
|
Description-Content-Type: text/markdown
|
|
45
45
|
License-File: LICENSE
|
|
46
|
-
Requires-Dist: pgsqlasync2fast-fastapi>=0.1.
|
|
47
|
-
Requires-Dist: mailing2fast-fastapi>=0.2.
|
|
46
|
+
Requires-Dist: pgsqlasync2fast-fastapi>=0.1.2
|
|
47
|
+
Requires-Dist: mailing2fast-fastapi>=0.2.1
|
|
48
|
+
Requires-Dist: log2fast-fastapi>=0.1.2
|
|
49
|
+
Requires-Dist: tools2fast-fastapi>=0.1.0
|
|
48
50
|
Requires-Dist: python-jose[cryptography]>=3.3.0
|
|
49
51
|
Requires-Dist: passlib[argon2]>=1.7.4
|
|
50
52
|
Requires-Dist: argon2-cffi>=25.0.0
|
|
51
53
|
Requires-Dist: python-multipart>=0.0.6
|
|
52
|
-
Requires-Dist: log2fast-fastapi>=0.1.0
|
|
53
|
-
Requires-Dist: sqlmodel>=0.0.16
|
|
54
54
|
Dynamic: license-file
|
|
55
55
|
|
|
56
56
|
# oauth2fast-fastapi
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi.egg-info/SOURCES.txt
RENAMED
|
@@ -23,13 +23,11 @@ src/oauth2fast_fastapi/mail/templates/verification.html
|
|
|
23
23
|
src/oauth2fast_fastapi/mail/templates/welcome.html
|
|
24
24
|
src/oauth2fast_fastapi/models/__init__.py
|
|
25
25
|
src/oauth2fast_fastapi/models/bases.py
|
|
26
|
-
src/oauth2fast_fastapi/models/mixins.py
|
|
27
26
|
src/oauth2fast_fastapi/models/user_model.py
|
|
28
27
|
src/oauth2fast_fastapi/routers/__init__.py
|
|
29
28
|
src/oauth2fast_fastapi/routers/base_router.py
|
|
30
29
|
src/oauth2fast_fastapi/routers/users_router.py
|
|
31
30
|
src/oauth2fast_fastapi/schemas/__init__.py
|
|
32
|
-
src/oauth2fast_fastapi/schemas/mixins.py
|
|
33
31
|
src/oauth2fast_fastapi/schemas/token_schema.py
|
|
34
32
|
src/oauth2fast_fastapi/schemas/user_schema.py
|
|
35
33
|
src/oauth2fast_fastapi/schemas/verification_schema.py
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.2.4"
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
from sqlmodel import MetaData, SQLModel
|
|
2
|
-
|
|
3
|
-
from .mixins import IdMixin, TimestampMixin
|
|
4
|
-
|
|
5
|
-
metadata = MetaData()
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class BasicAuthModel(TimestampMixin, SQLModel):
|
|
9
|
-
"""Base model without predefined primary key, but with timestamps."""
|
|
10
|
-
|
|
11
|
-
__abstract__ = True
|
|
12
|
-
metadata = metadata
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class AuthModel(IdMixin, BasicAuthModel):
|
|
16
|
-
"""Default base model with BigInteger primary key and timestamps."""
|
|
17
|
-
|
|
18
|
-
__abstract__ = True
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
from datetime import UTC, datetime
|
|
2
|
-
|
|
3
|
-
from sqlalchemy import DateTime, func
|
|
4
|
-
from sqlmodel import BigInteger, Field
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
class IdMixin:
|
|
8
|
-
"""Mixin para proveer clave primaria autoincremental tipo BigInteger."""
|
|
9
|
-
|
|
10
|
-
id: int | None = Field(default=None, primary_key=True, index=True, sa_type=BigInteger)
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class TimestampMixin:
|
|
14
|
-
"""Mixin reutilizable para marcas de tiempo en UTC."""
|
|
15
|
-
|
|
16
|
-
created_at: datetime = Field(
|
|
17
|
-
default_factory=lambda: datetime.now(UTC),
|
|
18
|
-
nullable=False,
|
|
19
|
-
sa_type=DateTime(timezone=True),
|
|
20
|
-
)
|
|
21
|
-
updated_at: datetime = Field(
|
|
22
|
-
default_factory=lambda: datetime.now(UTC),
|
|
23
|
-
nullable=False,
|
|
24
|
-
sa_type=DateTime(timezone=True),
|
|
25
|
-
sa_column_kwargs={"onupdate": func.now()},
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class AuditMixin:
|
|
30
|
-
"""Mixin para rastrear el usuario que crea y actualiza un registro."""
|
|
31
|
-
|
|
32
|
-
created_by: int | None = Field(
|
|
33
|
-
default=None,
|
|
34
|
-
description="ID of the user who created this record.",
|
|
35
|
-
sa_type=BigInteger,
|
|
36
|
-
)
|
|
37
|
-
updated_by: int | None = Field(
|
|
38
|
-
default=None,
|
|
39
|
-
description="ID of the user who last updated this record.",
|
|
40
|
-
sa_type=BigInteger,
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
# class Example(TimestampMixin, SQLModel, table=True):
|
|
45
|
-
# """Ejemplo de modelo con timestamps automáticos."""
|
|
46
|
-
# id: int | None = Field(default=None, primary_key=True)
|
|
47
|
-
# name: str
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
# Opcional: asegurar que updated_at se actualice también del lado de Python
|
|
51
|
-
# @event.listens_for(Example, "before_update", propagate=True)
|
|
52
|
-
# def receive_before_update(mapper, connection, target):
|
|
53
|
-
# target.updated_at = datetime.now(timezone.utc)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/dependencies.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/mail/__init__.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/mail/service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/models/__init__.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/models/user_model.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/routers/__init__.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/routers/base_router.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/routers/users_router.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/schemas/__init__.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/schemas/token_schema.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/utils/__init__.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/utils/password_utils.py
RENAMED
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi/utils/token_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{oauth2fast_fastapi-0.2.4 → oauth2fast_fastapi-0.2.6}/src/oauth2fast_fastapi.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|