flagsmith-common 2.1.0__tar.gz → 2.2.1__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 (91) hide show
  1. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/PKG-INFO +5 -3
  2. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/pyproject.toml +1 -1
  3. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/templates/docgen-metrics.md +2 -0
  4. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/utils.py +9 -1
  5. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/LICENSE +0 -0
  6. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/README.md +0 -0
  7. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/__init__.py +0 -0
  8. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/__init__.py +0 -0
  9. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/app.py +0 -0
  10. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/cli/__init__.py +0 -0
  11. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/cli/healthcheck.py +0 -0
  12. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/logging.py +0 -0
  13. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/main.py +0 -0
  14. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/management/__init__.py +0 -0
  15. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/management/commands/__init__.py +0 -0
  16. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/management/commands/docgen.py +0 -0
  17. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/management/commands/start.py +0 -0
  18. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/management/commands/waitfordb.py +0 -0
  19. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/metrics.py +0 -0
  20. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/middleware.py +0 -0
  21. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/urls.py +0 -0
  22. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/core/views.py +0 -0
  23. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/environments/permissions.py +0 -0
  24. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/features/__init__.py +0 -0
  25. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/features/multivariate/__init__.py +0 -0
  26. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/features/multivariate/serializers.py +0 -0
  27. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/features/serializers.py +0 -0
  28. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/features/versioning/__init__.py +0 -0
  29. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/features/versioning/serializers.py +0 -0
  30. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/gunicorn/__init__.py +0 -0
  31. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/gunicorn/conf.py +0 -0
  32. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/gunicorn/constants.py +0 -0
  33. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/gunicorn/logging.py +0 -0
  34. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/gunicorn/metrics.py +0 -0
  35. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/gunicorn/middleware.py +0 -0
  36. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/gunicorn/utils.py +0 -0
  37. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/migrations/__init__.py +0 -0
  38. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/migrations/helpers/__init__.py +0 -0
  39. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/migrations/helpers/postgres_helpers.py +0 -0
  40. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/organisations/permissions.py +0 -0
  41. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/projects/permissions.py +0 -0
  42. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/prometheus/__init__.py +0 -0
  43. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/prometheus/utils.py +0 -0
  44. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/py.typed +0 -0
  45. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/test_tools/__init__.py +0 -0
  46. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/test_tools/plugin.py +0 -0
  47. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/test_tools/types.py +0 -0
  48. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/test_tools/utils.py +0 -0
  49. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/common/types.py +0 -0
  50. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/__init__.py +0 -0
  51. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/admin.py +0 -0
  52. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/apps.py +0 -0
  53. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/decorators.py +0 -0
  54. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/exceptions.py +0 -0
  55. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/health.py +0 -0
  56. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/managers.py +0 -0
  57. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/metrics.py +0 -0
  58. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0001_initial.py +0 -0
  59. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0002_healthcheckmodel.py +0 -0
  60. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0003_add_completed_to_task.py +0 -0
  61. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0004_recreate_task_indexes.py +0 -0
  62. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0005_update_conditional_index_conditions.py +0 -0
  63. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0006_auto_20230221_0802.py +0 -0
  64. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0007_add_is_locked.py +0 -0
  65. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0008_add_get_task_to_process_function.py +0 -0
  66. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0009_add_recurring_task_run_first_run_at.py +0 -0
  67. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0010_task_priority.py +0 -0
  68. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0011_add_priority_to_get_tasks_to_process.py +0 -0
  69. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0012_add_locked_at_and_timeout.py +0 -0
  70. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/0013_add_last_picked_at.py +0 -0
  71. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/__init__.py +0 -0
  72. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/sql/0008_get_recurring_tasks_to_process.sql +0 -0
  73. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/sql/0008_get_tasks_to_process.sql +0 -0
  74. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/sql/0011_get_tasks_to_process.sql +0 -0
  75. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/sql/0012_get_recurringtasks_to_process.sql +0 -0
  76. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/sql/0013_get_recurringtasks_to_process.sql +0 -0
  77. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/migrations/sql/__init__.py +0 -0
  78. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/models.py +0 -0
  79. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/monitoring.py +0 -0
  80. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/processor.py +0 -0
  81. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/py.typed +0 -0
  82. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/routers.py +0 -0
  83. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/serializers.py +0 -0
  84. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/task_registry.py +0 -0
  85. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/task_run_method.py +0 -0
  86. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/tasks.py +0 -0
  87. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/threads.py +0 -0
  88. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/types.py +0 -0
  89. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/urls.py +0 -0
  90. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/utils.py +0 -0
  91. {flagsmith_common-2.1.0 → flagsmith_common-2.2.1}/src/task_processor/views.py +0 -0
@@ -1,8 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: flagsmith-common
3
- Version: 2.1.0
3
+ Version: 2.2.1
4
4
  Summary: Flagsmith's common library
5
- License: BSD-3-Clause
5
+ License-Expression: BSD-3-Clause
6
+ License-File: LICENSE
6
7
  Author: Matthew Elwell
7
8
  Maintainer: Flagsmith Team
8
9
  Maintainer-email: support@flagsmith.com
@@ -15,6 +16,7 @@ Classifier: Programming Language :: Python :: 3
15
16
  Classifier: Programming Language :: Python :: 3.11
16
17
  Classifier: Programming Language :: Python :: 3.12
17
18
  Classifier: Programming Language :: Python :: 3.13
19
+ Classifier: Programming Language :: Python :: 3.14
18
20
  Provides-Extra: test-tools
19
21
  Requires-Dist: backoff (>=2.2.1,<3.0.0)
20
22
  Requires-Dist: django (>4,<5)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "flagsmith-common"
3
- version = "2.1.0"
3
+ version = "2.2.1"
4
4
  description = "Flagsmith's common library"
5
5
  requires-python = ">=3.11,<4.0"
6
6
  dependencies = [
@@ -1,5 +1,7 @@
1
1
  ---
2
2
  title: Metrics
3
+ sidebar_label: Metrics
4
+ sidebar_position: 20
3
5
  ---
4
6
 
5
7
  ## Prometheus
@@ -4,7 +4,7 @@ import pathlib
4
4
  import random
5
5
  from functools import lru_cache
6
6
  from itertools import cycle
7
- from typing import Iterator, Literal, NotRequired, TypedDict, TypeVar
7
+ from typing import Iterator, Literal, NotRequired, TypedDict, TypeVar, get_args
8
8
 
9
9
  from django.conf import settings
10
10
  from django.contrib.auth import get_user_model
@@ -130,6 +130,14 @@ def get_file_contents(file_path: str) -> str | None:
130
130
  return None
131
131
 
132
132
 
133
+ @lru_cache()
134
+ def is_database_replica_setup() -> bool:
135
+ """Checks if any database replica is set up"""
136
+ return any(
137
+ name for name in connections if name.startswith(get_args(ReplicaNamePrefix))
138
+ )
139
+
140
+
133
141
  def using_database_replica(
134
142
  manager: ManagerType,
135
143
  replica_prefix: ReplicaNamePrefix = "replica_",