intflow-authctl 0.1.8__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.
Files changed (66) hide show
  1. intflow_authctl-0.1.8/.gitignore +53 -0
  2. intflow_authctl-0.1.8/PKG-INFO +56 -0
  3. intflow_authctl-0.1.8/README.package.md +28 -0
  4. intflow_authctl-0.1.8/pyproject.toml +102 -0
  5. intflow_authctl-0.1.8/src/intflow_auth/__init__.py +3 -0
  6. intflow_authctl-0.1.8/src/intflow_auth/admin_auth.py +512 -0
  7. intflow_authctl-0.1.8/src/intflow_auth/api/__init__.py +1 -0
  8. intflow_authctl-0.1.8/src/intflow_auth/api/admin_app_roles.py +197 -0
  9. intflow_authctl-0.1.8/src/intflow_auth/api/admin_audit.py +77 -0
  10. intflow_authctl-0.1.8/src/intflow_auth/api/admin_clients.py +346 -0
  11. intflow_authctl-0.1.8/src/intflow_auth/api/admin_operator_tokens.py +357 -0
  12. intflow_authctl-0.1.8/src/intflow_auth/api/admin_roles.py +232 -0
  13. intflow_authctl-0.1.8/src/intflow_auth/api/admin_users.py +243 -0
  14. intflow_authctl-0.1.8/src/intflow_auth/api/cli_login.py +341 -0
  15. intflow_authctl-0.1.8/src/intflow_auth/api/dependencies.py +77 -0
  16. intflow_authctl-0.1.8/src/intflow_auth/api/health.py +25 -0
  17. intflow_authctl-0.1.8/src/intflow_auth/api/login.py +495 -0
  18. intflow_authctl-0.1.8/src/intflow_auth/api/oauth.py +595 -0
  19. intflow_authctl-0.1.8/src/intflow_auth/api/oidc.py +137 -0
  20. intflow_authctl-0.1.8/src/intflow_auth/api/pagination.py +19 -0
  21. intflow_authctl-0.1.8/src/intflow_auth/api/rate_limits.py +57 -0
  22. intflow_authctl-0.1.8/src/intflow_auth/api/router.py +30 -0
  23. intflow_authctl-0.1.8/src/intflow_auth/api/session_management.py +268 -0
  24. intflow_authctl-0.1.8/src/intflow_auth/app.py +183 -0
  25. intflow_authctl-0.1.8/src/intflow_auth/app_roles.py +531 -0
  26. intflow_authctl-0.1.8/src/intflow_auth/audit.py +370 -0
  27. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/__init__.py +1 -0
  28. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/api_client.py +114 -0
  29. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/commands.py +578 -0
  30. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/config.py +151 -0
  31. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/constants.py +7 -0
  32. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/errors.py +5 -0
  33. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/output.py +152 -0
  34. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/parser.py +633 -0
  35. intflow_authctl-0.1.8/src/intflow_auth/authctl_cli/validation.py +70 -0
  36. intflow_authctl-0.1.8/src/intflow_auth/authctl_credentials.py +57 -0
  37. intflow_authctl-0.1.8/src/intflow_auth/authorization_codes.py +531 -0
  38. intflow_authctl-0.1.8/src/intflow_auth/bootstrap.py +297 -0
  39. intflow_authctl-0.1.8/src/intflow_auth/cli.py +213 -0
  40. intflow_authctl-0.1.8/src/intflow_auth/cli_login_service.py +483 -0
  41. intflow_authctl-0.1.8/src/intflow_auth/cli_login_transactions.py +621 -0
  42. intflow_authctl-0.1.8/src/intflow_auth/config.py +467 -0
  43. intflow_authctl-0.1.8/src/intflow_auth/context.py +43 -0
  44. intflow_authctl-0.1.8/src/intflow_auth/csrf.py +59 -0
  45. intflow_authctl-0.1.8/src/intflow_auth/database.py +101 -0
  46. intflow_authctl-0.1.8/src/intflow_auth/errors.py +61 -0
  47. intflow_authctl-0.1.8/src/intflow_auth/google_oauth.py +600 -0
  48. intflow_authctl-0.1.8/src/intflow_auth/logging.py +246 -0
  49. intflow_authctl-0.1.8/src/intflow_auth/login_transactions.py +481 -0
  50. intflow_authctl-0.1.8/src/intflow_auth/middleware.py +24 -0
  51. intflow_authctl-0.1.8/src/intflow_auth/oauth_clients.py +640 -0
  52. intflow_authctl-0.1.8/src/intflow_auth/oauth_service.py +681 -0
  53. intflow_authctl-0.1.8/src/intflow_auth/operator_admin_tokens.py +558 -0
  54. intflow_authctl-0.1.8/src/intflow_auth/pagination.py +102 -0
  55. intflow_authctl-0.1.8/src/intflow_auth/py.typed +1 -0
  56. intflow_authctl-0.1.8/src/intflow_auth/rate_limits.py +114 -0
  57. intflow_authctl-0.1.8/src/intflow_auth/readiness.py +240 -0
  58. intflow_authctl-0.1.8/src/intflow_auth/refresh_tokens.py +559 -0
  59. intflow_authctl-0.1.8/src/intflow_auth/roles.py +290 -0
  60. intflow_authctl-0.1.8/src/intflow_auth/secret_resolution.py +339 -0
  61. intflow_authctl-0.1.8/src/intflow_auth/sessions.py +525 -0
  62. intflow_authctl-0.1.8/src/intflow_auth/signing_keys.py +298 -0
  63. intflow_authctl-0.1.8/src/intflow_auth/store_resolver.py +286 -0
  64. intflow_authctl-0.1.8/src/intflow_auth/tokens.py +78 -0
  65. intflow_authctl-0.1.8/src/intflow_auth/usage_metadata.py +15 -0
  66. intflow_authctl-0.1.8/src/intflow_auth/users.py +592 -0
@@ -0,0 +1,53 @@
1
+ # IDE and editor state
2
+ .idea/
3
+ .vscode/
4
+ *.swp
5
+ *.swo
6
+
7
+ # Python cache and build outputs
8
+ __pycache__/
9
+ *.py[cod]
10
+ *$py.class
11
+ .pytest_cache/
12
+ .ruff_cache/
13
+ .mypy_cache/
14
+ .coverage
15
+ htmlcov/
16
+ build/
17
+ dist/
18
+ *.egg-info/
19
+
20
+ # Node/npm cache and build outputs
21
+ node_modules/
22
+ npm-debug.log*
23
+ yarn-debug.log*
24
+ yarn-error.log*
25
+
26
+ # Virtual environments
27
+ .venv/
28
+ venv/
29
+ env/
30
+
31
+ # Local configuration and secrets
32
+ .env
33
+ .env.*
34
+ !.env.example
35
+ gha-creds-*.json
36
+ client_secret*.json
37
+ GoogleIDPMetadata*.xml
38
+ *.pem
39
+ *.key
40
+ *.crt
41
+ *.p12
42
+ *.pfx
43
+ secrets/
44
+
45
+ # Logs and local runtime data
46
+ *.log
47
+ logs/
48
+ tmp/
49
+ *.sqlite
50
+ *.db
51
+
52
+ # Docker local overrides
53
+ docker-compose.override.yml
@@ -0,0 +1,56 @@
1
+ Metadata-Version: 2.4
2
+ Name: intflow-authctl
3
+ Version: 0.1.8
4
+ Summary: Intflow Auth operator CLI.
5
+ Author: Intflow
6
+ License: Proprietary
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: alembic<2,>=1.14
9
+ Requires-Dist: asyncpg<1,>=0.30
10
+ Requires-Dist: authlib<2,>=1.3
11
+ Requires-Dist: fastapi<1,>=0.115
12
+ Requires-Dist: httpx<1,>=0.28
13
+ Requires-Dist: jwcrypto<2,>=1.5
14
+ Requires-Dist: keyring<26,>=25
15
+ Requires-Dist: pydantic-settings<3,>=2.7
16
+ Requires-Dist: sqlalchemy[asyncio]<3,>=2.0
17
+ Requires-Dist: uvicorn[standard]<1,>=0.34
18
+ Provides-Extra: dev
19
+ Requires-Dist: httpx2<3,>=2.5; extra == 'dev'
20
+ Requires-Dist: mypy<2,>=1.13; extra == 'dev'
21
+ Requires-Dist: pip-audit<3,>=2.8; extra == 'dev'
22
+ Requires-Dist: pytest-asyncio<1,>=0.25; extra == 'dev'
23
+ Requires-Dist: pytest-cov<7,>=6; extra == 'dev'
24
+ Requires-Dist: pytest<9,>=8; extra == 'dev'
25
+ Requires-Dist: pyyaml<7,>=6; extra == 'dev'
26
+ Requires-Dist: ruff<1,>=0.9; extra == 'dev'
27
+ Description-Content-Type: text/markdown
28
+
29
+ # intflow-authctl
30
+
31
+ `intflow-authctl` is the Python operator CLI package for Intflow Auth.
32
+
33
+ ## Install
34
+
35
+ ```powershell
36
+ py -3.12 -m pip install --user --upgrade intflow-authctl
37
+ ```
38
+
39
+ ## CLI
40
+
41
+ ```powershell
42
+ intflow-authctl login
43
+ intflow-authctl whoami
44
+ intflow-authctl users list
45
+ intflow-authctl clients list
46
+ intflow-authctl logout --revoke
47
+ ```
48
+
49
+ The CLI is intended for authorized Intflow operators. It manages local operator
50
+ credentials through the supported credential backends and communicates with an
51
+ Intflow Auth deployment over the Admin API.
52
+
53
+ ## Requirements
54
+
55
+ - Python 3.12 or later.
56
+ - Access to an authorized Intflow Auth deployment.
@@ -0,0 +1,28 @@
1
+ # intflow-authctl
2
+
3
+ `intflow-authctl` is the Python operator CLI package for Intflow Auth.
4
+
5
+ ## Install
6
+
7
+ ```powershell
8
+ py -3.12 -m pip install --user --upgrade intflow-authctl
9
+ ```
10
+
11
+ ## CLI
12
+
13
+ ```powershell
14
+ intflow-authctl login
15
+ intflow-authctl whoami
16
+ intflow-authctl users list
17
+ intflow-authctl clients list
18
+ intflow-authctl logout --revoke
19
+ ```
20
+
21
+ The CLI is intended for authorized Intflow operators. It manages local operator
22
+ credentials through the supported credential backends and communicates with an
23
+ Intflow Auth deployment over the Admin API.
24
+
25
+ ## Requirements
26
+
27
+ - Python 3.12 or later.
28
+ - Access to an authorized Intflow Auth deployment.
@@ -0,0 +1,102 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.27"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "intflow-authctl"
7
+ version = "0.1.8"
8
+ description = "Intflow Auth operator CLI."
9
+ readme = "README.package.md"
10
+ requires-python = ">=3.12"
11
+ license = { text = "Proprietary" }
12
+ authors = [
13
+ { name = "Intflow" }
14
+ ]
15
+ dependencies = [
16
+ "alembic>=1.14,<2",
17
+ "asyncpg>=0.30,<1",
18
+ "authlib>=1.3,<2",
19
+ "fastapi>=0.115,<1",
20
+ "httpx>=0.28,<1",
21
+ "jwcrypto>=1.5,<2",
22
+ "keyring>=25,<26",
23
+ "pydantic-settings>=2.7,<3",
24
+ "sqlalchemy[asyncio]>=2.0,<3",
25
+ "uvicorn[standard]>=0.34,<1"
26
+ ]
27
+
28
+ [project.scripts]
29
+ intflow-authctl = "intflow_auth.cli:authctl_main"
30
+ intflow-auth-bootstrap-role = "intflow_auth.cli:bootstrap_role_main"
31
+ intflow-auth-create-oauth-client = "intflow_auth.cli:create_oauth_client_main"
32
+
33
+ [project.optional-dependencies]
34
+ dev = [
35
+ "httpx2>=2.5,<3",
36
+ "mypy>=1.13,<2",
37
+ "pip-audit>=2.8,<3",
38
+ "pytest>=8,<9",
39
+ "pytest-asyncio>=0.25,<1",
40
+ "pytest-cov>=6,<7",
41
+ "pyyaml>=6,<7",
42
+ "ruff>=0.9,<1"
43
+ ]
44
+
45
+ [tool.hatch.build.targets.wheel]
46
+ packages = ["src/intflow_auth"]
47
+
48
+ [tool.hatch.build.targets.sdist]
49
+ include = [
50
+ "/README.package.md",
51
+ "/pyproject.toml",
52
+ "/src/intflow_auth"
53
+ ]
54
+
55
+ [tool.pytest.ini_options]
56
+ testpaths = ["tests"]
57
+ asyncio_mode = "auto"
58
+ markers = [
59
+ "integration: tests that require an external disposable PostgreSQL database"
60
+ ]
61
+ filterwarnings = [
62
+ "error"
63
+ ]
64
+
65
+ [tool.coverage.run]
66
+ source = ["intflow_auth"]
67
+
68
+ [tool.coverage.report]
69
+ fail_under = 83
70
+ show_missing = true
71
+ skip_covered = true
72
+
73
+ [tool.mypy]
74
+ python_version = "3.12"
75
+ show_error_codes = true
76
+ warn_unused_configs = true
77
+ files = [
78
+ "src/intflow_auth/oauth_service.py",
79
+ "src/intflow_auth/cli_login_service.py",
80
+ "src/intflow_auth/rate_limits.py",
81
+ "src/intflow_auth/pagination.py",
82
+ "src/intflow_auth/csrf.py",
83
+ "src/intflow_auth/logging.py",
84
+ "src/intflow_auth/middleware.py",
85
+ "src/intflow_auth/usage_metadata.py",
86
+ "scripts/lib/smoke.py"
87
+ ]
88
+
89
+ [tool.ruff]
90
+ line-length = 100
91
+ target-version = "py312"
92
+ src = ["src", "tests"]
93
+
94
+ [tool.ruff.lint]
95
+ select = [
96
+ "E",
97
+ "F",
98
+ "I",
99
+ "UP",
100
+ "B",
101
+ "SIM"
102
+ ]
@@ -0,0 +1,3 @@
1
+ """Intflow Auth application package."""
2
+
3
+ __version__ = "0.1.8"