clue-api 1.4.0.dev184__tar.gz → 1.4.0.dev220__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 (95) hide show
  1. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/PKG-INFO +3 -3
  2. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/actions.py +13 -1
  3. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/pyproject.toml +3 -3
  4. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/LICENSE +0 -0
  5. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/README.md +0 -0
  6. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/.gitignore +0 -0
  7. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/__init__.py +0 -0
  8. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/__init__.py +0 -0
  9. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/base.py +0 -0
  10. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/v1/__init__.py +0 -0
  11. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/v1/actions.py +0 -0
  12. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/v1/auth.py +0 -0
  13. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/v1/configs.py +0 -0
  14. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/v1/fetchers.py +0 -0
  15. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/v1/lookup.py +0 -0
  16. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/v1/registration.py +0 -0
  17. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/api/v1/static.py +0 -0
  18. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/app.py +0 -0
  19. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/cache/__init__.py +0 -0
  20. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/__init__.py +0 -0
  21. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/bytes_utils.py +0 -0
  22. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/classification.py +0 -0
  23. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/classification.yml +0 -0
  24. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/dict_utils.py +0 -0
  25. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/exceptions.py +0 -0
  26. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/forge.py +0 -0
  27. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/json_utils.py +0 -0
  28. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/list_utils.py +0 -0
  29. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/logging/__init__.py +0 -0
  30. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/logging/audit.py +0 -0
  31. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/logging/format.py +0 -0
  32. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/regex.py +0 -0
  33. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/str_utils.py +0 -0
  34. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/swagger.py +0 -0
  35. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/common/uid.py +0 -0
  36. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/config.py +0 -0
  37. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/constants/__init__.py +0 -0
  38. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/constants/env.py +0 -0
  39. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/constants/supported_types.py +0 -0
  40. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/cronjobs/__init__.py +0 -0
  41. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/cronjobs/plugins.py +0 -0
  42. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/error.py +0 -0
  43. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/extensions/__init__.py +0 -0
  44. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/extensions/config.py +0 -0
  45. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/gunicorn_config.py +0 -0
  46. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/healthz.py +0 -0
  47. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/helper/discover.py +0 -0
  48. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/helper/headers.py +0 -0
  49. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/helper/oauth.py +0 -0
  50. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/__init__.py +0 -0
  51. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/config.py +0 -0
  52. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/fetchers.py +0 -0
  53. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/graph.py +0 -0
  54. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/model_list.py +0 -0
  55. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/network.py +0 -0
  56. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/results/__init__.py +0 -0
  57. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/results/base.py +0 -0
  58. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/results/file.py +0 -0
  59. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/results/graph.py +0 -0
  60. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/results/image.py +0 -0
  61. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/results/status.py +0 -0
  62. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/results/validation.py +0 -0
  63. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/selector.py +0 -0
  64. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/models/validators.py +0 -0
  65. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/patched.py +0 -0
  66. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/__init__.py +0 -0
  67. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/celery_app.py +0 -0
  68. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/helpers/__init__.py +0 -0
  69. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/helpers/central_server.py +0 -0
  70. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/helpers/email_render.py +0 -0
  71. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/helpers/token.py +0 -0
  72. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/helpers/trino.py +0 -0
  73. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/models.py +0 -0
  74. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/plugin/utils.py +0 -0
  75. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/py.typed +0 -0
  76. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/__init__.py +0 -0
  77. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/datatypes/__init__.py +0 -0
  78. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/datatypes/cache.py +0 -0
  79. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/datatypes/events.py +0 -0
  80. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/datatypes/hash.py +0 -0
  81. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/datatypes/queues/__init__.py +0 -0
  82. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/datatypes/queues/comms.py +0 -0
  83. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/datatypes/set.py +0 -0
  84. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/remote/datatypes/user_quota_tracker.py +0 -0
  85. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/security/__init__.py +0 -0
  86. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/security/obo.py +0 -0
  87. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/security/utils.py +0 -0
  88. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/services/action_service.py +0 -0
  89. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/services/auth_service.py +0 -0
  90. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/services/config_service.py +0 -0
  91. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/services/fetcher_service.py +0 -0
  92. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/services/jwt_service.py +0 -0
  93. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/services/lookup_service.py +0 -0
  94. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/services/type_service.py +0 -0
  95. {clue_api-1.4.0.dev184 → clue_api-1.4.0.dev220}/clue/services/user_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: clue-api
3
- Version: 1.4.0.dev184
3
+ Version: 1.4.0.dev220
4
4
  Summary: Clue distributed enrichment service
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -27,14 +27,14 @@ Requires-Dist: cart (>=1.2.3,<2.0.0)
27
27
  Requires-Dist: celery (>=5.6.2,<6.0.0)
28
28
  Requires-Dist: elastic-apm (>=6.22.0,<7.0.0)
29
29
  Requires-Dist: flasgger (>=0.9.7.1,<0.10.0.0) ; extra == "server"
30
- Requires-Dist: flask (<3.0.0)
30
+ Requires-Dist: flask (<4.0.0)
31
31
  Requires-Dist: flask-caching (>=2.1.0,<3.0.0)
32
32
  Requires-Dist: flask-cors (>=4.0.1,<7.0.0) ; extra == "server"
33
33
  Requires-Dist: gevent (>=24.2.1,<25.0.0)
34
34
  Requires-Dist: gunicorn (>=22,<24)
35
35
  Requires-Dist: imgkit (>=1.2.3,<2.0.0)
36
36
  Requires-Dist: passlib (>=1.7.4,<2.0.0) ; extra == "server"
37
- Requires-Dist: pillow (>=11.1.0,<12.0.0)
37
+ Requires-Dist: pillow (>=11.1,<13.0)
38
38
  Requires-Dist: prometheus-client (>=0.20.0,<0.21.0) ; extra == "server"
39
39
  Requires-Dist: pydantic (>=2.7.1,<3.0.0)
40
40
  Requires-Dist: pydantic-settings[yaml] (>=2.3.4,<3.0.0)
@@ -34,12 +34,24 @@ from clue.models.validators import validate_classification
34
34
  logger = get_logger(__file__)
35
35
 
36
36
 
37
+ class UrlData(BaseModel):
38
+ hash: str | None = Field(default=None, description="URL fragment identifier")
39
+ host: str | None = Field(default=None, description="Hostname and port")
40
+ hostname: str | None = Field(default=None, description="Hostname without port")
41
+ href: str | None = Field(default=None, description="Full URL string")
42
+ origin: str | None = Field(default=None, description="Origin (protocol + host)")
43
+ pathname: str | None = Field(default=None, description="URL path")
44
+ port: str | None = Field(default=None, description="Port number as string")
45
+ protocol: str | None = Field(default=None, description="URL protocol (e.g. 'https:')")
46
+ search: str | None = Field(default=None, description="Query string")
47
+
48
+
37
49
  class ActionContextInformation(BaseModel):
38
50
  """Contextual information on where the action is being executed."""
39
51
 
40
52
  model_config = ConfigDict(extra="allow")
41
53
 
42
- url: str | None = Field(default=None, description="URL context for the action")
54
+ url: UrlData | None = Field(default=None, description="URL context for the action")
43
55
  timestamp: str | None = Field(default=None, description="Timestamp when the action was initiated")
44
56
  language: str | None = Field(default=None, description="Language context for the action")
45
57
 
@@ -139,7 +139,7 @@ log_cli_level = "WARN"
139
139
  [tool.poetry]
140
140
  package-mode = true
141
141
  name = "clue-api"
142
- version = "1.4.0.dev184"
142
+ version = "1.4.0.dev220"
143
143
  description = "Clue distributed enrichment service"
144
144
  authors = ["Canadian Centre for Cyber Security <contact@cyber.gc.ca>"]
145
145
  license = "MIT"
@@ -172,7 +172,7 @@ repository = "https://github.com/CybercentreCanada/clue"
172
172
  [tool.poetry.dependencies]
173
173
  python = "^3.12"
174
174
  elastic-apm = "^6.22.0"
175
- flask = "<3.0.0"
175
+ flask = "<4.0.0"
176
176
  flask-caching = "^2.1.0"
177
177
  gunicorn = ">=22,<24"
178
178
  gevent = "^24.2.1"
@@ -181,7 +181,7 @@ pydantic-settings = { extras = ["yaml"], version = "^2.3.4" }
181
181
  redis = { version = "^5.0.3" }
182
182
  beautifulsoup4 = "^4.13.3"
183
183
  imgkit = "^1.2.3"
184
- pillow = "^11.1.0"
184
+ pillow = ">=11.1,<13.0"
185
185
  cart = "^1.2.3"
186
186
  setuptools = "<79.0.0"
187
187
  requests = "^2.32.5"
File without changes