mpt-extension-sdk 5.4.4__py3-none-any.whl → 5.5.0__py3-none-any.whl

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.
@@ -5,3 +5,7 @@ CONSUME_EVENTS_HELP_TEXT = "Consume events from the MPT platform"
5
5
  DEFAULT_APP_CONFIG_GROUP = "swo.mpt.ext"
6
6
  DEFAULT_APP_CONFIG_NAME = "app_config"
7
7
  DJANGO_SETTINGS_MODULE = "mpt_extension_sdk.runtime.djapp.conf.default"
8
+ ERR_DJANGO_SETTINGS_MODULE_TEXT = (
9
+ "DJANGO_SETTINGS_MODULE environment variable is not set. "
10
+ "Please set it to your Django settings module before running this command."
11
+ )
@@ -9,7 +9,7 @@ from mpt_extension_sdk.constants import (
9
9
  DEFAULT_APP_CONFIG_NAME,
10
10
  DJANGO_SETTINGS_MODULE,
11
11
  )
12
- from mpt_extension_sdk.runtime.initializer import initialize
12
+ from mpt_extension_sdk.runtime.utils import initialize_extension
13
13
 
14
14
 
15
15
  @click.command(
@@ -20,20 +20,21 @@ from mpt_extension_sdk.runtime.initializer import initialize
20
20
  @click.pass_context
21
21
  def django(ctx, management_args): # pragma: no cover
22
22
  "Execute Django subcommands."
23
+
23
24
  from django.conf import settings
24
25
 
25
- initialize(
26
- {
27
- "group": DEFAULT_APP_CONFIG_GROUP,
28
- "name": DEFAULT_APP_CONFIG_NAME,
29
- "django_settings_module": DJANGO_SETTINGS_MODULE,
30
- }
31
- )
26
+ options = {
27
+ "group": DEFAULT_APP_CONFIG_GROUP,
28
+ "name": DEFAULT_APP_CONFIG_NAME,
29
+ "django_settings_module": DJANGO_SETTINGS_MODULE,
30
+ }
31
+
32
+ initialize_extension(options=options)
32
33
 
33
34
  if settings.USE_APPLICATIONINSIGHTS:
34
35
  tracer = trace.get_tracer(__name__)
35
36
  tracer_context = tracer.start_as_current_span(
36
- f"Running Django command {management_args}",
37
+ f"Running Django command {management_args[0]}",
37
38
  )
38
39
  else:
39
40
  tracer_context = nullcontext()
@@ -30,13 +30,15 @@ def run(component, color, debug, reload, debug_py):
30
30
  host, port = debug_py.split(":")
31
31
  debugpy.listen((host, int(port))) # noqa
32
32
 
33
+ options = {
34
+ "color": color,
35
+ "debug": debug,
36
+ "reload": reload,
37
+ "component": component,
38
+ }
39
+
33
40
  master = Master(
34
- {
35
- "color": color,
36
- "debug": debug,
37
- "reload": reload,
38
- "component": component,
39
- },
41
+ options,
40
42
  settings=settings,
41
43
  )
42
44
  master.run() # pragma: no cover
@@ -53,9 +53,7 @@ class Master:
53
53
  "gunicorn": start_gunicorn,
54
54
  }
55
55
  case "consumer":
56
- self.proc_targets = {
57
- "event-consumer": start_event_consumer,
58
- }
56
+ self.proc_targets = {"event-consumer": start_event_consumer}
59
57
  case _:
60
58
  self.proc_targets = {
61
59
  "event-consumer": start_event_consumer,
@@ -6,6 +6,7 @@ from importlib.metadata import entry_points
6
6
  from django.apps import apps
7
7
  from django.contrib import admin
8
8
  from django.urls import path
9
+ from django.utils.module_loading import import_string
9
10
  from pyfiglet import Figlet
10
11
  from rich.console import Console
11
12
  from rich.text import Text
@@ -127,3 +128,22 @@ def get_urlpatterns(extension):
127
128
  urlpatterns.append(path("api/", api_url))
128
129
 
129
130
  return urlpatterns
131
+
132
+
133
+ def get_initializer_function():
134
+ """
135
+ Dynamically import and return the initializer function from settings.INITIALIZER.
136
+ """
137
+ # Read from environment variable instead of Django settings to avoid circular dependency
138
+ # (Django settings need to be configured before we can read settings.INITIALIZER)
139
+ return os.getenv(
140
+ "MPT_INITIALIZER", "mpt_extension_sdk.runtime.initializer.initialize"
141
+ )
142
+
143
+
144
+ def initialize_extension(
145
+ options, group=DEFAULT_APP_CONFIG_GROUP, name=DEFAULT_APP_CONFIG_NAME
146
+ ):
147
+ initialize_path = get_initializer_function()
148
+ initialize_func = import_string(initialize_path)
149
+ initialize_func(options, group=group, name=name)
@@ -6,7 +6,7 @@ from mpt_extension_sdk.constants import (
6
6
  DEFAULT_APP_CONFIG_GROUP,
7
7
  DEFAULT_APP_CONFIG_NAME,
8
8
  )
9
- from mpt_extension_sdk.runtime.initializer import initialize
9
+ from mpt_extension_sdk.runtime.utils import initialize_extension
10
10
 
11
11
 
12
12
  class ExtensionWebApplication(BaseApplication):
@@ -29,14 +29,16 @@ class ExtensionWebApplication(BaseApplication):
29
29
 
30
30
 
31
31
  def start_event_consumer(options):
32
- initialize(options)
32
+ initialize_extension(options)
33
33
  call_command("consume_events")
34
34
 
35
35
 
36
36
  def start_gunicorn(
37
- options, group=DEFAULT_APP_CONFIG_GROUP, name=DEFAULT_APP_CONFIG_NAME
37
+ options,
38
+ group=DEFAULT_APP_CONFIG_GROUP,
39
+ name=DEFAULT_APP_CONFIG_NAME,
38
40
  ):
39
- initialize(options, group=group, name=name)
41
+ initialize_extension(options, group=group, name=name)
40
42
 
41
43
  logging_config = {
42
44
  "version": 1,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mpt-extension-sdk
3
- Version: 5.4.4
3
+ Version: 5.5.0
4
4
  Summary: Extensions SDK for SoftwareONE Marketplace Platform
5
5
  Author: SoftwareOne AG
6
6
  License: Apache-2.0 license
@@ -1,5 +1,5 @@
1
1
  mpt_extension_sdk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- mpt_extension_sdk/constants.py,sha256=lMXalL_Ac67GroFd6xNS93O9wGze368QZ4EFHxFQKTs,304
2
+ mpt_extension_sdk/constants.py,sha256=rlO7WRImnzrb41zlkjka25CQQtEYid-0iGaupg_pk_k,485
3
3
  mpt_extension_sdk/airtable/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  mpt_extension_sdk/airtable/wrap_http_error.py,sha256=Shiy4uwpdpgkevooLjhpe1grhgJRj7cV6lUMMCQKogc,1263
5
5
  mpt_extension_sdk/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -22,14 +22,14 @@ mpt_extension_sdk/mpt_http/wrap_http_error.py,sha256=j8K6Ddx7NiM-FPRMQi25vuULAW8
22
22
  mpt_extension_sdk/runtime/__init__.py,sha256=PQSAz9qvXHbxrn4KvuXSHB8y-A4Jpgbm6ZV-wPiNPyw,194
23
23
  mpt_extension_sdk/runtime/initializer.py,sha256=V8fubCULUJlvCBkYhJM52GUNoHNWVI-siaecmZv3kzk,2154
24
24
  mpt_extension_sdk/runtime/logging.py,sha256=wJ6KyvnuvMZELI1Hd0fYbuHr7YiP3GIXFBvvSdmd7nQ,885
25
- mpt_extension_sdk/runtime/master.py,sha256=slwZor9IhIVzQBxbUrLNKmHDmnfl9JVA4FMY1nqm0w8,4575
25
+ mpt_extension_sdk/runtime/master.py,sha256=ALbtAsb6ubhWcEpAXpzHSZixYXZ3Qfdf2ttOLb04nlc,4536
26
26
  mpt_extension_sdk/runtime/swoext.py,sha256=jtqAOASJzf66FkXGcUS1iOx-bN5hCv3pFVQfJGd3Abc,1664
27
27
  mpt_extension_sdk/runtime/tracer.py,sha256=Mvt1BKBdSvb4FlOcjUDhIKEXmiYETrFGgHdhOQwEr7g,415
28
- mpt_extension_sdk/runtime/utils.py,sha256=I4nhj89LDwGG5ukX5K66RqvKv6lo1drUaa3VbaJtZtA,3781
29
- mpt_extension_sdk/runtime/workers.py,sha256=oAMpRDbSdHkgX_UI2Vm1spOJoxQVehK7RFKPcZowAh4,2643
28
+ mpt_extension_sdk/runtime/utils.py,sha256=zSQ3esb6OxAeJc-hoXy4xFpOJUGTrsYFQiAP3RHrZOc,4516
29
+ mpt_extension_sdk/runtime/workers.py,sha256=TMJd13yxKDJBQ5PY9J4qdvIwSzVanySir_pfEzWy-dY,2676
30
30
  mpt_extension_sdk/runtime/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- mpt_extension_sdk/runtime/commands/django.py,sha256=Vt5qHR03HhGFeuja9xrHWOZ5TMsV7RC0qUwB7z7ptyQ,1214
32
- mpt_extension_sdk/runtime/commands/run.py,sha256=Vj2EV9TuE2VvuLrBBS-ppfp71Kd2z15zdkO4h86twH4,1139
31
+ mpt_extension_sdk/runtime/commands/django.py,sha256=x_B_j4B4scicy_dcDlH5mEpAjDh0gNBvKr4vzL9pKfg,1233
32
+ mpt_extension_sdk/runtime/commands/run.py,sha256=Iv7vt_BcHWYOEREYbUCyxHJ5yukp0CGpu_nzwXV1Zlg,1142
33
33
  mpt_extension_sdk/runtime/djapp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  mpt_extension_sdk/runtime/djapp/apps.py,sha256=YA1G5HaRqFBS-0DfYQuFpMgzUCYpu5T8x5LEC6MwI_M,1398
35
35
  mpt_extension_sdk/runtime/djapp/middleware.py,sha256=oAA5khXW6xeUjnOV63pNCF4D7QFVD6PayIa_489KRmg,555
@@ -46,8 +46,8 @@ mpt_extension_sdk/runtime/events/utils.py,sha256=bxFo-iQUqEJDqcIotC88Ty3Xt0K2FyY
46
46
  mpt_extension_sdk/swo_rql/__init__.py,sha256=QrvRDYhpK-Pd3OF-U2aMeazuKm_kbvXwLRIjd9Mm6ok,104
47
47
  mpt_extension_sdk/swo_rql/constants.py,sha256=39BZ78OzdU_dIQtoy-Z_5utXqEXRweIFvM9Zfxg9j5M,171
48
48
  mpt_extension_sdk/swo_rql/query_builder.py,sha256=xTdPGkI9MzCJyg-oOkK0z2oHFNjhEe8ihR-OmDL-kto,10500
49
- mpt_extension_sdk-5.4.4.dist-info/METADATA,sha256=iPRpaQe4WXR3jpx03L0ye2N5okDyryzMhCPXleocLTs,1358
50
- mpt_extension_sdk-5.4.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
51
- mpt_extension_sdk-5.4.4.dist-info/entry_points.txt,sha256=N8T9gBssEOm_UeBf9ABbGqtlnethrumfMoL4hNYWVFA,146
52
- mpt_extension_sdk-5.4.4.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
53
- mpt_extension_sdk-5.4.4.dist-info/RECORD,,
49
+ mpt_extension_sdk-5.5.0.dist-info/METADATA,sha256=3q1LSu61OZa5kLkpARsFlewA8CwrhnASEHdhl3OhC0Y,1358
50
+ mpt_extension_sdk-5.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
51
+ mpt_extension_sdk-5.5.0.dist-info/entry_points.txt,sha256=N8T9gBssEOm_UeBf9ABbGqtlnethrumfMoL4hNYWVFA,146
52
+ mpt_extension_sdk-5.5.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
53
+ mpt_extension_sdk-5.5.0.dist-info/RECORD,,