dt-extensions-sdk 1.2.0__tar.gz → 1.2.2__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.
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/PKG-INFO +1 -1
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/api/extension.rst +1 -1
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/__about__.py +1 -1
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/main.py +5 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/callback.py +2 -1
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/extension.py +4 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/test_extension.py +25 -25
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/test_status.py +3 -3
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/.github/workflows/gh-pages-docs.yml +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/.github/workflows/publish.yml +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/.gitignore +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/LICENSE.txt +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/README.md +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/dt-sdk-header.png +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/dt-sdk-logo.png +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/favicon.ico +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-01-new-extension.png +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-02-type.png +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-03-import.png +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-04-import-remote.png +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-05-activation.png +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-06-activation-config.png +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/api/events/event_severity.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/api/events/event_type.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/api/events/index.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/api/metrics/index.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/api/metrics/metric.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/api/metrics/metric_type.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/assemble.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/build.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/create.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/gencerts.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/help.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/run.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/sign.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/upload.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/cli/wheel.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/conf.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/guides/building.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/guides/extension_structure.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/guides/installation.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/guides/migration.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/index.rst +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/requirements.txt +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/create.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/extension_template/.gitignore.template +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/extension_template/README.md.template +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/extension_template/activation.json.template +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/extension_template/extension/activationSchema.json.template +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/extension_template/extension/extension.yaml.template +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/extension_template/extension_name/__init__.py.template +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/extension_template/extension_name/__main__.py.template +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/extension_template/setup.py.template +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/schema.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/activation.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/communication.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/event.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/helper.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/metric.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/runtime.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/snapshot.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/vendor/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/vendor/mureq/LICENSE +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/vendor/mureq/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/vendor/mureq/mureq.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/pyproject.toml +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/cli/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/cli/test_dt_sdk.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/cli/test_templates.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/cli/test_types.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/data/snapshot.json +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/__init__.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/test_activation.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/test_callback.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/test_communication.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/test_metric.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/test_runtime_properties.py +0 -0
- {dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/tests/sdk/test_snapshot.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: dt-extensions-sdk
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.2
|
4
4
|
Project-URL: Documentation, https://github.com/dynatrace-extensions/dt-extensions-python-sdk#readme
|
5
5
|
Project-URL: Issues, https://github.com/dynatrace-extensions/dt-extensions-python-sdk/issues
|
6
6
|
Project-URL: Source, https://github.com/dynatrace-extensions/dt-extensions-python-sdk
|
@@ -18,6 +18,11 @@ from .schema import ExtensionYaml
|
|
18
18
|
app = typer.Typer(pretty_exceptions_show_locals=False, pretty_exceptions_enable=False)
|
19
19
|
console = Console()
|
20
20
|
|
21
|
+
# if we are not python 3.10.X, exit with an error
|
22
|
+
if sys.version_info < (3, 10) or sys.version_info >= (3, 11):
|
23
|
+
console.print(f"Python 3.10.X is required to build extensions, you are using {sys.version_info}", style="bold red")
|
24
|
+
sys.exit(1)
|
25
|
+
|
21
26
|
CERT_DIR_ENVIRONMENT_VAR = "DT_CERTIFICATES_FOLDER"
|
22
27
|
CERTIFICATE_DEFAULT_PATH = Path.home() / ".dynatrace" / "certificates"
|
23
28
|
|
@@ -51,7 +51,8 @@ class WrappedCallback:
|
|
51
51
|
|
52
52
|
def __call__(self):
|
53
53
|
self.logger.debug(f"Running scheduled callback {self}")
|
54
|
-
self.
|
54
|
+
if self.executions_total == 0:
|
55
|
+
self.start_timestamp = self.get_current_time_with_cluster_diff()
|
55
56
|
self.running = True
|
56
57
|
self.executions_total += 1
|
57
58
|
self.executions_per_interval += 1
|
@@ -342,6 +342,10 @@ class Extension:
|
|
342
342
|
if isinstance(interval, int):
|
343
343
|
interval = timedelta(seconds=interval)
|
344
344
|
|
345
|
+
if interval.total_seconds() < 1:
|
346
|
+
msg = f"Interval must be at least 1 second, got {interval.total_seconds()} seconds"
|
347
|
+
raise ValueError(msg)
|
348
|
+
|
345
349
|
callback = WrappedCallback(interval, callback, api_logger, args, activation_type=activation_type)
|
346
350
|
if self._is_fastcheck:
|
347
351
|
self._scheduled_callbacks_before_run.append(callback)
|
@@ -94,10 +94,10 @@ class TestExtension(unittest.TestCase):
|
|
94
94
|
nonlocal callback_call_count
|
95
95
|
callback_call_count += 1
|
96
96
|
|
97
|
-
extension.schedule(callback, timedelta(seconds=
|
98
|
-
extension.schedule(callback, timedelta(seconds=
|
97
|
+
extension.schedule(callback, timedelta(seconds=1))
|
98
|
+
extension.schedule(callback, timedelta(seconds=1))
|
99
99
|
extension._scheduler.run(blocking=False)
|
100
|
-
time.sleep(
|
100
|
+
time.sleep(1)
|
101
101
|
|
102
102
|
self.assertEqual(extension._scheduled_callbacks[0].executions_total, 1)
|
103
103
|
self.assertEqual(extension._scheduled_callbacks[1].executions_total, 1)
|
@@ -132,7 +132,7 @@ class TestExtension(unittest.TestCase):
|
|
132
132
|
|
133
133
|
def initialize(self):
|
134
134
|
self.callback_call_count = 0
|
135
|
-
self.schedule(self.callback, timedelta(seconds=
|
135
|
+
self.schedule(self.callback, timedelta(seconds=1))
|
136
136
|
|
137
137
|
extension = MyExt()
|
138
138
|
extension.logger = MagicMock()
|
@@ -141,7 +141,7 @@ class TestExtension(unittest.TestCase):
|
|
141
141
|
extension._client = MagicMock()
|
142
142
|
|
143
143
|
extension._scheduler.run(blocking=False)
|
144
|
-
time.sleep(
|
144
|
+
time.sleep(1)
|
145
145
|
|
146
146
|
self.assertEqual(len(extension._scheduled_callbacks), 2)
|
147
147
|
self.assertEqual(extension._scheduled_callbacks[0].executions_total, 1)
|
@@ -160,7 +160,7 @@ class TestExtension(unittest.TestCase):
|
|
160
160
|
self.callback_that_schedules_another_callback_call_count += 1
|
161
161
|
if not self.another_callback_scheduled:
|
162
162
|
self.another_callback_scheduled = True
|
163
|
-
self.schedule(self.another_callback, timedelta(seconds=
|
163
|
+
self.schedule(self.another_callback, timedelta(seconds=1))
|
164
164
|
|
165
165
|
def another_callback(self):
|
166
166
|
self.another_callback_call_count += 1
|
@@ -171,17 +171,17 @@ class TestExtension(unittest.TestCase):
|
|
171
171
|
extension._is_fastcheck = False
|
172
172
|
extension._client = MagicMock()
|
173
173
|
|
174
|
-
extension.schedule(extension.callback_that_schedules_another_callback, timedelta(seconds=
|
174
|
+
extension.schedule(extension.callback_that_schedules_another_callback, timedelta(seconds=1))
|
175
175
|
self.assertEqual(len(extension._scheduled_callbacks), 2)
|
176
176
|
|
177
177
|
extension._scheduler.run(blocking=False)
|
178
|
-
time.sleep(
|
178
|
+
time.sleep(1)
|
179
179
|
|
180
180
|
self.assertEqual(len(extension._scheduled_callbacks), 3)
|
181
181
|
self.assertEqual(extension._scheduled_callbacks[1].executions_total, 1)
|
182
182
|
self.assertEqual(extension.callback_that_schedules_another_callback_call_count, 1)
|
183
183
|
extension._scheduler.run(blocking=False)
|
184
|
-
time.sleep(
|
184
|
+
time.sleep(1)
|
185
185
|
|
186
186
|
self.assertEqual(len(extension._scheduled_callbacks), 3)
|
187
187
|
self.assertEqual(extension._scheduled_callbacks[1].executions_total, 2)
|
@@ -190,7 +190,7 @@ class TestExtension(unittest.TestCase):
|
|
190
190
|
self.assertGreaterEqual(extension.callback_that_schedules_another_callback_call_count, 1)
|
191
191
|
|
192
192
|
extension._scheduler.run(blocking=False)
|
193
|
-
time.sleep(
|
193
|
+
time.sleep(1)
|
194
194
|
assert len(extension._scheduled_callbacks) == 3
|
195
195
|
|
196
196
|
def test_callback_scheduled_exception(self):
|
@@ -215,11 +215,11 @@ class TestExtension(unittest.TestCase):
|
|
215
215
|
|
216
216
|
def run_scheduler():
|
217
217
|
nonlocal extension, callback, callback_wait, callback_call_count
|
218
|
-
extension.schedule(callback, timedelta(seconds=
|
218
|
+
extension.schedule(callback, timedelta(seconds=1))
|
219
219
|
extension._scheduler.run(blocking=False)
|
220
|
-
time.sleep(
|
220
|
+
time.sleep(1)
|
221
221
|
extension._scheduler.run(blocking=False)
|
222
|
-
time.sleep(
|
222
|
+
time.sleep(1)
|
223
223
|
if callback_call_count < 2:
|
224
224
|
callback_wait.notify()
|
225
225
|
|
@@ -235,7 +235,7 @@ class TestExtension(unittest.TestCase):
|
|
235
235
|
super().__init__()
|
236
236
|
self.called_callback = False
|
237
237
|
|
238
|
-
@schedule_method(timedelta(seconds=
|
238
|
+
@schedule_method(timedelta(seconds=1))
|
239
239
|
def callback(self):
|
240
240
|
self.called_callback = True
|
241
241
|
|
@@ -250,14 +250,14 @@ class TestExtension(unittest.TestCase):
|
|
250
250
|
def test_schedule_function_decorator(self):
|
251
251
|
callback_done = False
|
252
252
|
|
253
|
-
@schedule_function(timedelta(seconds=
|
253
|
+
@schedule_function(timedelta(seconds=1))
|
254
254
|
def callback():
|
255
255
|
nonlocal callback_done
|
256
256
|
callback_done = True
|
257
257
|
|
258
258
|
extension = _HelperExtension()
|
259
259
|
extension._scheduler.run(blocking=False)
|
260
|
-
time.sleep(
|
260
|
+
time.sleep(1)
|
261
261
|
|
262
262
|
self.assertEqual(len(extension._scheduled_callbacks), 1)
|
263
263
|
self.assertTrue(callback_done)
|
@@ -277,12 +277,12 @@ class TestExtension(unittest.TestCase):
|
|
277
277
|
msg = "test exception"
|
278
278
|
raise RuntimeError(msg)
|
279
279
|
|
280
|
-
extension.schedule(callback, timedelta(seconds=
|
280
|
+
extension.schedule(callback, timedelta(seconds=1))
|
281
281
|
extension._scheduler.run(blocking=False)
|
282
|
-
time.sleep(
|
282
|
+
time.sleep(1)
|
283
283
|
self.assertEqual(extension._build_current_status().status, StatusValue.GENERIC_ERROR)
|
284
284
|
extension._scheduler.run(blocking=False)
|
285
|
-
time.sleep(
|
285
|
+
time.sleep(1)
|
286
286
|
self.assertEqual(extension._build_current_status().status, StatusValue.OK)
|
287
287
|
|
288
288
|
def test_register_fastcheck(self):
|
@@ -486,16 +486,16 @@ class TestExtension(unittest.TestCase):
|
|
486
486
|
extension._client = MagicMock()
|
487
487
|
|
488
488
|
def callback():
|
489
|
-
time.sleep(
|
489
|
+
time.sleep(1.1)
|
490
490
|
return 1
|
491
491
|
|
492
|
-
extension.schedule(callback, timedelta(seconds=
|
492
|
+
extension.schedule(callback, timedelta(seconds=1))
|
493
493
|
extension._scheduler.run(blocking=False)
|
494
|
-
time.sleep(
|
494
|
+
time.sleep(2)
|
495
495
|
sfm = extension._prepare_sfm_metrics()
|
496
496
|
expected_values = {
|
497
497
|
"dsfm:datasource.python.threads": 0,
|
498
|
-
"dsfm:datasource.python.execution.time":
|
498
|
+
"dsfm:datasource.python.execution.time": 1.1,
|
499
499
|
"dsfm:datasource.python.execution.total.count": 1,
|
500
500
|
"dsfm:datasource.python.execution.count": 1,
|
501
501
|
"dsfm:datasource.python.execution.ok.count": 0,
|
@@ -515,9 +515,9 @@ class TestExtension(unittest.TestCase):
|
|
515
515
|
msg = "Ups ..."
|
516
516
|
raise Exception(msg)
|
517
517
|
|
518
|
-
extension.schedule(callback, timedelta(seconds=
|
518
|
+
extension.schedule(callback, timedelta(seconds=1))
|
519
519
|
extension._scheduler.run(blocking=False)
|
520
|
-
time.sleep(
|
520
|
+
time.sleep(1)
|
521
521
|
sfm = extension._prepare_sfm_metrics()
|
522
522
|
expected_values = {
|
523
523
|
"dsfm:datasource.python.threads": 0,
|
@@ -85,11 +85,11 @@ class TestStatus(unittest.TestCase):
|
|
85
85
|
extension._client = MagicMock()
|
86
86
|
|
87
87
|
def callback():
|
88
|
-
time.sleep(
|
88
|
+
time.sleep(1)
|
89
89
|
|
90
|
-
extension.schedule(callback, timedelta(seconds=
|
90
|
+
extension.schedule(callback, timedelta(seconds=1))
|
91
91
|
extension._scheduler.run(blocking=False)
|
92
|
-
time.sleep(
|
92
|
+
time.sleep(2)
|
93
93
|
|
94
94
|
self.assertTrue(extension._scheduled_callbacks[1].status.is_error())
|
95
95
|
self.assertIn("longer than the interval", extension._scheduled_callbacks[1].status.message)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-01-new-extension.png
RENAMED
File without changes
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-04-import-remote.png
RENAMED
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/docs/_static/img/migrate-05-activation.png
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/__init__.py
RENAMED
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/cli/create/create.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/communication.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/vendor/__init__.py
RENAMED
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/vendor/mureq/LICENSE
RENAMED
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/vendor/mureq/__init__.py
RENAMED
File without changes
|
{dt_extensions_sdk-1.2.0 → dt_extensions_sdk-1.2.2}/dynatrace_extension/sdk/vendor/mureq/mureq.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|