osism 0.20250804.0__tar.gz → 0.20250824.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.
Files changed (151) hide show
  1. {osism-0.20250804.0 → osism-0.20250824.0}/.flake8 +1 -1
  2. {osism-0.20250804.0 → osism-0.20250824.0}/.github/workflows/publish.yml +1 -1
  3. {osism-0.20250804.0 → osism-0.20250824.0}/.zuul.yaml +35 -5
  4. osism-0.20250824.0/AUTHORS +1 -0
  5. osism-0.20250824.0/ChangeLog +7 -0
  6. {osism-0.20250804.0 → osism-0.20250824.0}/Containerfile +1 -1
  7. {osism-0.20250804.0 → osism-0.20250824.0}/Dockerfile +1 -1
  8. {osism-0.20250804.0/osism.egg-info → osism-0.20250824.0}/PKG-INFO +7 -6
  9. {osism-0.20250804.0 → osism-0.20250824.0}/Pipfile +5 -5
  10. {osism-0.20250804.0 → osism-0.20250824.0}/Pipfile.lock +403 -376
  11. {osism-0.20250804.0 → osism-0.20250824.0}/files/sonic/config_db.json +5 -0
  12. osism-0.20250824.0/frontend/.dockerignore +9 -0
  13. osism-0.20250824.0/frontend/.gitignore +41 -0
  14. osism-0.20250824.0/frontend/Containerfile +35 -0
  15. osism-0.20250824.0/frontend/Dockerfile +35 -0
  16. osism-0.20250824.0/frontend/app/api/config/route.ts +7 -0
  17. osism-0.20250824.0/frontend/app/api/health/route.ts +9 -0
  18. osism-0.20250824.0/frontend/app/components/ConnectionStatus.tsx +51 -0
  19. osism-0.20250824.0/frontend/app/components/EventsFilters.tsx +150 -0
  20. osism-0.20250824.0/frontend/app/components/EventsList.tsx +189 -0
  21. osism-0.20250824.0/frontend/app/events/page.tsx +197 -0
  22. osism-0.20250824.0/frontend/app/favicon.ico +0 -0
  23. osism-0.20250824.0/frontend/app/globals.css +19 -0
  24. osism-0.20250824.0/frontend/app/layout.tsx +68 -0
  25. osism-0.20250824.0/frontend/app/nodes/page.tsx +258 -0
  26. osism-0.20250824.0/frontend/app/page.tsx +121 -0
  27. osism-0.20250824.0/frontend/app/services/page.tsx +43 -0
  28. osism-0.20250824.0/frontend/components.json +17 -0
  29. osism-0.20250824.0/frontend/eslint.config.mjs +16 -0
  30. osism-0.20250824.0/frontend/lib/api.ts +52 -0
  31. osism-0.20250824.0/frontend/lib/hooks/useWebSocket.ts +209 -0
  32. osism-0.20250824.0/frontend/lib/types.ts +72 -0
  33. osism-0.20250824.0/frontend/lib/utils.ts +6 -0
  34. osism-0.20250824.0/frontend/next.config.ts +10 -0
  35. osism-0.20250824.0/frontend/package-lock.json +6415 -0
  36. osism-0.20250824.0/frontend/package.json +35 -0
  37. osism-0.20250824.0/frontend/postcss.config.mjs +9 -0
  38. osism-0.20250824.0/frontend/public/file.svg +1 -0
  39. osism-0.20250824.0/frontend/public/globe.svg +1 -0
  40. osism-0.20250824.0/frontend/public/next.svg +1 -0
  41. osism-0.20250824.0/frontend/public/vercel.svg +1 -0
  42. osism-0.20250824.0/frontend/public/window.svg +1 -0
  43. osism-0.20250824.0/frontend/tailwind.config.ts +18 -0
  44. osism-0.20250824.0/frontend/tsconfig.json +27 -0
  45. {osism-0.20250804.0 → osism-0.20250824.0}/osism/api.py +154 -2
  46. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/baremetal.py +168 -0
  47. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/netbox.py +2 -2
  48. osism-0.20250824.0/osism/services/event_bridge.py +304 -0
  49. {osism-0.20250804.0 → osism-0.20250824.0}/osism/services/listener.py +130 -19
  50. osism-0.20250824.0/osism/services/websocket_manager.py +271 -0
  51. {osism-0.20250804.0 → osism-0.20250824.0}/osism/settings.py +1 -1
  52. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/ironic.py +22 -17
  53. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/netbox.py +58 -1
  54. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/config_generator.py +341 -26
  55. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/connections.py +123 -0
  56. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/interface.py +3 -1
  57. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/openstack.py +35 -15
  58. {osism-0.20250804.0 → osism-0.20250824.0}/osism/utils/__init__.py +2 -2
  59. {osism-0.20250804.0 → osism-0.20250824.0/osism.egg-info}/PKG-INFO +7 -6
  60. {osism-0.20250804.0 → osism-0.20250824.0}/osism.egg-info/SOURCES.txt +35 -0
  61. {osism-0.20250804.0 → osism-0.20250824.0}/osism.egg-info/entry_points.txt +4 -0
  62. osism-0.20250824.0/osism.egg-info/pbr.json +1 -0
  63. {osism-0.20250804.0 → osism-0.20250824.0}/osism.egg-info/requires.txt +6 -5
  64. {osism-0.20250804.0 → osism-0.20250824.0}/playbooks/build.yml +9 -7
  65. osism-0.20250824.0/requirements.netbox-manager.txt +1 -0
  66. {osism-0.20250804.0 → osism-0.20250824.0}/requirements.txt +6 -5
  67. {osism-0.20250804.0 → osism-0.20250824.0}/requirements.yml +1 -1
  68. {osism-0.20250804.0 → osism-0.20250824.0}/setup.cfg +4 -0
  69. osism-0.20250804.0/AUTHORS +0 -1
  70. osism-0.20250804.0/ChangeLog +0 -7
  71. osism-0.20250804.0/osism.egg-info/pbr.json +0 -1
  72. osism-0.20250804.0/requirements.netbox-manager.txt +0 -1
  73. {osism-0.20250804.0 → osism-0.20250824.0}/.github/renovate.json +0 -0
  74. {osism-0.20250804.0 → osism-0.20250824.0}/.hadolint.yaml +0 -0
  75. {osism-0.20250804.0 → osism-0.20250824.0}/LICENSE +0 -0
  76. {osism-0.20250804.0 → osism-0.20250824.0}/README.md +0 -0
  77. {osism-0.20250804.0 → osism-0.20250824.0}/files/change.sh +0 -0
  78. {osism-0.20250804.0 → osism-0.20250824.0}/files/cleanup-ansible-collections.sh +0 -0
  79. {osism-0.20250804.0 → osism-0.20250824.0}/files/clustershell/clush.conf +0 -0
  80. {osism-0.20250804.0 → osism-0.20250824.0}/files/clustershell/groups.conf +0 -0
  81. {osism-0.20250804.0 → osism-0.20250824.0}/files/data/SCS-Spec.MandatoryFlavors.verbose.yaml +0 -0
  82. {osism-0.20250804.0 → osism-0.20250824.0}/files/netbox-manager/settings.toml +0 -0
  83. {osism-0.20250804.0 → osism-0.20250824.0}/files/redfishMockupCreate.py +0 -0
  84. {osism-0.20250804.0 → osism-0.20250824.0}/files/run-ansible-console.sh +0 -0
  85. {osism-0.20250804.0 → osism-0.20250824.0}/files/sonic/port_config/Accton-AS4625-54T.ini +0 -0
  86. {osism-0.20250804.0 → osism-0.20250824.0}/files/sonic/port_config/Accton-AS5835-54T.ini +0 -0
  87. {osism-0.20250804.0 → osism-0.20250824.0}/files/sonic/port_config/Accton-AS5835-54X.ini +0 -0
  88. {osism-0.20250804.0 → osism-0.20250824.0}/files/sonic/port_config/Accton-AS7326-56X.ini +0 -0
  89. {osism-0.20250804.0 → osism-0.20250824.0}/files/sonic/port_config/Accton-AS7726-32X.ini +0 -0
  90. {osism-0.20250804.0 → osism-0.20250824.0}/files/sonic/port_config/Accton-AS9716-32D.ini +0 -0
  91. {osism-0.20250804.0 → osism-0.20250824.0}/osism/__init__.py +0 -0
  92. {osism-0.20250804.0 → osism-0.20250824.0}/osism/__main__.py +0 -0
  93. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/__init__.py +0 -0
  94. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/apply.py +0 -0
  95. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/compose.py +0 -0
  96. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/compute.py +0 -0
  97. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/configuration.py +0 -0
  98. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/console.py +0 -0
  99. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/container.py +0 -0
  100. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/get.py +0 -0
  101. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/log.py +0 -0
  102. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/manage.py +0 -0
  103. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/noset.py +0 -0
  104. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/reconciler.py +0 -0
  105. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/redfish.py +0 -0
  106. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/server.py +0 -0
  107. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/service.py +0 -0
  108. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/set.py +0 -0
  109. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/sonic.py +0 -0
  110. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/status.py +0 -0
  111. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/sync.py +0 -0
  112. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/task.py +0 -0
  113. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/validate.py +0 -0
  114. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/vault.py +0 -0
  115. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/volume.py +0 -0
  116. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/wait.py +0 -0
  117. {osism-0.20250804.0 → osism-0.20250824.0}/osism/commands/worker.py +0 -0
  118. {osism-0.20250804.0 → osism-0.20250824.0}/osism/data/__init__.py +0 -0
  119. {osism-0.20250804.0 → osism-0.20250824.0}/osism/data/enums.py +0 -0
  120. {osism-0.20250804.0 → osism-0.20250824.0}/osism/data/playbooks.py +0 -0
  121. {osism-0.20250804.0 → osism-0.20250824.0}/osism/main.py +0 -0
  122. {osism-0.20250804.0 → osism-0.20250824.0}/osism/services/__init__.py +0 -0
  123. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/__init__.py +0 -0
  124. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/ansible.py +0 -0
  125. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/ceph.py +0 -0
  126. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/__init__.py +0 -0
  127. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/config.py +0 -0
  128. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/redfish.py +0 -0
  129. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/__init__.py +0 -0
  130. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/bgp.py +0 -0
  131. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/cache.py +0 -0
  132. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/constants.py +0 -0
  133. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/device.py +0 -0
  134. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/exporter.py +0 -0
  135. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/sonic/sync.py +0 -0
  136. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor/utils.py +0 -0
  137. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/conductor.py +0 -0
  138. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/kolla.py +0 -0
  139. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/kubernetes.py +0 -0
  140. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/netbox.py +0 -0
  141. {osism-0.20250804.0 → osism-0.20250824.0}/osism/tasks/reconciler.py +0 -0
  142. {osism-0.20250804.0 → osism-0.20250824.0}/osism/utils/ssh.py +0 -0
  143. {osism-0.20250804.0 → osism-0.20250824.0}/osism.egg-info/dependency_links.txt +0 -0
  144. {osism-0.20250804.0 → osism-0.20250824.0}/osism.egg-info/not-zip-safe +0 -0
  145. {osism-0.20250804.0 → osism-0.20250824.0}/osism.egg-info/top_level.txt +0 -0
  146. {osism-0.20250804.0 → osism-0.20250824.0}/playbooks/pre.yml +0 -0
  147. {osism-0.20250804.0 → osism-0.20250824.0}/playbooks/test-setup.yml +0 -0
  148. {osism-0.20250804.0 → osism-0.20250824.0}/requirements.ansible.txt +0 -0
  149. {osism-0.20250804.0 → osism-0.20250824.0}/requirements.openstack-flavor-manager.txt +0 -0
  150. {osism-0.20250804.0 → osism-0.20250824.0}/requirements.openstack-image-manager.txt +0 -0
  151. {osism-0.20250804.0 → osism-0.20250824.0}/setup.py +0 -0
@@ -5,4 +5,4 @@ exclude =
5
5
  files/disable
6
6
  files/generate
7
7
  files/import
8
- ignore = F841 W503 E721 E722
8
+ ignore = F841 W503 E721 E722 E226
@@ -16,7 +16,7 @@ jobs:
16
16
  - uses: actions/checkout@master
17
17
  - uses: actions/setup-python@v5
18
18
  with:
19
- python-version: 3.9
19
+ python-version: 3.13
20
20
  - run: >-
21
21
  python -m
22
22
  pip install
@@ -72,6 +72,10 @@
72
72
  name: semaphore-container-image-python-osism-push
73
73
  max: 1
74
74
 
75
+ - semaphore:
76
+ name: semaphore-container-image-python-osism-frontend-push
77
+ max: 1
78
+
75
79
  - job:
76
80
  name: container-image-python-osism-build
77
81
  pre-run: playbooks/pre.yml
@@ -80,6 +84,16 @@
80
84
  docker_namespace: osism
81
85
  docker_registry: osism.harbor.regio.digital
82
86
 
87
+ - job:
88
+ name: container-image-python-osism-frontend-build
89
+ pre-run: playbooks/pre.yml
90
+ run: playbooks/build.yml
91
+ vars:
92
+ docker_image: frontend
93
+ docker_namespace: osism
94
+ docker_registry: osism.harbor.regio.digital
95
+ repository: osism/osism
96
+
83
97
  - job:
84
98
  name: container-image-python-osism-push
85
99
  semaphores:
@@ -95,6 +109,22 @@
95
109
  - name: secret
96
110
  secret: SECRET_CONTAINER_IMAGE_PYTHON_OSISM
97
111
 
112
+ - job:
113
+ name: container-image-python-osism-frontend-push
114
+ semaphores:
115
+ - name: semaphore-container-image-python-osism-frontend-push
116
+ pre-run: playbooks/pre.yml
117
+ run: playbooks/build.yml
118
+ vars:
119
+ docker_image: frontend
120
+ docker_namespace: osism
121
+ docker_registry: osism.harbor.regio.digital
122
+ push_image: true
123
+ push_sbom: true
124
+ secrets:
125
+ - name: secret
126
+ secret: SECRET_CONTAINER_IMAGE_PYTHON_OSISM
127
+
98
128
  - job:
99
129
  name: python-osism-test-setup
100
130
  pre-run: playbooks/pre.yml
@@ -110,12 +140,8 @@
110
140
  - mypy
111
141
  - python-black
112
142
  - container-image-python-osism-build
143
+ - container-image-python-osism-frontend-build
113
144
  - python-osism-test-setup
114
- gate:
115
- jobs:
116
- - flake8
117
- - hadolint
118
- - python-black
119
145
  periodic-daily:
120
146
  jobs:
121
147
  - flake8
@@ -126,10 +152,14 @@
126
152
  periodic-midnight:
127
153
  jobs:
128
154
  - container-image-python-osism-push
155
+ - container-image-python-osism-frontend-push
129
156
  post:
130
157
  jobs:
131
158
  - container-image-python-osism-push:
132
159
  branches: main
160
+ - container-image-python-osism-frontend-push:
161
+ branches: main
133
162
  tag:
134
163
  jobs:
135
164
  - container-image-python-osism-push
165
+ - container-image-python-osism-frontend-push
@@ -0,0 +1 @@
1
+ renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
@@ -0,0 +1,7 @@
1
+ CHANGES
2
+ =======
3
+
4
+ v0.20250824.0
5
+ -------------
6
+
7
+ * chore(deps): update dependency websockets to v15 (#1667)
@@ -7,7 +7,7 @@ FROM ${IMAGE}:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
7
7
  ENV PYTHONWARNINGS="ignore::UserWarning"
8
8
 
9
9
  COPY . /src
10
- COPY --from=ghcr.io/astral-sh/uv:0.8.4 /uv /usr/local/bin/uv
10
+ COPY --from=ghcr.io/astral-sh/uv:0.8.13 /uv /usr/local/bin/uv
11
11
 
12
12
  COPY files/data /data
13
13
  COPY files/change.sh /change.sh
@@ -7,7 +7,7 @@ FROM ${IMAGE}:${PYTHON_VERSION}-alpine${ALPINE_VERSION}
7
7
  ENV PYTHONWARNINGS="ignore::UserWarning"
8
8
 
9
9
  COPY . /src
10
- COPY --from=ghcr.io/astral-sh/uv:0.8.4 /uv /usr/local/bin/uv
10
+ COPY --from=ghcr.io/astral-sh/uv:0.8.13 /uv /usr/local/bin/uv
11
11
 
12
12
  COPY files/data /data
13
13
  COPY files/change.sh /change.sh
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: osism
3
- Version: 0.20250804.0
3
+ Version: 0.20250824.0
4
4
  Summary: OSISM manager interface
5
5
  Home-page: https://github.com/osism/python-osism
6
6
  Author: OSISM GmbH
@@ -27,20 +27,20 @@ Requires-Dist: Jinja2==3.1.6
27
27
  Requires-Dist: PyYAML==6.0.2
28
28
  Requires-Dist: ara==1.7.2
29
29
  Requires-Dist: celery[redis]==5.5.3
30
- Requires-Dist: cliff==4.10.0
31
- Requires-Dist: deepdiff==8.5.0
30
+ Requires-Dist: cliff==4.11.0
31
+ Requires-Dist: deepdiff==8.6.0
32
32
  Requires-Dist: docker==7.1.0
33
33
  Requires-Dist: dtrack-auditor==1.5.0
34
34
  Requires-Dist: fastapi==0.116.1
35
35
  Requires-Dist: flower==2.0.1
36
36
  Requires-Dist: hiredis==3.2.1
37
37
  Requires-Dist: jc==1.25.5
38
- Requires-Dist: keystoneauth1==5.11.1
38
+ Requires-Dist: keystoneauth1==5.12.0
39
39
  Requires-Dist: kombu==5.5.4
40
40
  Requires-Dist: kubernetes==33.1.0
41
41
  Requires-Dist: loguru==0.7.3
42
42
  Requires-Dist: nbcli==0.10.0.dev2
43
- Requires-Dist: openstacksdk==4.6.0
43
+ Requires-Dist: openstacksdk==4.7.0
44
44
  Requires-Dist: paramiko==3.5.1
45
45
  Requires-Dist: pottery==3.0.1
46
46
  Requires-Dist: prompt-toolkit==3.0.51
@@ -49,12 +49,13 @@ Requires-Dist: pytest-testinfra==10.2.2
49
49
  Requires-Dist: python-dateutil==2.9.0.post0
50
50
  Requires-Dist: setuptools==80.9.0
51
51
  Requires-Dist: sqlmodel==0.0.24
52
- Requires-Dist: sushy==5.7.0
52
+ Requires-Dist: sushy==5.7.1
53
53
  Requires-Dist: tabulate==0.9.0
54
54
  Requires-Dist: transitions==0.9.3
55
55
  Requires-Dist: uvicorn[standard]==0.35.0
56
56
  Requires-Dist: validators==0.35.0
57
57
  Requires-Dist: watchdog==6.0.0
58
+ Requires-Dist: websockets==15.0.1
58
59
  Provides-Extra: ansible
59
60
  Requires-Dist: ansible-runner==2.4.1; extra == "ansible"
60
61
  Requires-Dist: ansible-core==2.19.0; extra == "ansible"
@@ -11,20 +11,20 @@ PyYAML = "==6.0.2"
11
11
  ansible-runner = "==2.4.1"
12
12
  ara = "==1.7.2"
13
13
  celery = {version = "==5.5.3", extras = ["redis"]}
14
- cliff = "==4.10.0"
15
- deepdiff = "==8.5.0"
14
+ cliff = "==4.11.0"
15
+ deepdiff = "==8.6.0"
16
16
  docker = "==7.1.0"
17
17
  dtrack-auditor = "==1.5.0"
18
18
  flower = "==2.0.1"
19
19
  hiredis = "==3.2.1"
20
20
  huey = "==2.5.3"
21
21
  jc = "==1.25.5"
22
- keystoneauth1 = "==5.11.1"
22
+ keystoneauth1 = "==5.12.0"
23
23
  kombu = "==5.5.4"
24
24
  kubernetes = "==33.1.0"
25
25
  loguru = "==0.7.3"
26
26
  nbcli = "0.10.0.dev2"
27
- openstacksdk = "==4.6.0"
27
+ openstacksdk = "==4.7.0"
28
28
  paramiko = "==3.5.1"
29
29
  pottery = "==3.0.1"
30
30
  prompt-toolkit = "==3.0.51"
@@ -33,7 +33,7 @@ pytest-testinfra = "==10.2.2"
33
33
  python-dateutil = "==2.9.0.post0"
34
34
  setuptools = "==80.9.0"
35
35
  sqlmodel = "==0.0.24"
36
- sushy = "==5.7.0"
36
+ sushy = "==5.7.1"
37
37
  transitions = "==0.9.3"
38
38
  validators = "==0.35.0"
39
39
  watchdog = "==6.0.0"