simpleaudit-studio 0.2.3__tar.gz → 0.2.4__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.

Potentially problematic release.


This version of simpleaudit-studio might be problematic. Click here for more details.

Files changed (155) hide show
  1. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/PKG-INFO +7 -1
  2. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/README.md +6 -0
  3. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/middleware.py +11 -5
  4. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/pyproject.toml +2 -1
  5. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/.dockerignore +0 -0
  6. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/.env.example +0 -0
  7. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/.env.local.example +0 -0
  8. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/.github/workflows/ci.yml +0 -0
  9. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/.github/workflows/publish.yml +0 -0
  10. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/.gitignore +0 -0
  11. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/Dockerfile +0 -0
  12. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/LICENSE +0 -0
  13. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/Makefile +0 -0
  14. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/__init__.py +0 -0
  15. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/admin.py +0 -0
  16. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/apps.py +0 -0
  17. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/auth_urls.py +0 -0
  18. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/migrations/0001_initial.py +0 -0
  19. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/migrations/0002_user_workos_user_id.py +0 -0
  20. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/migrations/__init__.py +0 -0
  21. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/models.py +0 -0
  22. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/project_urls.py +0 -0
  23. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/serializers.py +0 -0
  24. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/services.py +0 -0
  25. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/views.py +0 -0
  26. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/accounts/workos_auth.py +0 -0
  27. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/__init__.py +0 -0
  28. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/admin.py +0 -0
  29. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/apps.py +0 -0
  30. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/comparison.py +0 -0
  31. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/events.py +0 -0
  32. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/migrations/0001_initial.py +0 -0
  33. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/migrations/0002_add_audit_run_archived.py +0 -0
  34. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/migrations/0003_auditrun_updated_at.py +0 -0
  35. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/migrations/__init__.py +0 -0
  36. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/models.py +0 -0
  37. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/serializers.py +0 -0
  38. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/services.py +0 -0
  39. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/urls.py +0 -0
  40. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/audits/views.py +0 -0
  41. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/config/__init__.py +0 -0
  42. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/config/asgi.py +0 -0
  43. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/config/settings.py +0 -0
  44. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/config/urls.py +0 -0
  45. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/config/wsgi.py +0 -0
  46. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/deploy/compose/Dockerfile +0 -0
  47. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/deploy/e2e_smoke.py +0 -0
  48. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/deploy/mock_openai_server.py +0 -0
  49. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/deploy/postgres-init.sql +0 -0
  50. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/deploy/seed_bulk.py +0 -0
  51. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/docker-compose.yml +0 -0
  52. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/docs/architecture.md +0 -0
  53. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/docs/deployment.md +0 -0
  54. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/docs/domain-model.md +0 -0
  55. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/e2e/test_ui.py +0 -0
  56. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/__init__.py +0 -0
  57. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/admin.py +0 -0
  58. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/apps.py +0 -0
  59. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/context_processors.py +0 -0
  60. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/engine.py +0 -0
  61. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/exceptions.py +0 -0
  62. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/fixtures/demo_audit_results.json +0 -0
  63. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/hashing.py +0 -0
  64. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/health.py +0 -0
  65. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/health_api.py +0 -0
  66. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/logging.py +0 -0
  67. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/management/__init__.py +0 -0
  68. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/management/commands/__init__.py +0 -0
  69. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/management/commands/bootstrap_platform.py +0 -0
  70. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/management/commands/purge_test_data.py +0 -0
  71. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/management/commands/run_worker.py +0 -0
  72. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/management/commands/seed_demo_audits.py +0 -0
  73. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/management/commands/seed_platform.py +0 -0
  74. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/minimal_config.py +0 -0
  75. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/permissions.py +0 -0
  76. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/readiness.py +0 -0
  77. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/seed.py +0 -0
  78. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/simpleaudit_package.py +0 -0
  79. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/startup_checks.py +0 -0
  80. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/__init__.py +0 -0
  81. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/factories.py +0 -0
  82. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_api_e2e.py +0 -0
  83. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_archive.py +0 -0
  84. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_clone.py +0 -0
  85. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_events.py +0 -0
  86. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_poll_results.py +0 -0
  87. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_rename.py +0 -0
  88. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_run_freeze.py +0 -0
  89. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_sse.py +0 -0
  90. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_submission.py +0 -0
  91. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_audit_timing.py +0 -0
  92. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_auth_projects.py +0 -0
  93. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_bootstrap.py +0 -0
  94. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_comparison.py +0 -0
  95. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_engine_integration.py +0 -0
  96. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_health.py +0 -0
  97. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_health_panel.py +0 -0
  98. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_middleware.py +0 -0
  99. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_minimal_config.py +0 -0
  100. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_model_registry.py +0 -0
  101. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_purge_test_data.py +0 -0
  102. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_scenario_import_export.py +0 -0
  103. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_scenarios.py +0 -0
  104. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_seed_platform.py +0 -0
  105. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_smoke_all_pages.py +0 -0
  106. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_workspaces.py +0 -0
  107. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/tests/test_workspaces_ui.py +0 -0
  108. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/ui.py +0 -0
  109. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/infra/worker.py +0 -0
  110. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/manage.py +0 -0
  111. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/__init__.py +0 -0
  112. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/admin.py +0 -0
  113. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/apps.py +0 -0
  114. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/migrations/0001_initial.py +0 -0
  115. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/migrations/__init__.py +0 -0
  116. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/models.py +0 -0
  117. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/serializers.py +0 -0
  118. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/services.py +0 -0
  119. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/urls.py +0 -0
  120. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/model_registry/views.py +0 -0
  121. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/requirements.txt +0 -0
  122. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/__init__.py +0 -0
  123. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/admin.py +0 -0
  124. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/apps.py +0 -0
  125. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/migrations/0001_initial.py +0 -0
  126. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/migrations/__init__.py +0 -0
  127. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/models.py +0 -0
  128. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/serializers.py +0 -0
  129. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/services.py +0 -0
  130. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/urls.py +0 -0
  131. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/scenarios/views.py +0 -0
  132. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/simpleaudit_studio/__init__.py +0 -0
  133. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/simpleaudit_studio/cli.py +0 -0
  134. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/static/favicon-16x16.svg +0 -0
  135. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/static/favicon-32x32.svg +0 -0
  136. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/static/favicon.svg +0 -0
  137. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/static/js/diff.min.js +0 -0
  138. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/static/logo.png +0 -0
  139. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/static/logo.svg +0 -0
  140. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/404.html +0 -0
  141. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/audit_detail.html +0 -0
  142. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/auth/login.html +0 -0
  143. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/auth/register.html +0 -0
  144. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/auth/workos_login.html +0 -0
  145. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/auth/workos_verify.html +0 -0
  146. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/base.html +0 -0
  147. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/compare.html +0 -0
  148. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/dashboard.html +0 -0
  149. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/health.html +0 -0
  150. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/models.html +0 -0
  151. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/new_audit.html +0 -0
  152. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/scenario_result_detail.html +0 -0
  153. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/scenarios.html +0 -0
  154. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/templates/workspaces.html +0 -0
  155. {simpleaudit_studio-0.2.3 → simpleaudit_studio-0.2.4}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: simpleaudit-studio
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Production AI model audit platform — one-liner demo mode via uvx
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -54,6 +54,12 @@ uvx simpleaudit-studio
54
54
 
55
55
  [`uvx`](https://docs.astral.sh/uv/#uvx) installs the [`simpleaudit-studio`](https://pypi.org/project/simpleaudit-studio/) package and runs it in an isolated environment. No Docker, no Postgres, no manual setup. Opens at http://localhost:8000 (login: `studio` / `admin123`). A mock model server is pre-seeded so you can start exploring audit results immediately.
56
56
 
57
+ Want the **latest unreleased code** from this repo instead of the PyPI release? Same one-liner, pointed at git:
58
+
59
+ ```bash
60
+ uvx --from "git+https://github.com/SushantGautam/SimpleAuditStudio" spin
61
+ ```
62
+
57
63
  🌐 Or skip the setup entirely — try the live demo: <a href="https://sushantgautam-simpleaudit-studio.hf.space" target="_blank" rel="noopener noreferrer">sushantgautam-simpleaudit-studio.hf.space</a>
58
64
 
59
65
  ### 🤖 Using Real Models
@@ -27,6 +27,12 @@ uvx simpleaudit-studio
27
27
 
28
28
  [`uvx`](https://docs.astral.sh/uv/#uvx) installs the [`simpleaudit-studio`](https://pypi.org/project/simpleaudit-studio/) package and runs it in an isolated environment. No Docker, no Postgres, no manual setup. Opens at http://localhost:8000 (login: `studio` / `admin123`). A mock model server is pre-seeded so you can start exploring audit results immediately.
29
29
 
30
+ Want the **latest unreleased code** from this repo instead of the PyPI release? Same one-liner, pointed at git:
31
+
32
+ ```bash
33
+ uvx --from "git+https://github.com/SushantGautam/SimpleAuditStudio" spin
34
+ ```
35
+
30
36
  🌐 Or skip the setup entirely — try the live demo: <a href="https://sushantgautam-simpleaudit-studio.hf.space" target="_blank" rel="noopener noreferrer">sushantgautam-simpleaudit-studio.hf.space</a>
31
37
 
32
38
  ### 🤖 Using Real Models
@@ -70,17 +70,23 @@ class CsrfCookieMiddleware(MiddlewareMixin):
70
70
  Django only sets the cookie when a response renders ``{% csrf_token %}``.
71
71
  In the HF Space iframe (demo mode) the login page may be the only place
72
72
  that does so; if the user signed in via WorkOS magic auth or the cookie
73
- expired, subsequent fetch POSTs fail with 403. Marking the CSRF cookie
74
- for update on every authenticated request fixes this.
73
+ expired, subsequent fetch POSTs fail with 403.
74
+
75
+ We only set the cookie if it is missing, rather than rotating it on every
76
+ request. Rotating on every request causes token/cookie drift: a form
77
+ rendered with token A becomes stale after any other request rotates the
78
+ cookie to secret B, producing 403 "CSRF token from POST incorrect".
75
79
  """
76
80
 
77
81
  def process_request(self, request):
78
82
  if hasattr(request, "user") and request.user.is_authenticated:
83
+ from django.conf import settings
79
84
  from django.middleware.csrf import _add_new_csrf_cookie
80
85
 
81
- # Generates a secret in request.META and marks it for update;
82
- # CsrfViewMiddleware.process_response then sets the cookie.
83
- _add_new_csrf_cookie(request)
86
+ # Only set the cookie if it's not already present in the request.
87
+ existing = request.COOKIES.get(settings.CSRF_COOKIE_NAME)
88
+ if not existing:
89
+ _add_new_csrf_cookie(request)
84
90
 
85
91
 
86
92
  class ProjectMiddleware(MiddlewareMixin):
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "simpleaudit-studio"
7
- version = "0.2.3"
7
+ version = "0.2.4"
8
8
  description = "Production AI model audit platform — one-liner demo mode via uvx"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -33,6 +33,7 @@ dev = ["factory_boy==3.3.2", "pytest", "pytest-django"]
33
33
 
34
34
  [project.scripts]
35
35
  simpleaudit-studio = "simpleaudit_studio.cli:main"
36
+ spin = "simpleaudit_studio.cli:main"
36
37
 
37
38
  [tool.hatch.build.targets.wheel]
38
39
  packages = [