Skip to content

Commit b615dc5

Browse files
committed
Created spikesafe_python_lib_docs/releases/README.md
1 parent 5508a34 commit b615dc5

File tree

2 files changed

+163
-0
lines changed

2 files changed

+163
-0
lines changed

spikesafe_python_lib_docs/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ The Vektrex SpikeSafe Python API powers the Python examples published on Github.
1212

1313
Instructions to download and setup **spikesafe-python** can be found [here](https://pypi.org/project/spikesafe-python/) on pypi.org.
1414

15+
For release notes, see [_releases/README.md](/spikesafe_python_lib_docs/_releases/README.md).
16+
1517
## Classes
1618

1719
| Class Name | Description |
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
# spikesafe-python Releases
2+
3+
## v1.9.7
4+
9/17/25
5+
6+
- Added
7+
- Support for package aggregation (single statement import spikesafe_python)
8+
- Support upload-artifact@v4 in .yml
9+
- Precision.get_precise_pulse_width_correction_command_argument
10+
- SerialPortConnection class
11+
- SpikeSafeEvents
12+
- INTERNAL_BULK_OVER_CURRENT = 209
13+
- MAXIMUM_BULK_VOLTAGE_BOOST_EXCEEDED = 210
14+
- PULSE_WIDTH_ADJUSTMENT_ERROR = 211
15+
- EXCESSIVE_BULK_VOLTAGE = 212
16+
- BULK_POWER_FAILURE = 213
17+
- INVALID_PARTIAL_ABORT = 434
18+
- CANNOT_COMMUNICATE_WITH_DIGITIZER = 510
19+
- INVALID_VOLTAGE_PROTECTION_MODE = 600
20+
- Updated
21+
- Design for accessing static methods and enums by specifying class name, while supporting backwards compatibility
22+
- Compensation.get_custom_compensation() enable_logging default to False
23+
- Compensation.get_optimum_compensation() enable_logging default to False
24+
- DigitizerDataFetch.wait_for_new_voltage_data() to check for VOLT:NDAT? PARTIAL
25+
- EventData.parse_event_data() to support events with physical channel list
26+
27+
## v1.8.3
28+
1/23/25
29+
30+
- Added
31+
- jsonschema to requirements.txt
32+
- New info message "Custom compensation for {set_current_amps}A on {spikesafe_model_max_current_amps}A SpikeSafe model and device type '{device_type}' is LoadImpedance.{target_load_impedance} and RiseTime.{target_rise_time}." to Compensation.get_custom_compensation()
33+
- New parameter enable_logging to Compensation.get_custom_compensation()
34+
- New 80A SpikeSafe Model to Compensation.get_optimum_compensation()
35+
- Default return of LoadImpedance.MEDIUM and RiseTime.FAST if SpikeSafe Model isn't defined in Compensation.get_optimum_compensation()
36+
- New parameter enable_logging to Compensation.get_optimum_compensation()
37+
- New warning message "DC based modes do not require compensation, defaulting to LoadImpedance.VERY_LOW and RiseTime.VERY_SLOW" to Compensation.get_optimum_compensation()
38+
- New warning message "Compensation is intended for Pulse On Time of {optimum_compensation_minimum_pulse_on_time_seconds}s or less, defaulting to LoadImpedance.VERY_LOW and RiseTime.VERY_SLOW" to Compensation.get_optimum_compensation()
39+
- New warning message "{spikesafe_model_max_current_amps}A SpikeSafe Model not defined for optimum compensation, defaulting to LoadImpedance.MEDIUM and RiseTime.FAST" to Compensation.get_optimum_compensation()
40+
- New info message "Optimum compensation for {set_current_amps}A on {spikesafe_model_max_current_amps}A SpikeSafe model is LoadImpedance.{load_impedance} and RiseTime.{rise_time}." to Compensation.get_optimum_compensation()
41+
- New function ChannelData.current_reading_formatted_float()
42+
- New function ChannelData.current_reading_formatted_string()
43+
- New function ChannelData.voltage_reading_formatted_float()
44+
- New function ChannelData.voltage_reading_formatted_string()
45+
- New function DigitizerData.voltage_reading_formatted_float()
46+
- New function DigitizerData.voltage_reading_formatted_string()
47+
- New parameter enable_logging to DigitizerDataFetch.wait_for_new_voltage_data()
48+
- New function MemoryTableReadData.bulk_voltage_volts_formatted_float()
49+
- New function MemoryTableReadData.bulk_voltage_volts_formatted_string()
50+
- New class ScpitFormatter
51+
- New parameters enable_logging, default_log_level to TcpSocket()
52+
- pytests under tests/
53+
- test_optimum_compensation
54+
- Fixed
55+
- Precision.get_precise_pulse_width_offset_command_argument()
56+
57+
## v1.7.17
58+
10/25/24
59+
60+
- Added
61+
- Official support for Python 3.13
62+
- New function Compensation.get_custom_compensation()
63+
- New function Compensation.load_custom_compensation_table()
64+
- New function Compensation.load_custom_compensation_unique_device_types()
65+
- New schema Compensation.custom_compensation_table_schema
66+
- New attribute DigitizerData.time_since_start_seconds
67+
- New function DigitizerDataFetch.fetch_voltage_data_sampling_mode_linear()
68+
- New function DigitizerDataFetch.fetch_voltage_data_sampling_mode_logarithmic()
69+
- New function DigitizerDataFetch.fetch_voltage_data_sampling_mode_custom()
70+
- New enum DigitizerEnums.TimeSamplingMode
71+
- New enum DigitizerEnums.SamplingMode
72+
- New class DigitizerVfCustomSequence
73+
- New class DigitizerVfCustomSequenceStep
74+
- New class PulseWidthCorrection
75+
- New SpikeSafeEvents
76+
- MAX_COMPLIANCE_VOLTAGE_EXCEEDED_LIMIT = 125
77+
- INVALID_OFF_TIME_CAUSED_BY_INVALID_PULSE_WIDTH_CORRECTION = 395
78+
- INVALID_ON_TIME_CAUSED_BY_INVALID_PULSE_WIDTH_CORRECTION = 396
79+
- CHANNEL_IS_PULSING_CANNOT_CHANGE_SETTING = 397
80+
- COMMUNICATION_ERROR_DURING_IDN_QUERY_I2C_IS_RESET = 398
81+
- CPLD_VERSIONS_DO_NOT_MATCH = 399
82+
- DIGITIZER_THE_INPUT_RELAYS_OF_THE_DEVICE_IS_DISCONNECTED = 431
83+
- DIGITIZER_MISSING_OUTPUT_TRIGGER_EDGE_PARAMETER = 432
84+
- SAMPLING_CUSTOM_SEQUENCE_IS_NOT_SET = 433
85+
- INVALID_VOLTAGE_PROTECTION_MODE = 500
86+
- EXCEED_MAX_TOTAL_NUMBER_OF_STEPS_IN_SAMPLING_CUSTOM_SEQUENCE = 501
87+
- INVALID_SAMPLING_CUSTOM_SEQUENCE = 502
88+
- EXCEED_MAX_TOTAL_READ_COUNT_IN_SAMPLING_CUSTOM_SEQUENCE = 503
89+
- EXCEED_MAX_SAMPLING_CUSTOM_SEQUENCE_STRING_LENGTH = 504
90+
- EXCEED_MAX_TOTAL_SAMPLING_TIME_IN_SAMPLING_CUSTOM_SEQUENCE = 505
91+
- EXCEED_MAX_TOTAL_SAMPLING_CUSTOM_SEQUENCE_STRING_LENGTH = 506
92+
- PREVIOUS_SEQUENCE_HAVE_NOT_BEEN_CLEARED = 507
93+
- NO_SEQUENCE_HAVE_BEEN_SET = 508
94+
- EXCEED_MAX_SAMPLING_CUSTOM_SEQUENCE_APERTURE = 509
95+
- pytests under tests/
96+
- test_custom_compensation
97+
- test_digitizer_fetch_time_of_sampling
98+
- test_optimum_pulse_width_correction
99+
- workflows under .github/workflows/
100+
- deploy_development.yml. Runs pytests, increments version, builds, and pushes to Test PyPI on push to development branch
101+
- deploy_master.yml. Runs pytests, builds, and pushes to PyPI on push to master branch
102+
- Fixed
103+
- Precision function comments to return strings which match function return type
104+
- Updated
105+
- Compensation.get_optimum_compensation() error message to format: Measurement current {set_current_amps}A exceeds SpikeSafe model maximum current capability of {spikesafe_model_max_current_amps}A.
106+
107+
## v1.6.0
108+
2/13/24
109+
110+
- Added
111+
- Threading.wait() optional os_timer_resolution_offset_time parameter
112+
- Updated
113+
- README refers to SpikeSafePythonSamples for install and usage instructions
114+
- Compensation. get_optimum_compensation() returns LoadImpedance.Medium for 500mA in Low Current Range and operating under 70% ratio
115+
116+
## v1.5.15
117+
12/26/23
118+
119+
- Added
120+
- New function Compensation.get_optimum_compensation()
121+
- New function DigitizerDataFetch. get_new_voltage_data_estimated_complete_time()
122+
- New function Discharge.get_spikesafe_channel_discharge_time()
123+
- New function Precision.get_precise_compliance_voltage_command_argument()
124+
- New function Precision.get_precise_voltage_protection_ramp_dv_command_argument()
125+
- New function Precision.get_precise_voltage_protection_ramp_dt_command_argument()
126+
- New function Precision.get_precise_pulse_width_offset_command_argument()
127+
- New function Precision.get_precise_duty_cycle_command_argument()
128+
- New function Precision.get_precise_time_command_argument()
129+
- New function Precision.get_precise_time_milliseconds_command_argument()
130+
- New function Precision.get_precise_time_microseconds_command_argument()
131+
- New function Precision.get_precise_current_command_argument()
132+
- New class LoadImpedance()
133+
- New class RiseTime()
134+
135+
## v1.4.5
136+
4/28/23
137+
138+
- Updated
139+
- README.md replaced "SMU" with "PSMU"
140+
- Made threading.wait() more accurate with time.perf_counter
141+
142+
## v1.3.0
143+
1/10/23
144+
145+
- Updated
146+
- Migrated to projectpy.toml to support Python v3.11.1. This package works with Python v3.10.0 and up.
147+
148+
## v1.2.3
149+
9/15/22
150+
151+
- Added:
152+
- SpikeSafeEvents IntEnum class
153+
- Link to spikesafe-python API Overview in README
154+
- Optional parameter for SCPI Logging
155+
- Updated:
156+
Class comments for better readability
157+
158+
## v1.1.0
159+
6/4/20
160+
161+
Initial release

0 commit comments

Comments
 (0)