dagster-datadog 0.11.13rc3__tar.gz → 0.28.4__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 (28) hide show
  1. {dagster-datadog-0.11.13rc3 → dagster_datadog-0.28.4}/LICENSE +1 -1
  2. {dagster-datadog-0.11.13rc3 → dagster_datadog-0.28.4}/MANIFEST.in +1 -0
  3. dagster_datadog-0.28.4/PKG-INFO +27 -0
  4. dagster_datadog-0.28.4/README.md +4 -0
  5. dagster_datadog-0.28.4/dagster_datadog/__init__.py +8 -0
  6. dagster_datadog-0.28.4/dagster_datadog/py.typed +1 -0
  7. dagster_datadog-0.28.4/dagster_datadog/resources.py +153 -0
  8. dagster_datadog-0.28.4/dagster_datadog/version.py +1 -0
  9. dagster_datadog-0.28.4/dagster_datadog.egg-info/PKG-INFO +27 -0
  10. {dagster-datadog-0.11.13rc3 → dagster_datadog-0.28.4}/dagster_datadog.egg-info/SOURCES.txt +2 -4
  11. dagster_datadog-0.28.4/dagster_datadog.egg-info/requires.txt +2 -0
  12. dagster_datadog-0.28.4/dagster_datadog.egg-info/top_level.txt +1 -0
  13. dagster_datadog-0.28.4/setup.py +40 -0
  14. dagster-datadog-0.11.13rc3/PKG-INFO +0 -18
  15. dagster-datadog-0.11.13rc3/README.md +0 -4
  16. dagster-datadog-0.11.13rc3/dagster_datadog/__init__.py +0 -8
  17. dagster-datadog-0.11.13rc3/dagster_datadog/resources.py +0 -85
  18. dagster-datadog-0.11.13rc3/dagster_datadog/version.py +0 -1
  19. dagster-datadog-0.11.13rc3/dagster_datadog.egg-info/PKG-INFO +0 -18
  20. dagster-datadog-0.11.13rc3/dagster_datadog.egg-info/requires.txt +0 -2
  21. dagster-datadog-0.11.13rc3/dagster_datadog.egg-info/top_level.txt +0 -2
  22. dagster-datadog-0.11.13rc3/dagster_datadog_tests/__init__.py +0 -0
  23. dagster-datadog-0.11.13rc3/dagster_datadog_tests/test_resources.py +0 -78
  24. dagster-datadog-0.11.13rc3/dagster_datadog_tests/test_version.py +0 -5
  25. dagster-datadog-0.11.13rc3/setup.py +0 -33
  26. {dagster-datadog-0.11.13rc3 → dagster_datadog-0.28.4}/dagster_datadog.egg-info/dependency_links.txt +0 -0
  27. {dagster-datadog-0.11.13rc3 → dagster_datadog-0.28.4}/dagster_datadog.egg-info/not-zip-safe +0 -0
  28. {dagster-datadog-0.11.13rc3 → dagster_datadog-0.28.4}/setup.cfg +0 -0
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright {yyyy} {name of copyright owner}
189
+ Copyright 2025 Dagster Labs, Inc.
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
@@ -1,2 +1,3 @@
1
1
  include README.md
2
2
  include LICENSE
3
+ include dagster_datadog/py.typed
@@ -0,0 +1,27 @@
1
+ Metadata-Version: 2.4
2
+ Name: dagster-datadog
3
+ Version: 0.28.4
4
+ Summary: Package for datadog Dagster framework components.
5
+ Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-datadog
6
+ Author: Dagster Labs
7
+ Author-email: hello@dagsterlabs.com
8
+ License: Apache-2.0
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Operating System :: OS Independent
15
+ Requires-Python: >=3.10,<3.14
16
+ License-File: LICENSE
17
+ Requires-Dist: dagster==1.12.4
18
+ Requires-Dist: datadog
19
+ Dynamic: author
20
+ Dynamic: author-email
21
+ Dynamic: classifier
22
+ Dynamic: home-page
23
+ Dynamic: license
24
+ Dynamic: license-file
25
+ Dynamic: requires-dist
26
+ Dynamic: requires-python
27
+ Dynamic: summary
@@ -0,0 +1,4 @@
1
+ # dagster-datadog
2
+
3
+ The docs for `dagster-datadog` can be found
4
+ [here](https://docs.dagster.io/api/python-api/libraries/dagster-datadog).
@@ -0,0 +1,8 @@
1
+ from dagster_shared.libraries import DagsterLibraryRegistry
2
+
3
+ from dagster_datadog.resources import DatadogResource, datadog_resource
4
+ from dagster_datadog.version import __version__
5
+
6
+ DagsterLibraryRegistry.register("dagster-datadog", __version__)
7
+
8
+ __all__ = ["DatadogResource", "datadog_resource"]
@@ -0,0 +1 @@
1
+ partial
@@ -0,0 +1,153 @@
1
+ from dagster import ConfigurableResource, resource
2
+ from dagster._annotations import beta
3
+ from dagster._core.definitions.resource_definition import dagster_maintained_resource
4
+ from datadog import DogStatsd, api, initialize, statsd
5
+ from pydantic import Field
6
+
7
+
8
+ class DatadogClient:
9
+ # Mirroring levels from the dogstatsd library
10
+ OK, WARNING, CRITICAL, UNKNOWN = (
11
+ DogStatsd.OK,
12
+ DogStatsd.WARNING,
13
+ DogStatsd.CRITICAL,
14
+ DogStatsd.UNKNOWN,
15
+ )
16
+
17
+ def __init__(self, api_key: str, app_key: str):
18
+ self.api_key = api_key
19
+ self.app_key = app_key
20
+ initialize(api_key=api_key, app_key=app_key)
21
+
22
+ # Pull in methods from the dogstatsd library
23
+ for method in [
24
+ "event",
25
+ "gauge",
26
+ "increment",
27
+ "decrement",
28
+ "histogram",
29
+ "distribution",
30
+ "set",
31
+ "service_check",
32
+ "timed",
33
+ "timing",
34
+ "flush",
35
+ "wait_for_pending",
36
+ ]:
37
+ setattr(self, method, getattr(statsd, method))
38
+
39
+ self.api = api
40
+
41
+
42
+ @beta
43
+ class DatadogResource(ConfigurableResource):
44
+ """This resource is a thin wrapper over the
45
+ `dogstatsd library <https://datadogpy.readthedocs.io/en/latest/>`_.
46
+
47
+ As such, we directly mirror the public API methods of DogStatsd here; you can refer to the
48
+ `Datadog documentation <https://docs.datadoghq.com/developers/dogstatsd/>`_ for how to use this
49
+ resource.
50
+
51
+ Examples:
52
+ .. code-block:: python
53
+
54
+ @op
55
+ def datadog_op(datadog_resource: DatadogResource):
56
+ datadog_client = datadog_resource.get_client()
57
+ datadog_client.event('Man down!', 'This server needs assistance.')
58
+ datadog_client.gauge('users.online', 1001, tags=["protocol:http"])
59
+ datadog_client.increment('page.views')
60
+ datadog_client.decrement('page.views')
61
+ datadog_client.histogram('album.photo.count', 26, tags=["gender:female"])
62
+ datadog_client.distribution('album.photo.count', 26, tags=["color:blue"])
63
+ datadog_client.set('visitors.uniques', 999, tags=["browser:ie"])
64
+ datadog_client.service_check('svc.check_name', datadog_client.WARNING)
65
+ datadog_client.timing("query.response.time", 1234)
66
+
67
+ # Use timed decorator
68
+ @datadog_client.timed('run_fn')
69
+ def run_fn():
70
+ pass
71
+
72
+ run_fn()
73
+
74
+ @job
75
+ def job_for_datadog_op() -> None:
76
+ datadog_op()
77
+
78
+ job_for_datadog_op.execute_in_process(
79
+ resources={"datadog_resource": DatadogResource(api_key="FOO", app_key="BAR")}
80
+ )
81
+
82
+ """
83
+
84
+ api_key: str = Field(
85
+ description=(
86
+ "Datadog API key. See https://docs.datadoghq.com/account_management/api-app-keys/"
87
+ )
88
+ )
89
+ app_key: str = Field(
90
+ description=(
91
+ "Datadog application key. See"
92
+ " https://docs.datadoghq.com/account_management/api-app-keys/."
93
+ )
94
+ )
95
+
96
+ @classmethod
97
+ def _is_dagster_maintained(cls) -> bool:
98
+ return True
99
+
100
+ def get_client(self) -> DatadogClient:
101
+ return DatadogClient(self.api_key, self.app_key)
102
+
103
+
104
+ @beta
105
+ @dagster_maintained_resource
106
+ @resource(
107
+ config_schema=DatadogResource.to_config_schema(),
108
+ description="This resource is for publishing to DataDog",
109
+ )
110
+ def datadog_resource(context) -> DatadogClient:
111
+ """This legacy resource is a thin wrapper over the
112
+ `dogstatsd library <https://datadogpy.readthedocs.io/en/latest/>`_.
113
+
114
+ Prefer using :py:class:`DatadogResource`.
115
+
116
+ As such, we directly mirror the public API methods of DogStatsd here; you can refer to the
117
+ `DataDog documentation <https://docs.datadoghq.com/developers/dogstatsd/>`_ for how to use this
118
+ resource.
119
+
120
+ Examples:
121
+ .. code-block:: python
122
+
123
+ @op(required_resource_keys={'datadog'})
124
+ def datadog_op(context):
125
+ dd = context.resources.datadog
126
+
127
+ dd.event('Man down!', 'This server needs assistance.')
128
+ dd.gauge('users.online', 1001, tags=["protocol:http"])
129
+ dd.increment('page.views')
130
+ dd.decrement('page.views')
131
+ dd.histogram('album.photo.count', 26, tags=["gender:female"])
132
+ dd.distribution('album.photo.count', 26, tags=["color:blue"])
133
+ dd.set('visitors.uniques', 999, tags=["browser:ie"])
134
+ dd.service_check('svc.check_name', dd.WARNING)
135
+ dd.timing("query.response.time", 1234)
136
+
137
+ # Use timed decorator
138
+ @dd.timed('run_fn')
139
+ def run_fn():
140
+ pass
141
+
142
+ run_fn()
143
+
144
+ @job(resource_defs={'datadog': datadog_resource})
145
+ def dd_job():
146
+ datadog_op()
147
+
148
+ result = dd_job.execute_in_process(
149
+ run_config={'resources': {'datadog': {'config': {'api_key': 'YOUR_KEY', 'app_key': 'YOUR_KEY'}}}}
150
+ )
151
+
152
+ """
153
+ return DatadogResource.from_resource_context(context).get_client()
@@ -0,0 +1 @@
1
+ __version__ = "0.28.4"
@@ -0,0 +1,27 @@
1
+ Metadata-Version: 2.4
2
+ Name: dagster-datadog
3
+ Version: 0.28.4
4
+ Summary: Package for datadog Dagster framework components.
5
+ Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-datadog
6
+ Author: Dagster Labs
7
+ Author-email: hello@dagsterlabs.com
8
+ License: Apache-2.0
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: License :: OSI Approved :: Apache Software License
14
+ Classifier: Operating System :: OS Independent
15
+ Requires-Python: >=3.10,<3.14
16
+ License-File: LICENSE
17
+ Requires-Dist: dagster==1.12.4
18
+ Requires-Dist: datadog
19
+ Dynamic: author
20
+ Dynamic: author-email
21
+ Dynamic: classifier
22
+ Dynamic: home-page
23
+ Dynamic: license
24
+ Dynamic: license-file
25
+ Dynamic: requires-dist
26
+ Dynamic: requires-python
27
+ Dynamic: summary
@@ -4,6 +4,7 @@ README.md
4
4
  setup.cfg
5
5
  setup.py
6
6
  dagster_datadog/__init__.py
7
+ dagster_datadog/py.typed
7
8
  dagster_datadog/resources.py
8
9
  dagster_datadog/version.py
9
10
  dagster_datadog.egg-info/PKG-INFO
@@ -11,7 +12,4 @@ dagster_datadog.egg-info/SOURCES.txt
11
12
  dagster_datadog.egg-info/dependency_links.txt
12
13
  dagster_datadog.egg-info/not-zip-safe
13
14
  dagster_datadog.egg-info/requires.txt
14
- dagster_datadog.egg-info/top_level.txt
15
- dagster_datadog_tests/__init__.py
16
- dagster_datadog_tests/test_resources.py
17
- dagster_datadog_tests/test_version.py
15
+ dagster_datadog.egg-info/top_level.txt
@@ -0,0 +1,2 @@
1
+ dagster==1.12.4
2
+ datadog
@@ -0,0 +1 @@
1
+ dagster_datadog
@@ -0,0 +1,40 @@
1
+ from pathlib import Path
2
+
3
+ from setuptools import find_packages, setup
4
+
5
+
6
+ def get_version() -> str:
7
+ version: dict[str, str] = {}
8
+ with open(Path(__file__).parent / "dagster_datadog/version.py", encoding="utf8") as fp:
9
+ exec(fp.read(), version)
10
+
11
+ return version["__version__"]
12
+
13
+
14
+ ver = get_version()
15
+ # dont pin dev installs to avoid pip dep resolver issues
16
+ pin = "" if ver == "1!0+dev" else f"=={ver}"
17
+ setup(
18
+ name="dagster-datadog",
19
+ version=ver,
20
+ author="Dagster Labs",
21
+ author_email="hello@dagsterlabs.com",
22
+ license="Apache-2.0",
23
+ description="Package for datadog Dagster framework components.",
24
+ url=(
25
+ "https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-datadog"
26
+ ),
27
+ classifiers=[
28
+ "Programming Language :: Python :: 3.10",
29
+ "Programming Language :: Python :: 3.11",
30
+ "Programming Language :: Python :: 3.12",
31
+ "Programming Language :: Python :: 3.13",
32
+ "License :: OSI Approved :: Apache Software License",
33
+ "Operating System :: OS Independent",
34
+ ],
35
+ packages=find_packages(exclude=["dagster_datadog_tests*"]),
36
+ include_package_data=True,
37
+ python_requires=">=3.10,<3.14",
38
+ install_requires=["dagster==1.12.4", "datadog"],
39
+ zip_safe=False,
40
+ )
@@ -1,18 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: dagster-datadog
3
- Version: 0.11.13rc3
4
- Summary: Package for datadog Dagster framework components.
5
- Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-datadog
6
- Author: Elementl
7
- Author-email: hello@elementl.com
8
- License: Apache-2.0
9
- Platform: UNKNOWN
10
- Classifier: Programming Language :: Python :: 3.6
11
- Classifier: Programming Language :: Python :: 3.7
12
- Classifier: Programming Language :: Python :: 3.8
13
- Classifier: License :: OSI Approved :: Apache Software License
14
- Classifier: Operating System :: OS Independent
15
- License-File: LICENSE
16
-
17
- UNKNOWN
18
-
@@ -1,4 +0,0 @@
1
- # dagster-datadog
2
-
3
- The docs for `dagster-datadog` can be found
4
- [here](https://docs.dagster.io/_apidocs/libraries/dagster-datadog).
@@ -1,8 +0,0 @@
1
- from dagster.core.utils import check_dagster_package_version
2
-
3
- from .resources import datadog_resource
4
- from .version import __version__
5
-
6
- check_dagster_package_version("dagster-datadog", __version__)
7
-
8
- __all__ = ["datadog_resource"]
@@ -1,85 +0,0 @@
1
- from dagster import Field, StringSource, resource
2
- from datadog import DogStatsd, initialize, statsd
3
-
4
-
5
- class DataDogResource:
6
- # Mirroring levels from the dogstatsd library
7
- OK, WARNING, CRITICAL, UNKNOWN = (
8
- DogStatsd.OK,
9
- DogStatsd.WARNING,
10
- DogStatsd.CRITICAL,
11
- DogStatsd.UNKNOWN,
12
- )
13
-
14
- def __init__(self, api_key, app_key):
15
- initialize(api_key=api_key, app_key=app_key)
16
-
17
- # Pull in methods from the dogstatsd library
18
- for method in [
19
- "event",
20
- "gauge",
21
- "increment",
22
- "decrement",
23
- "histogram",
24
- "distribution",
25
- "set",
26
- "service_check",
27
- "timed",
28
- "timing",
29
- ]:
30
- setattr(self, method, getattr(statsd, method))
31
-
32
-
33
- @resource(
34
- {
35
- "api_key": Field(StringSource, description="Datadog API key"),
36
- "app_key": Field(StringSource, description="Datadog application key"),
37
- },
38
- description="This resource is for publishing to DataDog",
39
- )
40
- def datadog_resource(context):
41
- """This resource is a thin wrapper over the
42
- `dogstatsd library <https://datadogpy.readthedocs.io/en/latest/>`_.
43
-
44
- As such, we directly mirror the public API methods of DogStatsd here; you can refer to the
45
- `DataDog documentation <https://docs.datadoghq.com/developers/dogstatsd/>`_ for how to use this
46
- resource.
47
-
48
- Examples:
49
-
50
- .. code-block:: python
51
-
52
- @solid(required_resource_keys={'datadog'})
53
- def datadog_solid(context):
54
- dd = context.resources.datadog
55
-
56
- dd.event('Man down!', 'This server needs assistance.')
57
- dd.gauge('users.online', 1001, tags=["protocol:http"])
58
- dd.increment('page.views')
59
- dd.decrement('page.views')
60
- dd.histogram('album.photo.count', 26, tags=["gender:female"])
61
- dd.distribution('album.photo.count', 26, tags=["color:blue"])
62
- dd.set('visitors.uniques', 999, tags=["browser:ie"])
63
- dd.service_check('svc.check_name', dd.WARNING)
64
- dd.timing("query.response.time", 1234)
65
-
66
- # Use timed decorator
67
- @dd.timed('run_fn')
68
- def run_fn():
69
- pass
70
-
71
- run_fn()
72
-
73
- @pipeline(mode_defs=[ModeDefinition(resource_defs={'datadog': datadog_resource})])
74
- def dd_pipeline():
75
- datadog_solid()
76
-
77
- result = execute_pipeline(
78
- dd_pipeline,
79
- {'resources': {'datadog': {'config': {'api_key': 'YOUR_KEY', 'app_key': 'YOUR_KEY'}}}},
80
- )
81
-
82
- """
83
- return DataDogResource(
84
- context.resource_config.get("api_key"), context.resource_config.get("app_key")
85
- )
@@ -1 +0,0 @@
1
- __version__ = "0.11.13rc3"
@@ -1,18 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: dagster-datadog
3
- Version: 0.11.13rc3
4
- Summary: Package for datadog Dagster framework components.
5
- Home-page: https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-datadog
6
- Author: Elementl
7
- Author-email: hello@elementl.com
8
- License: Apache-2.0
9
- Platform: UNKNOWN
10
- Classifier: Programming Language :: Python :: 3.6
11
- Classifier: Programming Language :: Python :: 3.7
12
- Classifier: Programming Language :: Python :: 3.8
13
- Classifier: License :: OSI Approved :: Apache Software License
14
- Classifier: Operating System :: OS Independent
15
- License-File: LICENSE
16
-
17
- UNKNOWN
18
-
@@ -1,2 +0,0 @@
1
- dagster
2
- datadog
@@ -1,2 +0,0 @@
1
- dagster_datadog
2
- dagster_datadog_tests
@@ -1,78 +0,0 @@
1
- from unittest import mock
2
-
3
- from dagster import ModeDefinition, execute_solid, solid
4
- from dagster_datadog import datadog_resource
5
-
6
-
7
- @mock.patch("datadog.statsd.timing")
8
- @mock.patch("datadog.statsd.timed")
9
- @mock.patch("datadog.statsd.service_check")
10
- @mock.patch("datadog.statsd.set")
11
- @mock.patch("datadog.statsd.distribution")
12
- @mock.patch("datadog.statsd.histogram")
13
- @mock.patch("datadog.statsd.decrement")
14
- @mock.patch("datadog.statsd.increment")
15
- @mock.patch("datadog.statsd.gauge")
16
- @mock.patch("datadog.statsd.event")
17
- def test_datadog_resource(
18
- event,
19
- gauge,
20
- increment,
21
- decrement,
22
- histogram,
23
- distribution,
24
- statsd_set,
25
- service_check,
26
- timed,
27
- timing,
28
- ):
29
- @solid(required_resource_keys={"datadog"})
30
- def datadog_solid(context):
31
- assert context.resources.datadog
32
-
33
- # event
34
- context.resources.datadog.event("Man down!", "This server needs assistance.")
35
- event.assert_called_with("Man down!", "This server needs assistance.")
36
-
37
- # gauge
38
- context.resources.datadog.gauge("users.online", 1001, tags=["protocol:http"])
39
- gauge.assert_called_with("users.online", 1001, tags=["protocol:http"])
40
-
41
- # increment
42
- context.resources.datadog.increment("page.views")
43
- increment.assert_called_with("page.views")
44
-
45
- # decrement
46
- context.resources.datadog.decrement("page.views")
47
- decrement.assert_called_with("page.views")
48
-
49
- context.resources.datadog.histogram("album.photo.count", 26, tags=["gender:female"])
50
- histogram.assert_called_with("album.photo.count", 26, tags=["gender:female"])
51
-
52
- context.resources.datadog.distribution("album.photo.count", 26, tags=["color:blue"])
53
- distribution.assert_called_with("album.photo.count", 26, tags=["color:blue"])
54
-
55
- context.resources.datadog.set("visitors.uniques", 999, tags=["browser:ie"])
56
- statsd_set.assert_called_with("visitors.uniques", 999, tags=["browser:ie"])
57
-
58
- context.resources.datadog.service_check("svc.check_name", context.resources.datadog.WARNING)
59
- service_check.assert_called_with("svc.check_name", context.resources.datadog.WARNING)
60
-
61
- context.resources.datadog.timing("query.response.time", 1234)
62
- timing.assert_called_with("query.response.time", 1234)
63
-
64
- @context.resources.datadog.timed("run_fn")
65
- def run_fn():
66
- pass
67
-
68
- run_fn()
69
- timed.assert_called_with("run_fn")
70
-
71
- result = execute_solid(
72
- datadog_solid,
73
- run_config={
74
- "resources": {"datadog": {"config": {"api_key": "NOT_USED", "app_key": "NOT_USED"}}}
75
- },
76
- mode_def=ModeDefinition(resource_defs={"datadog": datadog_resource}),
77
- )
78
- assert result.success
@@ -1,5 +0,0 @@
1
- from dagster_datadog.version import __version__
2
-
3
-
4
- def test_version():
5
- assert __version__
@@ -1,33 +0,0 @@
1
- from typing import Dict
2
-
3
- from setuptools import find_packages, setup # type: ignore
4
-
5
-
6
- def get_version() -> str:
7
- version: Dict[str, str] = {}
8
- with open("dagster_datadog/version.py") as fp:
9
- exec(fp.read(), version) # pylint: disable=W0122
10
-
11
- return version["__version__"]
12
-
13
-
14
- if __name__ == "__main__":
15
- setup(
16
- name="dagster-datadog",
17
- version=get_version(),
18
- author="Elementl",
19
- author_email="hello@elementl.com",
20
- license="Apache-2.0",
21
- description="Package for datadog Dagster framework components.",
22
- url="https://github.com/dagster-io/dagster/tree/master/python_modules/libraries/dagster-datadog",
23
- classifiers=[
24
- "Programming Language :: Python :: 3.6",
25
- "Programming Language :: Python :: 3.7",
26
- "Programming Language :: Python :: 3.8",
27
- "License :: OSI Approved :: Apache Software License",
28
- "Operating System :: OS Independent",
29
- ],
30
- packages=find_packages(exclude=["test"]),
31
- install_requires=["dagster", "datadog"],
32
- zip_safe=False,
33
- )