c2cwsgiutils 6.1.9.dev35__tar.gz → 6.1.9.dev39__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. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/PKG-INFO +1 -1
  2. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/prometheus.py +5 -0
  3. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/pyproject.toml +1 -1
  4. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/LICENSE +0 -0
  5. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/README.md +0 -0
  6. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/__init__.py +0 -0
  7. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/acceptance/__init__.py +0 -0
  8. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/acceptance/connection.py +0 -0
  9. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/acceptance/image.py +0 -0
  10. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/acceptance/package-lock.json +0 -0
  11. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/acceptance/package.json +0 -0
  12. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/acceptance/print.py +0 -0
  13. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/acceptance/screenshot.js +0 -0
  14. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/acceptance/utils.py +0 -0
  15. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/auth.py +0 -0
  16. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/broadcast/__init__.py +0 -0
  17. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/broadcast/interface.py +0 -0
  18. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/broadcast/local.py +0 -0
  19. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/broadcast/redis.py +0 -0
  20. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/broadcast/utils.py +0 -0
  21. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/client_info.py +0 -0
  22. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/config_utils.py +0 -0
  23. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/coverage_setup.py +0 -0
  24. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/db.py +0 -0
  25. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/db_maintenance_view.py +0 -0
  26. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/debug/__init__.py +0 -0
  27. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/debug/_listeners.py +0 -0
  28. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/debug/_views.py +0 -0
  29. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/debug/utils.py +0 -0
  30. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/errors.py +0 -0
  31. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/health_check.py +0 -0
  32. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/index.py +0 -0
  33. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/loader.py +0 -0
  34. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/logging_view.py +0 -0
  35. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/models_graph.py +0 -0
  36. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/pretty_json.py +0 -0
  37. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/profiler.py +0 -0
  38. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/py.typed +0 -0
  39. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/pyramid.py +0 -0
  40. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/pyramid_logging.py +0 -0
  41. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/redis_stats.py +0 -0
  42. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/redis_utils.py +0 -0
  43. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/request_tracking/__init__.py +0 -0
  44. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/request_tracking/_sql.py +0 -0
  45. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/scripts/__init__.py +0 -0
  46. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/scripts/genversion.py +0 -0
  47. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/scripts/stats_db.py +0 -0
  48. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/scripts/test_print.py +0 -0
  49. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sentry.py +0 -0
  50. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/services.py +0 -0
  51. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/setup_process.py +0 -0
  52. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sql_profiler/__init__.py +0 -0
  53. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sql_profiler/_impl.py +0 -0
  54. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sqlalchemylogger/README.md +0 -0
  55. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sqlalchemylogger/__init__.py +0 -0
  56. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sqlalchemylogger/_filters.py +0 -0
  57. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sqlalchemylogger/_models.py +0 -0
  58. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sqlalchemylogger/examples/example.py +0 -0
  59. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/sqlalchemylogger/handlers.py +0 -0
  60. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/static/favicon-16x16.png +0 -0
  61. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/static/favicon-32x32.png +0 -0
  62. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/stats_pyramid/__init__.py +0 -0
  63. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/stats_pyramid/_db_spy.py +0 -0
  64. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/stats_pyramid/_pyramid_spy.py +0 -0
  65. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/templates/index.html.mako +0 -0
  66. {c2cwsgiutils-6.1.9.dev35 → c2cwsgiutils-6.1.9.dev39}/c2cwsgiutils/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: c2cwsgiutils
3
- Version: 6.1.9.dev35
3
+ Version: 6.1.9.dev39
4
4
  Summary: Common utilities for Camptocamp WSGI applications
5
5
  Home-page: https://github.com/camptocamp/c2cwsgiutils
6
6
  License: BSD-2-Clause
@@ -132,6 +132,7 @@ class MultiProcessCustomCollector(prometheus_client.registry.Collector):
132
132
  def _deserialize_collected_data(
133
133
  results: list[list[SerializedMetric]],
134
134
  ) -> Generator[prometheus_client.core.Metric, None, None]:
135
+ imported = set()
135
136
  for serialized_collection in results:
136
137
  if serialized_collection is None:
137
138
  continue
@@ -149,6 +150,10 @@ def _deserialize_collected_data(
149
150
  else:
150
151
  raise NotImplementedError()
151
152
  for sample in serialized_metric["samples"]:
153
+ canonical = (sample["name"], frozenset(sample.get("labels", {}).items()))
154
+ if canonical in imported:
155
+ continue
156
+ imported.add(canonical)
152
157
  metric.samples.append(
153
158
  prometheus_client.metrics_core.Sample(**sample), # type: ignore[attr-defined]
154
159
  )
@@ -16,7 +16,7 @@ strict = true
16
16
 
17
17
  [tool.poetry]
18
18
  name = "c2cwsgiutils"
19
- version = "6.1.9.dev35"
19
+ version = "6.1.9.dev39"
20
20
  description = "Common utilities for Camptocamp WSGI applications"
21
21
  readme = "README.md"
22
22
  authors = ["Camptocamp <info@camptocamp.com>"]