pyxecm 1.6__tar.gz → 2.0.0__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.

Potentially problematic release.


This version of pyxecm might be problematic. Click here for more details.

Files changed (80) hide show
  1. pyxecm-2.0.0/PKG-INFO +145 -0
  2. pyxecm-2.0.0/README.md +92 -0
  3. pyxecm-2.0.0/pyproject.toml +125 -0
  4. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/__init__.py +6 -4
  5. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/avts.py +673 -246
  6. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/coreshare.py +686 -467
  7. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/customizer/__init__.py +16 -4
  8. pyxecm-2.0.0/pyxecm/customizer/__main__.py +58 -0
  9. pyxecm-2.0.0/pyxecm/customizer/api/__init__.py +5 -0
  10. pyxecm-2.0.0/pyxecm/customizer/api/__main__.py +6 -0
  11. pyxecm-2.0.0/pyxecm/customizer/api/app.py +914 -0
  12. pyxecm-2.0.0/pyxecm/customizer/api/auth.py +154 -0
  13. pyxecm-2.0.0/pyxecm/customizer/api/metrics.py +92 -0
  14. pyxecm-2.0.0/pyxecm/customizer/api/models.py +13 -0
  15. pyxecm-2.0.0/pyxecm/customizer/api/payload_list.py +865 -0
  16. pyxecm-2.0.0/pyxecm/customizer/api/settings.py +103 -0
  17. pyxecm-2.0.0/pyxecm/customizer/browser_automation.py +690 -0
  18. pyxecm-2.0.0/pyxecm/customizer/customizer.py +2122 -0
  19. pyxecm-2.0.0/pyxecm/customizer/exceptions.py +35 -0
  20. pyxecm-2.0.0/pyxecm/customizer/guidewire.py +322 -0
  21. pyxecm-2.0.0/pyxecm/customizer/k8s.py +1377 -0
  22. pyxecm-2.0.0/pyxecm/customizer/log.py +107 -0
  23. pyxecm-2.0.0/pyxecm/customizer/m365.py +5745 -0
  24. pyxecm-2.0.0/pyxecm/customizer/nhc.py +1169 -0
  25. pyxecm-2.0.0/pyxecm/customizer/openapi.py +258 -0
  26. pyxecm-2.0.0/pyxecm/customizer/payload.py +28401 -0
  27. pyxecm-2.0.0/pyxecm/customizer/pht.py +1340 -0
  28. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/customizer/salesforce.py +516 -342
  29. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/customizer/sap.py +58 -41
  30. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/customizer/servicenow.py +593 -371
  31. pyxecm-2.0.0/pyxecm/customizer/settings.py +442 -0
  32. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/customizer/successfactors.py +408 -346
  33. pyxecm-2.0.0/pyxecm/customizer/translate.py +167 -0
  34. pyxecm-2.0.0/pyxecm/helper/__init__.py +9 -0
  35. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/helper/assoc.py +83 -43
  36. pyxecm-2.0.0/pyxecm/helper/data.py +3267 -0
  37. pyxecm-2.0.0/pyxecm/helper/logadapter.py +27 -0
  38. pyxecm-2.0.0/pyxecm/helper/web.py +412 -0
  39. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/helper/xml.py +527 -171
  40. pyxecm-2.0.0/pyxecm/maintenance_page/__init__.py +5 -0
  41. pyxecm-2.0.0/pyxecm/maintenance_page/__main__.py +6 -0
  42. pyxecm-2.0.0/pyxecm/maintenance_page/app.py +51 -0
  43. pyxecm-2.0.0/pyxecm/maintenance_page/settings.py +28 -0
  44. pyxecm-2.0.0/pyxecm/maintenance_page/static/favicon.avif +0 -0
  45. pyxecm-2.0.0/pyxecm/maintenance_page/templates/maintenance.html +165 -0
  46. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/otac.py +234 -140
  47. pyxecm-2.0.0/pyxecm/otawp.py +2689 -0
  48. pyxecm-2.0.0/pyxecm/otcs.py +15363 -0
  49. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm/otds.py +2150 -919
  50. pyxecm-2.0.0/pyxecm/otiv.py +81 -0
  51. pyxecm-2.0.0/pyxecm/otmm.py +1875 -0
  52. pyxecm-2.0.0/pyxecm/otpd.py +484 -0
  53. pyxecm-2.0.0/pyxecm.egg-info/PKG-INFO +145 -0
  54. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm.egg-info/SOURCES.txt +23 -1
  55. pyxecm-2.0.0/pyxecm.egg-info/requires.txt +39 -0
  56. {pyxecm-1.6 → pyxecm-2.0.0}/setup.py +1 -1
  57. pyxecm-1.6/PKG-INFO +0 -53
  58. pyxecm-1.6/README.md +0 -19
  59. pyxecm-1.6/pyproject.toml +0 -31
  60. pyxecm-1.6/pyxecm/customizer/browser_automation.py +0 -497
  61. pyxecm-1.6/pyxecm/customizer/customizer.py +0 -2245
  62. pyxecm-1.6/pyxecm/customizer/k8s.py +0 -1042
  63. pyxecm-1.6/pyxecm/customizer/m365.py +0 -3787
  64. pyxecm-1.6/pyxecm/customizer/payload.py +0 -19051
  65. pyxecm-1.6/pyxecm/customizer/pht.py +0 -926
  66. pyxecm-1.6/pyxecm/customizer/translate.py +0 -132
  67. pyxecm-1.6/pyxecm/helper/__init__.py +0 -6
  68. pyxecm-1.6/pyxecm/helper/data.py +0 -1731
  69. pyxecm-1.6/pyxecm/helper/web.py +0 -284
  70. pyxecm-1.6/pyxecm/otawp.py +0 -1810
  71. pyxecm-1.6/pyxecm/otcs.py +0 -10808
  72. pyxecm-1.6/pyxecm/otiv.py +0 -66
  73. pyxecm-1.6/pyxecm/otmm.py +0 -928
  74. pyxecm-1.6/pyxecm/otpd.py +0 -380
  75. pyxecm-1.6/pyxecm.egg-info/PKG-INFO +0 -53
  76. pyxecm-1.6/pyxecm.egg-info/requires.txt +0 -18
  77. {pyxecm-1.6 → pyxecm-2.0.0}/LICENSE +0 -0
  78. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm.egg-info/dependency_links.txt +0 -0
  79. {pyxecm-1.6 → pyxecm-2.0.0}/pyxecm.egg-info/top_level.txt +0 -0
  80. {pyxecm-1.6 → pyxecm-2.0.0}/setup.cfg +0 -0
pyxecm-2.0.0/PKG-INFO ADDED
@@ -0,0 +1,145 @@
1
+ Metadata-Version: 2.4
2
+ Name: pyxecm
3
+ Version: 2.0.0
4
+ Summary: A Python library to interact with Opentext Extended ECM REST API
5
+ Author-email: Kai Gatzweiler <kgatzweiler@opentext.com>, "Dr. Marc Diefenbruch" <mdiefenb@opentext.com>
6
+ Project-URL: Homepage, https://github.com/opentext/pyxecm
7
+ Keywords: opentext,extendedecm,contentserver,otds,appworks,archivecenter
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System
14
+ Requires-Python: >=3.10
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: requests<3
18
+ Requires-Dist: requests_toolbelt
19
+ Requires-Dist: setuptools
20
+ Requires-Dist: kubernetes
21
+ Requires-Dist: zipfile36
22
+ Requires-Dist: suds
23
+ Requires-Dist: python-hcl2
24
+ Requires-Dist: xmltodict
25
+ Requires-Dist: lxml
26
+ Requires-Dist: openpyxl
27
+ Requires-Dist: pandas
28
+ Requires-Dist: python-magic
29
+ Requires-Dist: websockets
30
+ Requires-Dist: pydantic-settings
31
+ Requires-Dist: fastapi
32
+ Requires-Dist: uvicorn
33
+ Requires-Dist: python-multipart
34
+ Requires-Dist: aiofiles
35
+ Requires-Dist: asyncio
36
+ Requires-Dist: jinja2
37
+ Requires-Dist: prometheus-fastapi-instrumentator
38
+ Provides-Extra: browserautomation
39
+ Requires-Dist: selenium; extra == "browserautomation"
40
+ Requires-Dist: chromedriver_autoinstaller; extra == "browserautomation"
41
+ Provides-Extra: dataloader
42
+ Requires-Dist: pandas; extra == "dataloader"
43
+ Requires-Dist: pyyaml; extra == "dataloader"
44
+ Requires-Dist: python-hcl2; extra == "dataloader"
45
+ Requires-Dist: tropycal; extra == "dataloader"
46
+ Requires-Dist: shapely; extra == "dataloader"
47
+ Requires-Dist: cartopy; extra == "dataloader"
48
+ Provides-Extra: sap
49
+ Requires-Dist: pyrfc==2.8.3; extra == "sap"
50
+ Provides-Extra: profiling
51
+ Requires-Dist: pyinstrument; extra == "profiling"
52
+ Dynamic: license-file
53
+
54
+ # PYXECM
55
+
56
+ A python library to interact with Opentext Extended ECM REST API.
57
+ The product API documentation is available on [OpenText Developer](https://developer.opentext.com/ce/products/extendedecm)
58
+ Detailed documentation of this package is available [here](https://opentext.github.io/pyxecm/).
59
+
60
+ # Quick start
61
+
62
+ Install pyxecm with the desired extras into your python environment, extra options are:
63
+
64
+ - browserautomation
65
+ - dataloader
66
+ - sap
67
+
68
+ ```bash
69
+ pip install pyxecm
70
+ ```
71
+
72
+ ## Start using the Customizer
73
+
74
+ Create an `.env` file as described here: [sample-environment-variables](customizerapisettings/#sample-environment-variables)
75
+
76
+ ```bash
77
+ python -m pyxecm.customizer.api
78
+ ```
79
+
80
+ ??? example "Sample Output"
81
+ ```console
82
+ INFO: Started server process [93861]
83
+ INFO: Waiting for application startup.
84
+ 31-Mar-2025 12:49:53 INFO [CustomizerAPI] [MainThread] Starting maintenance_page thread...
85
+ 31-Mar-2025 12:49:53 INFO [CustomizerAPI] [MainThread] Starting processing thread...
86
+ 31-Mar-2025 12:49:53 INFO [CustomizerAPI.payload_list] [customization_run_api] Starting 'Scheduler' thread for payload list processing...
87
+ INFO: Application startup complete.
88
+ 31-Mar-2025 12:49:53 INFO [CustomizerAPI.payload_list] [customization_run_api] Waiting for thread -> 'Scheduler' to complete...
89
+ INFO: Started server process [93861]
90
+ INFO: Waiting for application startup.
91
+ INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
92
+ INFO: Application startup complete.
93
+ INFO: Uvicorn running on http://0.0.0.0:5555 (Press CTRL+C to quit)
94
+ ```
95
+
96
+ Access the Customizer API at [http://localhost:8000/api](http://localhost:8000/api)
97
+
98
+
99
+ ## Start using the package libraries
100
+ ```python
101
+ from pyxecm import OTCS
102
+
103
+ otcs_object = OTCS(
104
+ protocol="https",
105
+ hostname="otcs.domain.tld",
106
+ port="443",
107
+ public_url="otcs.domain.tld",
108
+ username="admin",
109
+ password="********",
110
+ base_path="/cs/llisapi.dll",
111
+ )
112
+
113
+ otcs_object.authenticate()
114
+
115
+ nodes = otcs_object.get_subnodes(2000)
116
+
117
+ for node in nodes["results"]:
118
+ print(node["data"]["properties"]["id"], node["data"]["properties"]["name"])
119
+ ```
120
+ ??? example "Sample Output"
121
+ ```console
122
+ 13050 Administration
123
+ 13064 Case Management
124
+ 18565 Contract Management
125
+ 18599 Customer Support
126
+ 18536 Engineering & Construction
127
+ 13107 Enterprise Asset Management
128
+ 18632 Human Resources
129
+ 6554 Inbox Folders
130
+ ```
131
+
132
+ # Disclaimer
133
+
134
+ !!! quote ""
135
+ Copyright © 2025 Open Text Corporation, All Rights Reserved.
136
+ The above copyright notice and this permission notice shall be included in all
137
+ copies or substantial portions of the Software.
138
+
139
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
140
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
141
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
142
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
143
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
144
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
145
+ SOFTWARE.
pyxecm-2.0.0/README.md ADDED
@@ -0,0 +1,92 @@
1
+ # PYXECM
2
+
3
+ A python library to interact with Opentext Extended ECM REST API.
4
+ The product API documentation is available on [OpenText Developer](https://developer.opentext.com/ce/products/extendedecm)
5
+ Detailed documentation of this package is available [here](https://opentext.github.io/pyxecm/).
6
+
7
+ # Quick start
8
+
9
+ Install pyxecm with the desired extras into your python environment, extra options are:
10
+
11
+ - browserautomation
12
+ - dataloader
13
+ - sap
14
+
15
+ ```bash
16
+ pip install pyxecm
17
+ ```
18
+
19
+ ## Start using the Customizer
20
+
21
+ Create an `.env` file as described here: [sample-environment-variables](customizerapisettings/#sample-environment-variables)
22
+
23
+ ```bash
24
+ python -m pyxecm.customizer.api
25
+ ```
26
+
27
+ ??? example "Sample Output"
28
+ ```console
29
+ INFO: Started server process [93861]
30
+ INFO: Waiting for application startup.
31
+ 31-Mar-2025 12:49:53 INFO [CustomizerAPI] [MainThread] Starting maintenance_page thread...
32
+ 31-Mar-2025 12:49:53 INFO [CustomizerAPI] [MainThread] Starting processing thread...
33
+ 31-Mar-2025 12:49:53 INFO [CustomizerAPI.payload_list] [customization_run_api] Starting 'Scheduler' thread for payload list processing...
34
+ INFO: Application startup complete.
35
+ 31-Mar-2025 12:49:53 INFO [CustomizerAPI.payload_list] [customization_run_api] Waiting for thread -> 'Scheduler' to complete...
36
+ INFO: Started server process [93861]
37
+ INFO: Waiting for application startup.
38
+ INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
39
+ INFO: Application startup complete.
40
+ INFO: Uvicorn running on http://0.0.0.0:5555 (Press CTRL+C to quit)
41
+ ```
42
+
43
+ Access the Customizer API at [http://localhost:8000/api](http://localhost:8000/api)
44
+
45
+
46
+ ## Start using the package libraries
47
+ ```python
48
+ from pyxecm import OTCS
49
+
50
+ otcs_object = OTCS(
51
+ protocol="https",
52
+ hostname="otcs.domain.tld",
53
+ port="443",
54
+ public_url="otcs.domain.tld",
55
+ username="admin",
56
+ password="********",
57
+ base_path="/cs/llisapi.dll",
58
+ )
59
+
60
+ otcs_object.authenticate()
61
+
62
+ nodes = otcs_object.get_subnodes(2000)
63
+
64
+ for node in nodes["results"]:
65
+ print(node["data"]["properties"]["id"], node["data"]["properties"]["name"])
66
+ ```
67
+ ??? example "Sample Output"
68
+ ```console
69
+ 13050 Administration
70
+ 13064 Case Management
71
+ 18565 Contract Management
72
+ 18599 Customer Support
73
+ 18536 Engineering & Construction
74
+ 13107 Enterprise Asset Management
75
+ 18632 Human Resources
76
+ 6554 Inbox Folders
77
+ ```
78
+
79
+ # Disclaimer
80
+
81
+ !!! quote ""
82
+ Copyright © 2025 Open Text Corporation, All Rights Reserved.
83
+ The above copyright notice and this permission notice shall be included in all
84
+ copies or substantial portions of the Software.
85
+
86
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
87
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
88
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
89
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
90
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
91
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
92
+ SOFTWARE.
@@ -0,0 +1,125 @@
1
+ [build-system]
2
+ build-backend = 'setuptools.build_meta'
3
+ requires = ['setuptools >= 61.0']
4
+
5
+ [project]
6
+ classifiers = [
7
+ 'Development Status :: 4 - Beta',
8
+ 'Programming Language :: Python :: 3',
9
+ 'License :: OSI Approved :: Apache Software License',
10
+ 'Operating System :: OS Independent',
11
+ 'Intended Audience :: Developers',
12
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management System',
13
+ ]
14
+ dependencies = [
15
+ 'requests < 3',
16
+ 'requests_toolbelt',
17
+ 'setuptools',
18
+ 'kubernetes',
19
+ 'zipfile36',
20
+ 'suds',
21
+ 'python-hcl2',
22
+ 'xmltodict',
23
+ 'lxml',
24
+ 'openpyxl',
25
+ 'pandas',
26
+ 'python-magic',
27
+ 'websockets',
28
+ 'pydantic-settings',
29
+ 'fastapi',
30
+ 'uvicorn',
31
+ 'python-multipart',
32
+ 'aiofiles',
33
+ 'asyncio',
34
+ 'jinja2',
35
+ 'prometheus-fastapi-instrumentator'
36
+ ]
37
+ description = 'A Python library to interact with Opentext Extended ECM REST API'
38
+ keywords = [
39
+ 'opentext',
40
+ 'extendedecm',
41
+ 'contentserver',
42
+ 'otds',
43
+ 'appworks',
44
+ 'archivecenter',
45
+ ]
46
+ name = 'pyxecm'
47
+ readme = 'README.md'
48
+ requires-python = '>=3.10'
49
+ version = "2.0.0"
50
+
51
+ [[project.authors]]
52
+ email = 'kgatzweiler@opentext.com'
53
+ name = 'Kai Gatzweiler'
54
+
55
+ [[project.authors]]
56
+ email = 'mdiefenb@opentext.com'
57
+ name = 'Dr. Marc Diefenbruch'
58
+
59
+ [project.optional-dependencies]
60
+ browserautomation = ['selenium', 'chromedriver_autoinstaller']
61
+ dataloader = [
62
+ 'pandas',
63
+ 'pyyaml',
64
+ 'python-hcl2',
65
+ 'tropycal',
66
+ 'shapely',
67
+ 'cartopy',
68
+ ]
69
+ sap = ['pyrfc==2.8.3']
70
+ profiling = [
71
+ 'pyinstrument',
72
+ ]
73
+
74
+ [project.urls]
75
+ Homepage = 'https://github.com/opentext/pyxecm'
76
+
77
+ [tool]
78
+ [tool.setuptools]
79
+ packages = [
80
+ 'pyxecm',
81
+ 'pyxecm.customizer',
82
+ 'pyxecm.customizer.api',
83
+ 'pyxecm.maintenance_page',
84
+ 'pyxecm.maintenance_page.templates',
85
+ 'pyxecm.maintenance_page.static',
86
+ 'pyxecm.helper',
87
+ ]
88
+
89
+ [tool.setuptools.package-data]
90
+ 'pyxecm.maintenance_page.templates' = ['*']
91
+ 'pyxecm.maintenance_page.static' = ['*']
92
+
93
+ [tool.ruff.lint]
94
+ # https://docs.astral.sh/ruff/rules/
95
+ select = ["ALL"]
96
+
97
+ # E4: Enforces Python-specific formatting and style rules, often related to imports and code layout (e.g., E402, module-level import not at top of file).
98
+ # E7: Relates to errors in Python syntax or usage, such as invalid expressions.
99
+ # E9: Catches Python runtime errors (e.g., undefined variables, unsupported operations).
100
+ # F: Stands for "Flake8" rules, which include a broad range of Python style and error checks (e.g., unused imports, undefined variables, etc.).
101
+ # FIX: Selects rules that Ruff can automatically fix (e.g., applying auto-corrections for code style violations).
102
+ # I: Relates to "Import" rules, which enforce best practices for managing Python imports (e.g., sorting imports, unused imports, etc.).
103
+ # UP032: Prevents Ruff from converting .format() calls to f-strings.
104
+ # D204 and D205: Prevents Ruff from enforcing changes to empty lines after docstrings.
105
+
106
+ ignore = ["FIX002", "TD002", "TD003", "BLE001", "ERA001", "S105", "S106", "S107", "S113", "S311", "S314", "S603", "S608", "RUF005", "RUF012", "E501", "PERF203", "UP038", "PLW2901", "PD002", "PD901", "UP032", "D202", "D203", "D213", "PLR0911", "PLR0912", "PLR0913", "PLR0915", "PLR2004", "PTH", "PTH123", "PTH103", "PTH104", "PTH107", "PTH110", "PTH112", "PTH113", "PTH118", "PTH119", "PTH120", "PTH122", "FBT001", "FBT002", "RET504", "RET505", "C901", "B019", "TRY400", "COM812"]
107
+ fixable = ["ALL"]
108
+ unfixable = []
109
+
110
+ [dependency-groups]
111
+ dev = [
112
+ 'pdoc3',
113
+ 'mkdocs',
114
+ 'mkdocstrings[python]',
115
+ 'mkdocs-material',
116
+ 'mkdocs-git-revision-date-localized-plugin',
117
+ 'pymdown-extensions',
118
+ "ruff",
119
+ 'python-decouple',
120
+ 'settings-doc',
121
+ ]
122
+
123
+ [tool.ruff]
124
+ line-length = 120
125
+ exclude = []
@@ -1,11 +1,13 @@
1
1
  """pyxecm - A python library to interact with Opentext Extended ECM REST API."""
2
2
 
3
+ from .avts import AVTS
4
+ from .coreshare import CoreShare
3
5
  from .otac import OTAC
6
+ from .otawp import OTAWP
4
7
  from .otcs import OTCS
5
8
  from .otds import OTDS
6
9
  from .otiv import OTIV
7
- from .otpd import OTPD
8
10
  from .otmm import OTMM
9
- from .otawp import OTAWP
10
- from .avts import AVTS
11
- from .coreshare import CoreShare
11
+ from .otpd import OTPD
12
+
13
+ __all__ = ["AVTS", "OTAC", "OTAWP", "OTCS", "OTDS", "OTIV", "OTMM", "OTPD", "CoreShare"]