PyAutomationIO 2.1.1__tar.gz → 2.1.3__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.
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/PKG-INFO +1 -1
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/PyAutomationIO.egg-info/PKG-INFO +1 -1
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/core.py +22 -3
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/managers/alarms.py +32 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/alarms/resources/alarms.py +34 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/linear_referencing/resources/linear_referencing_geospatial.py +27 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/tags/resources/tags.py +4 -2
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tags/cvt.py +5 -2
- pyautomationio-2.1.3/version.py +2 -0
- pyautomationio-2.1.1/version.py +0 -2
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/LICENSE +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/MANIFEST.in +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/PyAutomationIO.egg-info/SOURCES.txt +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/PyAutomationIO.egg-info/dependency_links.txt +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/PyAutomationIO.egg-info/requires.txt +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/PyAutomationIO.egg-info/top_level.txt +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/README.md +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/alarms/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/alarms/states.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/alarms/trigger.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/buffer.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/alarms.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/core.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/events.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/linear_referencing_geospatial.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/logs.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/machines.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/opcua.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/opcua_server.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/tags.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/users.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/extensions/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/extensions/api.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/extensions/cors.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/filter/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/bootstrap-icons-BeopsB42.woff +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/bootstrap-icons-mSm7cUeB.woff2 +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-brands-400-D1LuMI3I.ttf +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-brands-400-D_cYUPeE.woff2 +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-regular-400-BjRzuEpd.woff2 +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-regular-400-DZaxPHgR.ttf +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-solid-900-CTAAxXor.woff2 +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-solid-900-D0aA9rwL.ttf +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-v4compatibility-C9RhG_FT.woff2 +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-v4compatibility-CCth-dXg.ttf +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/index-Bq8WzzWp.js +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/index-fe9Q2n8A.css +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/index.html +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/90/302/260 curve 2.svg" +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/Analog gauge.svg +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/Cool pump.svg +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/Hand valve 4.svg +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/Mass flowmeter.svg +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/Short horizontal pipe.svg +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/Tank 16.svg +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/iad/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/iad/frozen_data.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/iad/out_of_range.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/iad/outliers.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/alarms.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/core.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/datalogger.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/events.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/logdict.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/logs.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/machines.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/opcua_server.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/logger/users.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/managers/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/managers/db.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/managers/opcua_client.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/managers/state_machine.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/models.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/alarms/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/alarms/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/alarms/resources/summary.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/database/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/database/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/database/resources/database.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/events/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/events/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/events/resources/events.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/events/resources/logs.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/health/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/health/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/health/resources/health.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/linear_referencing/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/linear_referencing/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/machines/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/machines/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/machines/resources/machines.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/opcua/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/opcua/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/opcua/resources/clients.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/opcua/resources/server.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/settings/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/settings/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/settings/resources/settings.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/tags/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/tags/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/models/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/models/roles.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/models/users.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/roles.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/users.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/roles.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/users.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/opcua/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/opcua/models.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/opcua/subscription.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/alarms.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/alarms_history.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/assets/styles.css +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/alarms.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/alarms_summary.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/db.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/filter.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/machines.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/machines_detailed.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/opcua.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/opcua_server.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/tags.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/trends.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/communications.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/alarms.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/alarms_summary.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/database.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/gaussian_filter.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/machines.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/opcua.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/opcua_server.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/tags.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/trends.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/database.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/filter.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/machines.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/machines_detailed.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/main.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/opcua_server.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/tags.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/trends.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/singleton.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/state_machine.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tags/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tags/filter.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tags/tag.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tests/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tests/test_alarms.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tests/test_core.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tests/test_opcua_serialization.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tests/test_unit.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/tests/test_user.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/utils/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/utils/decorators.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/utils/observer.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/utils/units.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/adimentional.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/current.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/density.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/eng_time.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/force.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/length.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/mass.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/mass_flow.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/percentage.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/power.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/pressure.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/temperature.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/volume.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/variables/volumetric_flow.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/workers/__init__.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/workers/logger.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/workers/state_machine.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/workers/worker.py +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/requirements.txt +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/setup.cfg +0 -0
- {pyautomationio-2.1.1 → pyautomationio-2.1.3}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyAutomationIO
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.3
|
|
4
4
|
Summary: A python framework to develop automation industrial processes applications and Artificial Intelligence applications for the industrial field
|
|
5
5
|
Home-page: https://github.com/know-ai/PyAutomation
|
|
6
6
|
Author: KnowAI
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyAutomationIO
|
|
3
|
-
Version: 2.1.
|
|
3
|
+
Version: 2.1.3
|
|
4
4
|
Summary: A python framework to develop automation industrial processes applications and Artificial Intelligence applications for the industrial field
|
|
5
5
|
Home-page: https://github.com/know-ai/PyAutomation
|
|
6
6
|
Author: KnowAI
|
|
@@ -585,8 +585,8 @@ class PyAutomation(Singleton):
|
|
|
585
585
|
return self.cvt.get_tags_filtered(manufacturer=manufacturer, segment=segment)
|
|
586
586
|
|
|
587
587
|
@logging_error_handler
|
|
588
|
-
@validate_types(kp_min=int|float, kp_max=int|float, output=list)
|
|
589
|
-
def get_tags_by_kp_range(self, kp_min:float, kp_max:float)->list:
|
|
588
|
+
@validate_types(kp_min=int|float, kp_max=int|float, segment=str|type(None), output=list)
|
|
589
|
+
def get_tags_by_kp_range(self, kp_min:float, kp_max:float, segment:str=None)->list:
|
|
590
590
|
r"""
|
|
591
591
|
Retrieves tags whose KP is between kp_min and kp_max (inclusive).
|
|
592
592
|
|
|
@@ -594,12 +594,13 @@ class PyAutomation(Singleton):
|
|
|
594
594
|
|
|
595
595
|
* **kp_min** (float): Lower KP bound.
|
|
596
596
|
* **kp_max** (float): Upper KP bound.
|
|
597
|
+
* **segment** (str): Optional segment name to filter by.
|
|
597
598
|
|
|
598
599
|
**Returns:**
|
|
599
600
|
|
|
600
601
|
* **list**: Serialized tags in the requested KP range.
|
|
601
602
|
"""
|
|
602
|
-
return self.cvt.get_tags_by_kp_range(kp_min=kp_min, kp_max=kp_max)
|
|
603
|
+
return self.cvt.get_tags_by_kp_range(kp_min=kp_min, kp_max=kp_max, segment=segment)
|
|
603
604
|
|
|
604
605
|
@logging_error_handler
|
|
605
606
|
@validate_types(segment_name=str, kp=int|float, latitude=int|float, longitude=int|float, elevation=int|float|type(None), output=tuple)
|
|
@@ -3981,6 +3982,24 @@ class PyAutomation(Singleton):
|
|
|
3981
3982
|
"""
|
|
3982
3983
|
return self.alarm_manager.get_alarms_by_tag(tag=tag)
|
|
3983
3984
|
|
|
3985
|
+
@logging_error_handler
|
|
3986
|
+
@validate_types(kp_min=int|float, kp_max=int|float, segment=str|type(None), output=list)
|
|
3987
|
+
def get_alarms_by_kp_range(self, kp_min:float, kp_max:float, segment:str=None)->list:
|
|
3988
|
+
r"""
|
|
3989
|
+
Retrieves alarms whose associated tag KP is within [kp_min, kp_max].
|
|
3990
|
+
|
|
3991
|
+
**Parameters:**
|
|
3992
|
+
|
|
3993
|
+
* **kp_min** (float): Lower KP bound.
|
|
3994
|
+
* **kp_max** (float): Upper KP bound.
|
|
3995
|
+
* **segment** (str, optional): If provided, only alarms whose tag belongs to this segment are returned.
|
|
3996
|
+
|
|
3997
|
+
**Returns:**
|
|
3998
|
+
|
|
3999
|
+
* **list**: List of serialized alarm dictionaries.
|
|
4000
|
+
"""
|
|
4001
|
+
return self.alarm_manager.get_alarms_by_kp_range(kp_min=kp_min, kp_max=kp_max, segment=segment)
|
|
4002
|
+
|
|
3984
4003
|
@logging_error_handler
|
|
3985
4004
|
@validate_types(id=str, user=User|type(None), output=None)
|
|
3986
4005
|
def delete_alarm(self, id:str, user:User=None):
|
|
@@ -278,6 +278,38 @@ class AlarmManager(Singleton):
|
|
|
278
278
|
|
|
279
279
|
# return alarms
|
|
280
280
|
|
|
281
|
+
@logging_error_handler
|
|
282
|
+
def get_alarms_by_kp_range(self, kp_min:float, kp_max:float, segment:str=None)->list:
|
|
283
|
+
r"""
|
|
284
|
+
Returns serialized alarms whose associated tag KP is within [kp_min, kp_max].
|
|
285
|
+
|
|
286
|
+
**Parameters:**
|
|
287
|
+
|
|
288
|
+
* **kp_min** (float): Lower bound for KP.
|
|
289
|
+
* **kp_max** (float): Upper bound for KP.
|
|
290
|
+
* **segment** (str, optional): If provided, only alarms whose tag belongs to this segment are returned.
|
|
291
|
+
|
|
292
|
+
**Returns:**
|
|
293
|
+
|
|
294
|
+
* **list**: List of serialized alarm dictionaries.
|
|
295
|
+
"""
|
|
296
|
+
lower = min(kp_min, kp_max)
|
|
297
|
+
upper = max(kp_min, kp_max)
|
|
298
|
+
result = []
|
|
299
|
+
for _, alarm in self._alarms.items():
|
|
300
|
+
tag = alarm.tag
|
|
301
|
+
if not hasattr(tag, 'get_kp'):
|
|
302
|
+
continue
|
|
303
|
+
kp = tag.get_kp()
|
|
304
|
+
if kp is None:
|
|
305
|
+
continue
|
|
306
|
+
if not (lower <= kp <= upper):
|
|
307
|
+
continue
|
|
308
|
+
if segment is not None and alarm.segment != segment:
|
|
309
|
+
continue
|
|
310
|
+
result.append(alarm.serialize())
|
|
311
|
+
return result
|
|
312
|
+
|
|
281
313
|
@logging_error_handler
|
|
282
314
|
def get_alarm_by_tag(self, tag:str)->list[Alarm]:
|
|
283
315
|
r"""
|
|
@@ -33,6 +33,12 @@ create_alarm_model = api.model("create_alarm_model", {
|
|
|
33
33
|
'description': fields.String(required=False, description='Alarm description', default='')
|
|
34
34
|
})
|
|
35
35
|
|
|
36
|
+
alarms_kp_range_model = api.model("alarms_kp_range_model", {
|
|
37
|
+
'kp_min': fields.Float(required=True, description='Lower bound KP (inclusive)'),
|
|
38
|
+
'kp_max': fields.Float(required=True, description='Upper bound KP (inclusive)'),
|
|
39
|
+
'segment': fields.String(required=False, description='Filter by segment (optional)')
|
|
40
|
+
})
|
|
41
|
+
|
|
36
42
|
update_alarm_model = api.model("update_alarm_model", {
|
|
37
43
|
'id': fields.String(required=True, description='Alarm ID'),
|
|
38
44
|
'name': fields.String(required=False, description='Alarm name'),
|
|
@@ -124,6 +130,34 @@ class ActiveAlarmsCollection(Resource):
|
|
|
124
130
|
return False, 200
|
|
125
131
|
|
|
126
132
|
|
|
133
|
+
@ns.route('/kp_range')
|
|
134
|
+
class AlarmsByKpRangeCollection(Resource):
|
|
135
|
+
|
|
136
|
+
@api.doc(security='apikey', description="Retrieves alarms whose associated tag KP is between two bounds (inclusive). Optionally filter by segment.")
|
|
137
|
+
@api.response(200, "Success")
|
|
138
|
+
@api.response(400, "Invalid payload")
|
|
139
|
+
@Api.token_required(auth=True)
|
|
140
|
+
@ns.expect(alarms_kp_range_model)
|
|
141
|
+
def post(self):
|
|
142
|
+
"""
|
|
143
|
+
Get alarms by KP range.
|
|
144
|
+
|
|
145
|
+
Returns alarms whose associated tag has a `kp` value between `kp_min` and
|
|
146
|
+
`kp_max` (inclusive). An optional `segment` filter can be applied to further
|
|
147
|
+
restrict the results.
|
|
148
|
+
"""
|
|
149
|
+
payload = api.payload or {}
|
|
150
|
+
kp_min = payload.get('kp_min')
|
|
151
|
+
kp_max = payload.get('kp_max')
|
|
152
|
+
segment = payload.get('segment')
|
|
153
|
+
|
|
154
|
+
if kp_min is None or kp_max is None:
|
|
155
|
+
return {'message': 'kp_min and kp_max are required'}, 400
|
|
156
|
+
|
|
157
|
+
data = app.get_alarms_by_kp_range(kp_min=kp_min, kp_max=kp_max, segment=segment)
|
|
158
|
+
return {'data': data}, 200
|
|
159
|
+
|
|
160
|
+
|
|
127
161
|
@ns.route('/<id>')
|
|
128
162
|
@api.param('id', 'The alarm identifier')
|
|
129
163
|
class AlarmResource(Resource):
|
|
@@ -2,6 +2,7 @@ import csv
|
|
|
2
2
|
from io import StringIO, BytesIO
|
|
3
3
|
from flask import request
|
|
4
4
|
from flask_restx import Namespace, Resource, fields, reqparse
|
|
5
|
+
from werkzeug.datastructures import FileStorage
|
|
5
6
|
from .... import PyAutomation
|
|
6
7
|
from ....extensions.api import api
|
|
7
8
|
from ....extensions import _api as Api
|
|
@@ -136,6 +137,31 @@ class LinearReferencingInterpolateResource(Resource):
|
|
|
136
137
|
return {"message": message, "data": data}, 200
|
|
137
138
|
|
|
138
139
|
|
|
140
|
+
bulk_import_parser = reqparse.RequestParser()
|
|
141
|
+
bulk_import_parser.add_argument(
|
|
142
|
+
'file',
|
|
143
|
+
type=FileStorage,
|
|
144
|
+
location='files',
|
|
145
|
+
required=True,
|
|
146
|
+
help='CSV or XLSX file to import'
|
|
147
|
+
)
|
|
148
|
+
bulk_import_parser.add_argument(
|
|
149
|
+
'segment_name',
|
|
150
|
+
type=str,
|
|
151
|
+
location='form',
|
|
152
|
+
required=False,
|
|
153
|
+
help='Default segment name (used when the file does not include a segment_name column)'
|
|
154
|
+
)
|
|
155
|
+
bulk_import_parser.add_argument(
|
|
156
|
+
'update_existing',
|
|
157
|
+
type=str,
|
|
158
|
+
location='form',
|
|
159
|
+
required=False,
|
|
160
|
+
default='true',
|
|
161
|
+
help='Update existing points if they already exist (true/false, default: true)'
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
|
|
139
165
|
@ns.route('/bulk_import')
|
|
140
166
|
class LinearReferencingBulkImportResource(Resource):
|
|
141
167
|
|
|
@@ -147,6 +173,7 @@ class LinearReferencingBulkImportResource(Resource):
|
|
|
147
173
|
@api.response(200, "Import processed")
|
|
148
174
|
@api.response(400, "Invalid file or payload")
|
|
149
175
|
@Api.token_required(auth=True)
|
|
176
|
+
@ns.expect(bulk_import_parser)
|
|
150
177
|
def post(self):
|
|
151
178
|
if "file" not in request.files:
|
|
152
179
|
return {"message": "file is required (CSV or XLSX)"}, 400
|
|
@@ -97,7 +97,8 @@ tags_list_filter_model = api.model("tags_list_filter_model", {
|
|
|
97
97
|
|
|
98
98
|
tags_kp_range_model = api.model("tags_kp_range_model", {
|
|
99
99
|
'kp_min': fields.Float(required=True, description='Lower bound KP (inclusive)'),
|
|
100
|
-
'kp_max': fields.Float(required=True, description='Upper bound KP (inclusive)')
|
|
100
|
+
'kp_max': fields.Float(required=True, description='Upper bound KP (inclusive)'),
|
|
101
|
+
'segment': fields.String(required=False, description='Filter by segment (optional)')
|
|
101
102
|
})
|
|
102
103
|
|
|
103
104
|
|
|
@@ -185,11 +186,12 @@ class TagsByKpRangeCollection(Resource):
|
|
|
185
186
|
payload = api.payload or {}
|
|
186
187
|
kp_min = payload.get('kp_min')
|
|
187
188
|
kp_max = payload.get('kp_max')
|
|
189
|
+
segment = payload.get('segment')
|
|
188
190
|
|
|
189
191
|
if kp_min is None or kp_max is None:
|
|
190
192
|
return {'message': 'kp_min and kp_max are required'}, 400
|
|
191
193
|
|
|
192
|
-
data = app.get_tags_by_kp_range(kp_min=kp_min, kp_max=kp_max)
|
|
194
|
+
data = app.get_tags_by_kp_range(kp_min=kp_min, kp_max=kp_max, segment=segment)
|
|
193
195
|
return {'data': data}, 200
|
|
194
196
|
|
|
195
197
|
@ns.route('/names')
|
|
@@ -383,7 +383,7 @@ class CVT:
|
|
|
383
383
|
return result
|
|
384
384
|
|
|
385
385
|
@logging_error_handler
|
|
386
|
-
def get_tags_by_kp_range(self, kp_min:float, kp_max:float)->list:
|
|
386
|
+
def get_tags_by_kp_range(self, kp_min:float, kp_max:float, segment:str=None)->list:
|
|
387
387
|
r"""
|
|
388
388
|
Returns a list of serialized tags whose KP is between kp_min and kp_max (inclusive).
|
|
389
389
|
|
|
@@ -391,6 +391,7 @@ class CVT:
|
|
|
391
391
|
|
|
392
392
|
* **kp_min** (float): Lower bound for KP.
|
|
393
393
|
* **kp_max** (float): Upper bound for KP.
|
|
394
|
+
* **segment** (str): Optional segment name to filter by.
|
|
394
395
|
|
|
395
396
|
**Returns:**
|
|
396
397
|
|
|
@@ -404,6 +405,7 @@ class CVT:
|
|
|
404
405
|
tag.serialize()
|
|
405
406
|
for _, tag in self._tags.items()
|
|
406
407
|
if tag.get_kp() is not None and lower <= tag.get_kp() <= upper
|
|
408
|
+
and (segment is None or tag.segment == segment)
|
|
407
409
|
]
|
|
408
410
|
|
|
409
411
|
@logging_error_handler
|
|
@@ -937,7 +939,7 @@ class CVTEngine(Singleton):
|
|
|
937
939
|
return self.__query(_query)
|
|
938
940
|
|
|
939
941
|
@logging_error_handler
|
|
940
|
-
def get_tags_by_kp_range(self, kp_min:float, kp_max:float):
|
|
942
|
+
def get_tags_by_kp_range(self, kp_min:float, kp_max:float, segment:str=None):
|
|
941
943
|
r"""
|
|
942
944
|
Thread-safe method to get tags whose KP is within a given range.
|
|
943
945
|
"""
|
|
@@ -946,6 +948,7 @@ class CVTEngine(Singleton):
|
|
|
946
948
|
_query["parameters"] = dict()
|
|
947
949
|
_query["parameters"]["kp_min"] = kp_min
|
|
948
950
|
_query["parameters"]["kp_max"] = kp_max
|
|
951
|
+
_query["parameters"]["segment"] = segment
|
|
949
952
|
return self.__query(_query)
|
|
950
953
|
|
|
951
954
|
@logging_error_handler
|
pyautomationio-2.1.1/version.py
DELETED
|
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
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/dbmodels/linear_referencing_geospatial.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
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/bootstrap-icons-BeopsB42.woff
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/bootstrap-icons-mSm7cUeB.woff2
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-brands-400-D1LuMI3I.ttf
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-brands-400-D_cYUPeE.woff2
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-regular-400-BjRzuEpd.woff2
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-regular-400-DZaxPHgR.ttf
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-solid-900-CTAAxXor.woff2
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-solid-900-D0aA9rwL.ttf
RENAMED
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/assets/fa-v4compatibility-CCth-dXg.ttf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/Cool pump.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/hmi/industrial_pallete_icons/Tank 16.svg
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
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/alarms/resources/__init__.py
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/alarms/resources/summary.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/database/resources/__init__.py
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/database/resources/database.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/events/resources/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/health/resources/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/linear_referencing/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/machines/resources/__init__.py
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/machines/resources/machines.py
RENAMED
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/opcua/resources/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/settings/resources/__init__.py
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/settings/resources/settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/__init__.py
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/models/__init__.py
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/models/roles.py
RENAMED
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/modules/users/resources/models/users.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/callbacks/machines_detailed.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
|
{pyautomationio-2.1.1 → pyautomationio-2.1.3}/automation/pages/components/gaussian_filter.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
|
|
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
|
|
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
|