PyPalmSens 1.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.
Files changed (56) hide show
  1. pypalmsens-1.0.0/LICENSE +30 -0
  2. pypalmsens-1.0.0/MANIFEST.in +3 -0
  3. pypalmsens-1.0.0/PKG-INFO +71 -0
  4. pypalmsens-1.0.0/README.md +30 -0
  5. pypalmsens-1.0.0/pyproject.toml +126 -0
  6. pypalmsens-1.0.0/setup.cfg +4 -0
  7. pypalmsens-1.0.0/src/PyPalmSens.egg-info/PKG-INFO +71 -0
  8. pypalmsens-1.0.0/src/PyPalmSens.egg-info/SOURCES.txt +54 -0
  9. pypalmsens-1.0.0/src/PyPalmSens.egg-info/dependency_links.txt +1 -0
  10. pypalmsens-1.0.0/src/PyPalmSens.egg-info/requires.txt +17 -0
  11. pypalmsens-1.0.0/src/PyPalmSens.egg-info/top_level.txt +1 -0
  12. pypalmsens-1.0.0/src/pypalmsens/__init__.py +65 -0
  13. pypalmsens-1.0.0/src/pypalmsens/_data/__init__.py +18 -0
  14. pypalmsens-1.0.0/src/pypalmsens/_data/_shared.py +135 -0
  15. pypalmsens-1.0.0/src/pypalmsens/_data/curve.py +315 -0
  16. pypalmsens-1.0.0/src/pypalmsens/_data/data_array.py +101 -0
  17. pypalmsens-1.0.0/src/pypalmsens/_data/dataset.py +243 -0
  18. pypalmsens-1.0.0/src/pypalmsens/_data/eisdata.py +187 -0
  19. pypalmsens-1.0.0/src/pypalmsens/_data/measurement.py +172 -0
  20. pypalmsens-1.0.0/src/pypalmsens/_data/peak.py +166 -0
  21. pypalmsens-1.0.0/src/pypalmsens/_fitting.py +446 -0
  22. pypalmsens-1.0.0/src/pypalmsens/_instruments/__init__.py +13 -0
  23. pypalmsens-1.0.0/src/pypalmsens/_instruments/_common.py +89 -0
  24. pypalmsens-1.0.0/src/pypalmsens/_instruments/instrument_manager.py +728 -0
  25. pypalmsens-1.0.0/src/pypalmsens/_instruments/instrument_manager_async.py +781 -0
  26. pypalmsens-1.0.0/src/pypalmsens/_io.py +162 -0
  27. pypalmsens-1.0.0/src/pypalmsens/_lib/__init__.py +0 -0
  28. pypalmsens-1.0.0/src/pypalmsens/_lib/mono.py +63 -0
  29. pypalmsens-1.0.0/src/pypalmsens/_lib/windows.py +42 -0
  30. pypalmsens-1.0.0/src/pypalmsens/_methods/__init__.py +14 -0
  31. pypalmsens-1.0.0/src/pypalmsens/_methods/_shared.py +231 -0
  32. pypalmsens-1.0.0/src/pypalmsens/_methods/method.py +74 -0
  33. pypalmsens-1.0.0/src/pypalmsens/_methods/settings.py +530 -0
  34. pypalmsens-1.0.0/src/pypalmsens/_methods/techniques.py +1039 -0
  35. pypalmsens-1.0.0/src/pypalmsens/_pssdk/mono/PalmSens.Core.Linux.dll +0 -0
  36. pypalmsens-1.0.0/src/pypalmsens/_pssdk/mono/PalmSens.Core.dll +0 -0
  37. pypalmsens-1.0.0/src/pypalmsens/_pssdk/mono/PalmSens.Core.xml +22678 -0
  38. pypalmsens-1.0.0/src/pypalmsens/_pssdk/mono/runtimeconfig.json +9 -0
  39. pypalmsens-1.0.0/src/pypalmsens/_pssdk/win/PalmSens.Core.Windows.BLE.dll +0 -0
  40. pypalmsens-1.0.0/src/pypalmsens/_pssdk/win/PalmSens.Core.Windows.BLE.xml +3272 -0
  41. pypalmsens-1.0.0/src/pypalmsens/_pssdk/win/PalmSens.Core.dll +0 -0
  42. pypalmsens-1.0.0/src/pypalmsens/_pssdk/win/PalmSens.Core.xml +22678 -0
  43. pypalmsens-1.0.0/src/pypalmsens/_runtimes/linux-arm/native/System.IO.Ports.dll +0 -0
  44. pypalmsens-1.0.0/src/pypalmsens/_runtimes/linux-arm/native/libSystem.IO.Ports.Native.so +0 -0
  45. pypalmsens-1.0.0/src/pypalmsens/_runtimes/linux-arm64/native/System.IO.Ports.dll +0 -0
  46. pypalmsens-1.0.0/src/pypalmsens/_runtimes/linux-arm64/native/libSystem.IO.Ports.Native.so +0 -0
  47. pypalmsens-1.0.0/src/pypalmsens/_runtimes/linux-x64/native/System.IO.Ports.dll +0 -0
  48. pypalmsens-1.0.0/src/pypalmsens/_runtimes/linux-x64/native/libSystem.IO.Ports.Native.so +0 -0
  49. pypalmsens-1.0.0/src/pypalmsens/_runtimes/osx-arm64/native/System.IO.Ports.dll +0 -0
  50. pypalmsens-1.0.0/src/pypalmsens/_runtimes/osx-arm64/native/libSystem.IO.Ports.Native.dylib +0 -0
  51. pypalmsens-1.0.0/src/pypalmsens/_runtimes/osx-x64/native/System.IO.Ports.dll +0 -0
  52. pypalmsens-1.0.0/src/pypalmsens/_runtimes/osx-x64/native/libSystem.IO.Ports.Native.dylib +0 -0
  53. pypalmsens-1.0.0/src/pypalmsens/_shared.py +14 -0
  54. pypalmsens-1.0.0/src/pypalmsens/data.py +21 -0
  55. pypalmsens-1.0.0/src/pypalmsens/fitting.py +17 -0
  56. pypalmsens-1.0.0/src/pypalmsens/settings.py +47 -0
@@ -0,0 +1,30 @@
1
+ Copyright (c) 2025 PalmSens BV
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+
7
+ 1. Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+
10
+ 2. Redistributions in binary form must reproduce the above copyright notice,
11
+ this list of conditions and the following disclaimer in the documentation
12
+ and/or other materials provided with the distribution.
13
+
14
+ 3. Neither the name of the copyright holder nor the names of its
15
+ contributors may be used to endorse or promote products derived from
16
+ this software without specific prior written permission.
17
+
18
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+
29
+ You acknowledge that this software is designed, licenced, and intended for use
30
+ with a PalmSens BV device or component.
@@ -0,0 +1,3 @@
1
+ # https://setuptools.pypa.io/en/latest/userguide/miscellaneous.html
2
+ graft src/pypalmsens/_pssdk/
3
+ graft src/pypalmsens/_runtimes/
@@ -0,0 +1,71 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyPalmSens
3
+ Version: 1.0.0
4
+ Summary: Python SDK for PalmSens instruments
5
+ Author-email: Palmsens BV <info@palmsens.com>
6
+ License-Expression: LicenseRef-Modified-BSD-3-Clause-PalmSens
7
+ Project-URL: homepage, https://github.com/palmsens/palmsens_sdk
8
+ Project-URL: issues, https://github.com/palmsens/palmsens_sdk/issues
9
+ Project-URL: documentation, https://github.com/palmsens/palmsens_sdk
10
+ Project-URL: changelog, https://github.com/palmsens/palmsens_sdk/releases
11
+ Keywords: electrochemistry,data-analysis,voltammetry,potentiometry,impedance-specroscopy
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Natural Language :: English
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Scientific/Engineering
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: attrs
26
+ Requires-Dist: numpy
27
+ Requires-Dist: packaging
28
+ Requires-Dist: pythonnet
29
+ Provides-Extra: develop
30
+ Requires-Dist: bump-my-version; extra == "develop"
31
+ Requires-Dist: coverage; extra == "develop"
32
+ Requires-Dist: griffe2md; extra == "develop"
33
+ Requires-Dist: pre-commit; extra == "develop"
34
+ Requires-Dist: pytest; extra == "develop"
35
+ Requires-Dist: pytest-asyncio; extra == "develop"
36
+ Provides-Extra: publishing
37
+ Requires-Dist: twine; extra == "publishing"
38
+ Requires-Dist: wheel; extra == "publishing"
39
+ Requires-Dist: build; extra == "publishing"
40
+ Dynamic: license-file
41
+
42
+ [![Tests](https://github.com/PalmSens/PalmSens_SDK/actions/workflows/python-tests.yml/badge.svg)](https://github.com/PalmSens/PalmSens_SDK/actions/workflows/python-tests.yml)
43
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pypalmsens)](https://pypi.org/project/pypalmsens/)
44
+ [![PyPI](https://img.shields.io/pypi/v/pypalmsens.svg?style=flat)](https://pypi.org/project/pypalmsens/)
45
+
46
+ # PyPalmSens: Python SDK for PalmSens devices
47
+
48
+ PyPalmSens is a Python library for automating electrochemistry experiments with your PalmSens instruments.
49
+ It provides an intuitive Python API, making it straightforward to integrate into your Python workflows.
50
+
51
+ With PyPalmSens, you can:
52
+
53
+ - Connect to one or more instruments/channels
54
+ - Automate electrochemistry measurements
55
+ - Access and process measured data
56
+ - Analyze and manipulate data
57
+ - Perform peak detection
58
+ - Do Equivalent Circuit Fitting on impedance data
59
+ - Manually control of the cell
60
+ - Read and write method and data files
61
+
62
+ To install:
63
+
64
+ ```python
65
+ pip install pypalmsens
66
+ ```
67
+
68
+ PyPalmSens is built on top of the included [PalmSens .NET libraries](https://palmsens.github.io/PalmSens_SDK/palmsens-sdk/core_dll.html), and therefore requires the .NET runtime to be installed.
69
+
70
+ For specific installation instructions for your platform, see the
71
+ [documentation](https://palmsens.github.io/PalmSens_SDK/palmsens-sdk/python/index.html).
@@ -0,0 +1,30 @@
1
+ [![Tests](https://github.com/PalmSens/PalmSens_SDK/actions/workflows/python-tests.yml/badge.svg)](https://github.com/PalmSens/PalmSens_SDK/actions/workflows/python-tests.yml)
2
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pypalmsens)](https://pypi.org/project/pypalmsens/)
3
+ [![PyPI](https://img.shields.io/pypi/v/pypalmsens.svg?style=flat)](https://pypi.org/project/pypalmsens/)
4
+
5
+ # PyPalmSens: Python SDK for PalmSens devices
6
+
7
+ PyPalmSens is a Python library for automating electrochemistry experiments with your PalmSens instruments.
8
+ It provides an intuitive Python API, making it straightforward to integrate into your Python workflows.
9
+
10
+ With PyPalmSens, you can:
11
+
12
+ - Connect to one or more instruments/channels
13
+ - Automate electrochemistry measurements
14
+ - Access and process measured data
15
+ - Analyze and manipulate data
16
+ - Perform peak detection
17
+ - Do Equivalent Circuit Fitting on impedance data
18
+ - Manually control of the cell
19
+ - Read and write method and data files
20
+
21
+ To install:
22
+
23
+ ```python
24
+ pip install pypalmsens
25
+ ```
26
+
27
+ PyPalmSens is built on top of the included [PalmSens .NET libraries](https://palmsens.github.io/PalmSens_SDK/palmsens-sdk/core_dll.html), and therefore requires the .NET runtime to be installed.
28
+
29
+ For specific installation instructions for your platform, see the
30
+ [documentation](https://palmsens.github.io/PalmSens_SDK/palmsens-sdk/python/index.html).
@@ -0,0 +1,126 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77.0"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ # https://packaging.python.org/en/latest/specifications/declaring-project-metadata/
6
+ [project]
7
+ name = "PyPalmSens"
8
+ version = "1.0.0"
9
+ description = "Python SDK for PalmSens instruments"
10
+ readme = "README.md"
11
+ requires-python = ">=3.10"
12
+ authors = [
13
+ {name = "Palmsens BV", email = "info@palmsens.com"},
14
+ ]
15
+ keywords = [
16
+ "electrochemistry",
17
+ "data-analysis",
18
+ "voltammetry",
19
+ "potentiometry",
20
+ "impedance-specroscopy",
21
+ ]
22
+ license= "LicenseRef-Modified-BSD-3-Clause-PalmSens"
23
+ license-files = ["LICENSE"]
24
+ classifiers = [
25
+ "Development Status :: 5 - Production/Stable",
26
+ "Intended Audience :: Science/Research",
27
+ "Natural Language :: English",
28
+ "Operating System :: OS Independent",
29
+ "Programming Language :: Python :: 3",
30
+ "Programming Language :: Python :: 3.10",
31
+ "Programming Language :: Python :: 3.11",
32
+ "Programming Language :: Python :: 3.12",
33
+ "Programming Language :: Python :: 3.13",
34
+ "Topic :: Scientific/Engineering",
35
+ ]
36
+ dependencies = [
37
+ 'attrs',
38
+ 'numpy',
39
+ 'packaging',
40
+ 'pythonnet',
41
+ ]
42
+
43
+ [project.urls]
44
+ homepage = "https://github.com/palmsens/palmsens_sdk"
45
+ issues = "https://github.com/palmsens/palmsens_sdk/issues"
46
+ documentation = "https://github.com/palmsens/palmsens_sdk"
47
+ changelog = "https://github.com/palmsens/palmsens_sdk/releases"
48
+
49
+ [project.optional-dependencies]
50
+ develop = [
51
+ "bump-my-version",
52
+ "coverage",
53
+ "griffe2md",
54
+ "pre-commit",
55
+ "pytest",
56
+ "pytest-asyncio",
57
+ ]
58
+
59
+ publishing = [
60
+ "twine",
61
+ "wheel",
62
+ "build",
63
+ ]
64
+
65
+ [tool.setuptools]
66
+ package-dir = {"" = "src"}
67
+
68
+ [tool.coverage.run]
69
+ branch = true
70
+ source = ["pypalmsens"]
71
+
72
+ [tool.pytest.ini_options]
73
+ testpaths = ["tests"]
74
+ markers = [
75
+ "examples: Mark tests that run the examples.",
76
+ "instrument: Mark tests that need an instrument connection."
77
+ ]
78
+ log_cli = false
79
+ log_cli_level = "INFO"
80
+
81
+ [tool.ruff]
82
+ src=['src']
83
+ line-length = 96
84
+ target-version = "py310"
85
+
86
+ [tool.ruff.lint]
87
+ # Enable Pyflakes `E` and `F` codes by default.
88
+ select = [
89
+ "F", # Pyflakes
90
+ "E", # pycodestyle (error)
91
+ "W", # pycodestyle (warning)
92
+ "I", # isort
93
+ ]
94
+ ignore = [
95
+ "E501", # line-too-long
96
+ ]
97
+
98
+ [tool.ruff.lint.isort]
99
+ known-first-party=["pypalmsens"]
100
+ known-third-party = []
101
+ required-imports = ["from __future__ import annotations"]
102
+
103
+ [tool.ruff.lint.per-file-ignores]
104
+ "examples/*.py" = ["I"]
105
+
106
+ [tool.ruff.format]
107
+ indent-style = "space"
108
+ quote-style = "single"
109
+
110
+ [tool.mypy]
111
+ files = ["src", "tests", "examples"]
112
+ allow_redefinition = true
113
+ ignore_missing_imports = true
114
+
115
+ [tool.bumpversion]
116
+ current_version = "1.0.0"
117
+
118
+ [[tool.bumpversion.files]]
119
+ filename = "src/pypalmsens/__init__.py"
120
+ search = "__version__ = '{current_version}'"
121
+ replace = "__version__ = '{new_version}'"
122
+
123
+ [[tool.bumpversion.files]]
124
+ filename = "pyproject.toml"
125
+ search = "version = \"{current_version}\""
126
+ replace = "version = \"{new_version}\""
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,71 @@
1
+ Metadata-Version: 2.4
2
+ Name: PyPalmSens
3
+ Version: 1.0.0
4
+ Summary: Python SDK for PalmSens instruments
5
+ Author-email: Palmsens BV <info@palmsens.com>
6
+ License-Expression: LicenseRef-Modified-BSD-3-Clause-PalmSens
7
+ Project-URL: homepage, https://github.com/palmsens/palmsens_sdk
8
+ Project-URL: issues, https://github.com/palmsens/palmsens_sdk/issues
9
+ Project-URL: documentation, https://github.com/palmsens/palmsens_sdk
10
+ Project-URL: changelog, https://github.com/palmsens/palmsens_sdk/releases
11
+ Keywords: electrochemistry,data-analysis,voltammetry,potentiometry,impedance-specroscopy
12
+ Classifier: Development Status :: 5 - Production/Stable
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: Natural Language :: English
15
+ Classifier: Operating System :: OS Independent
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Scientific/Engineering
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: attrs
26
+ Requires-Dist: numpy
27
+ Requires-Dist: packaging
28
+ Requires-Dist: pythonnet
29
+ Provides-Extra: develop
30
+ Requires-Dist: bump-my-version; extra == "develop"
31
+ Requires-Dist: coverage; extra == "develop"
32
+ Requires-Dist: griffe2md; extra == "develop"
33
+ Requires-Dist: pre-commit; extra == "develop"
34
+ Requires-Dist: pytest; extra == "develop"
35
+ Requires-Dist: pytest-asyncio; extra == "develop"
36
+ Provides-Extra: publishing
37
+ Requires-Dist: twine; extra == "publishing"
38
+ Requires-Dist: wheel; extra == "publishing"
39
+ Requires-Dist: build; extra == "publishing"
40
+ Dynamic: license-file
41
+
42
+ [![Tests](https://github.com/PalmSens/PalmSens_SDK/actions/workflows/python-tests.yml/badge.svg)](https://github.com/PalmSens/PalmSens_SDK/actions/workflows/python-tests.yml)
43
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pypalmsens)](https://pypi.org/project/pypalmsens/)
44
+ [![PyPI](https://img.shields.io/pypi/v/pypalmsens.svg?style=flat)](https://pypi.org/project/pypalmsens/)
45
+
46
+ # PyPalmSens: Python SDK for PalmSens devices
47
+
48
+ PyPalmSens is a Python library for automating electrochemistry experiments with your PalmSens instruments.
49
+ It provides an intuitive Python API, making it straightforward to integrate into your Python workflows.
50
+
51
+ With PyPalmSens, you can:
52
+
53
+ - Connect to one or more instruments/channels
54
+ - Automate electrochemistry measurements
55
+ - Access and process measured data
56
+ - Analyze and manipulate data
57
+ - Perform peak detection
58
+ - Do Equivalent Circuit Fitting on impedance data
59
+ - Manually control of the cell
60
+ - Read and write method and data files
61
+
62
+ To install:
63
+
64
+ ```python
65
+ pip install pypalmsens
66
+ ```
67
+
68
+ PyPalmSens is built on top of the included [PalmSens .NET libraries](https://palmsens.github.io/PalmSens_SDK/palmsens-sdk/core_dll.html), and therefore requires the .NET runtime to be installed.
69
+
70
+ For specific installation instructions for your platform, see the
71
+ [documentation](https://palmsens.github.io/PalmSens_SDK/palmsens-sdk/python/index.html).
@@ -0,0 +1,54 @@
1
+ LICENSE
2
+ MANIFEST.in
3
+ README.md
4
+ pyproject.toml
5
+ src/PyPalmSens.egg-info/PKG-INFO
6
+ src/PyPalmSens.egg-info/SOURCES.txt
7
+ src/PyPalmSens.egg-info/dependency_links.txt
8
+ src/PyPalmSens.egg-info/requires.txt
9
+ src/PyPalmSens.egg-info/top_level.txt
10
+ src/pypalmsens/__init__.py
11
+ src/pypalmsens/_fitting.py
12
+ src/pypalmsens/_io.py
13
+ src/pypalmsens/_shared.py
14
+ src/pypalmsens/data.py
15
+ src/pypalmsens/fitting.py
16
+ src/pypalmsens/settings.py
17
+ src/pypalmsens/_data/__init__.py
18
+ src/pypalmsens/_data/_shared.py
19
+ src/pypalmsens/_data/curve.py
20
+ src/pypalmsens/_data/data_array.py
21
+ src/pypalmsens/_data/dataset.py
22
+ src/pypalmsens/_data/eisdata.py
23
+ src/pypalmsens/_data/measurement.py
24
+ src/pypalmsens/_data/peak.py
25
+ src/pypalmsens/_instruments/__init__.py
26
+ src/pypalmsens/_instruments/_common.py
27
+ src/pypalmsens/_instruments/instrument_manager.py
28
+ src/pypalmsens/_instruments/instrument_manager_async.py
29
+ src/pypalmsens/_lib/__init__.py
30
+ src/pypalmsens/_lib/mono.py
31
+ src/pypalmsens/_lib/windows.py
32
+ src/pypalmsens/_methods/__init__.py
33
+ src/pypalmsens/_methods/_shared.py
34
+ src/pypalmsens/_methods/method.py
35
+ src/pypalmsens/_methods/settings.py
36
+ src/pypalmsens/_methods/techniques.py
37
+ src/pypalmsens/_pssdk/mono/PalmSens.Core.Linux.dll
38
+ src/pypalmsens/_pssdk/mono/PalmSens.Core.dll
39
+ src/pypalmsens/_pssdk/mono/PalmSens.Core.xml
40
+ src/pypalmsens/_pssdk/mono/runtimeconfig.json
41
+ src/pypalmsens/_pssdk/win/PalmSens.Core.Windows.BLE.dll
42
+ src/pypalmsens/_pssdk/win/PalmSens.Core.Windows.BLE.xml
43
+ src/pypalmsens/_pssdk/win/PalmSens.Core.dll
44
+ src/pypalmsens/_pssdk/win/PalmSens.Core.xml
45
+ src/pypalmsens/_runtimes/linux-arm/native/System.IO.Ports.dll
46
+ src/pypalmsens/_runtimes/linux-arm/native/libSystem.IO.Ports.Native.so
47
+ src/pypalmsens/_runtimes/linux-arm64/native/System.IO.Ports.dll
48
+ src/pypalmsens/_runtimes/linux-arm64/native/libSystem.IO.Ports.Native.so
49
+ src/pypalmsens/_runtimes/linux-x64/native/System.IO.Ports.dll
50
+ src/pypalmsens/_runtimes/linux-x64/native/libSystem.IO.Ports.Native.so
51
+ src/pypalmsens/_runtimes/osx-arm64/native/System.IO.Ports.dll
52
+ src/pypalmsens/_runtimes/osx-arm64/native/libSystem.IO.Ports.Native.dylib
53
+ src/pypalmsens/_runtimes/osx-x64/native/System.IO.Ports.dll
54
+ src/pypalmsens/_runtimes/osx-x64/native/libSystem.IO.Ports.Native.dylib
@@ -0,0 +1,17 @@
1
+ attrs
2
+ numpy
3
+ packaging
4
+ pythonnet
5
+
6
+ [develop]
7
+ bump-my-version
8
+ coverage
9
+ griffe2md
10
+ pre-commit
11
+ pytest
12
+ pytest-asyncio
13
+
14
+ [publishing]
15
+ twine
16
+ wheel
17
+ build
@@ -0,0 +1 @@
1
+ pypalmsens
@@ -0,0 +1,65 @@
1
+ from __future__ import annotations
2
+
3
+ import sys
4
+
5
+ # Load dotnet platform dependencies and init SDK
6
+ if sys.platform == 'win32':
7
+ from ._lib.windows import sdk_version
8
+ else:
9
+ from ._lib.mono import sdk_version
10
+
11
+ __version__ = '1.0.0'
12
+ __sdk_version__ = sdk_version
13
+
14
+ from . import data, fitting, settings
15
+ from ._instruments.instrument_manager import (
16
+ InstrumentManager,
17
+ connect,
18
+ discover,
19
+ )
20
+ from ._instruments.instrument_manager_async import (
21
+ InstrumentManagerAsync,
22
+ connect_async,
23
+ discover_async,
24
+ )
25
+ from ._io import load_method_file, load_session_file, save_method_file, save_session_file
26
+ from ._methods.techniques import (
27
+ ChronoAmperometry,
28
+ ChronoPotentiometry,
29
+ CyclicVoltammetry,
30
+ DifferentialPulseVoltammetry,
31
+ ElectrochemicalImpedanceSpectroscopy,
32
+ GalvanostaticImpedanceSpectroscopy,
33
+ LinearSweepVoltammetry,
34
+ MethodScript,
35
+ MultiStepAmperometry,
36
+ OpenCircuitPotentiometry,
37
+ SquareWaveVoltammetry,
38
+ )
39
+
40
+ __all__ = [
41
+ 'settings',
42
+ 'data',
43
+ 'fitting',
44
+ 'connect',
45
+ 'connect_async',
46
+ 'discover',
47
+ 'discover_async',
48
+ 'load_method_file',
49
+ 'load_session_file',
50
+ 'save_method_file',
51
+ 'save_session_file',
52
+ 'InstrumentManager',
53
+ 'InstrumentManagerAsync',
54
+ 'ChronoAmperometry',
55
+ 'ChronoPotentiometry',
56
+ 'CyclicVoltammetry',
57
+ 'DifferentialPulseVoltammetry',
58
+ 'ElectrochemicalImpedanceSpectroscopy',
59
+ 'GalvanostaticImpedanceSpectroscopy',
60
+ 'LinearSweepVoltammetry',
61
+ 'MethodScript',
62
+ 'MultiStepAmperometry',
63
+ 'OpenCircuitPotentiometry',
64
+ 'SquareWaveVoltammetry',
65
+ ]
@@ -0,0 +1,18 @@
1
+ from __future__ import annotations
2
+
3
+ from .curve import Curve
4
+ from .data_array import DataArray
5
+ from .dataset import DataSet
6
+ from .eisdata import EISData
7
+ from .measurement import DeviceInfo, Measurement
8
+ from .peak import Peak
9
+
10
+ __all__ = [
11
+ 'Curve',
12
+ 'DataArray',
13
+ 'DataSet',
14
+ 'DeviceInfo',
15
+ 'EISData',
16
+ 'Measurement',
17
+ 'Peak',
18
+ ]
@@ -0,0 +1,135 @@
1
+ from __future__ import annotations
2
+
3
+ from enum import Enum
4
+ from typing import Optional
5
+
6
+
7
+ class ArrayType(Enum):
8
+ """Data array type for standard arrays."""
9
+
10
+ Unspecified = -1
11
+ """Unspecified"""
12
+ Time = 0
13
+ """Time / s"""
14
+ Potential = 1
15
+ """Potential / V"""
16
+ Current = 2
17
+ """Current / μA"""
18
+ Charge = 3
19
+ """Charge"""
20
+ ExtraValue = 4
21
+ """ExtraValue"""
22
+ Frequency = 5
23
+ """Frequency"""
24
+ Phase = 6
25
+ """Phase"""
26
+ ZRe = 7
27
+ """Z real"""
28
+ ZIm = 8
29
+ """Z imaginary"""
30
+ Iac = 9
31
+ """I AC values"""
32
+ Z = 10
33
+ """Z"""
34
+ Y = 11
35
+ """Y"""
36
+ YRe = 12
37
+ """Y real"""
38
+ YIm = 13
39
+ """Y imaginary"""
40
+ Cs = 14
41
+ """Cs"""
42
+ CsRe = 15
43
+ """Cs real"""
44
+ CsIm = 16
45
+ """Cs imaginary"""
46
+ Index = 17
47
+ """Index"""
48
+ Admittance = 18
49
+ """Admittance"""
50
+ Concentration = 19
51
+ """Concentration"""
52
+ Signal = 20
53
+ """Signal"""
54
+ Func = 21
55
+ """Func"""
56
+ Integral = 22
57
+ """Integral"""
58
+ AuxInput = 23
59
+ """Auxillary input"""
60
+ BipotCurrent = 24
61
+ """Bipot current"""
62
+ BipotPotential = 25
63
+ """Bipot potential"""
64
+ ReverseCurrent = 26
65
+ """Reverse current"""
66
+ CEPotential = 27
67
+ """CE potential"""
68
+ DCCurrent = 28
69
+ """DC current"""
70
+ ForwardCurrent = 29
71
+ """Forward current"""
72
+ PotentialExtraRE = 30
73
+ """Potential setpoint measured back on RE"""
74
+ CurrentExtraWE = 31
75
+ """Current setpoint measured back on WE"""
76
+ InverseDerative_dtdE = 32
77
+ """Inverse derivative dt/dE"""
78
+ mEdc = 33
79
+ """Measured applied DC"""
80
+ Eac = 34
81
+ """E AC values"""
82
+ MeasuredStepStartIndex = 35
83
+ """MeasuredStepStartIndex"""
84
+ miDC = 36
85
+ """Measured I DC values"""
86
+ SE2vsXPotential = 37
87
+ """SE2 vs XPotential"""
88
+
89
+ @classmethod
90
+ def _missing_(cls, value):
91
+ return cls.Unspecified
92
+
93
+
94
+ class Status(Enum):
95
+ Unknown = -1
96
+ OK = 0
97
+ Overload = 1
98
+ Underload = 2
99
+
100
+
101
+ def _get_values_from_NETArray(array, start: int = 0, count: Optional[int] = None):
102
+ if not count:
103
+ count = array.Count
104
+
105
+ values = []
106
+ for i in range(start, start + count):
107
+ value = array.get_Item(i)
108
+ values.append(float(value.Value))
109
+ return values
110
+
111
+
112
+ def __get_currentranges_from_currentarray(
113
+ arraycurrents, start: int = 0, count: Optional[int] = None
114
+ ):
115
+ if not count:
116
+ count = arraycurrents.Count
117
+ values = []
118
+ if ArrayType(arraycurrents.ArrayType) == ArrayType.Current:
119
+ for i in range(start, count):
120
+ value = arraycurrents.get_Item(i)
121
+ values.append(str(value.CurrentRange.ToString()))
122
+ return values
123
+
124
+
125
+ def __get_status_from_current_or_potentialarray(
126
+ array, start: int = 0, count: Optional[int] = None
127
+ ):
128
+ if not count:
129
+ count = array.Count
130
+
131
+ values = []
132
+ for i in range(start, count):
133
+ value = array.get_Item(i)
134
+ values.append(str(Status(value.ReadingStatus)))
135
+ return values