Releases: sassoftware/saspy
Releases · sassoftware/saspy
v5.107.1
[5.107.1] - 2026-04-24
Added
NoneNothing Added
Changed
NoneNothing Changed
Fixed
Bug FixFixedsubmit_timeoutnot raisingSASsubmitTimeoutwhen the SAS job doesn't respond to the cancel request.
Removed
NoneNothing removed
What's Changed
- Fixed
submit_timeoutnot raisingSASsubmitTimeoutwhen the SAS job doesn't respond to the cancel request.
v5.107.0
[5.107.0] - 2026-04-22
Added
EnhancementAdded "submit_timeout" option to HTTP access method.
Changed
NoneNothing Changed
Fixed
NoneNothing fixed
Removed
NoneNothing removed
What's Changed
- New option added to HTTP access method: submit_timeout.
v5.106.0
[5.106.0] - 2026-04-20
Added
EnhancementAdded "reuse_session" option to HTTP access method.
Changed
NoneNothing Changed
Fixed
NoneNothing fixed
Removed
NoneNothing removed
What's Changed
- New option added to HTTP access method: reuse_session.
v5.105.1
[5.105.1] - 2026-03-25
Added
NoneNothing added
Changed
EnhancementAdded Don/Phil as authors and updated contact email
Fixed
NoneNothing fixed
Removed
NoneNothing removed
What's Changed
- Update setup.py to list Don/Phil as authors. by @DMcGee-SAS in #660
Full Changelog: v5.105.0...v5.105.1
v5.105.0
[5.105.0] - 2026-03-25
Added
EnhancementAdded Apache Arrow support:
- Conversion between SAS datasets and Apache Arrow tables
- Arrow-based Parquet conversion with optional parameter
- Support for converting Parquet files to SAS datasets via Arrow
EnhancementEnhanced metadata retrieval:
- Add labels parameter to list_tables() to optionally retrieve dataset labels
- Add schema() method to SASdata to retrieve comprehensive schema information including extended attributes
Changed
EnhancementApplied autopep8 to fix indentation issues (E101, E11, W191). Some files had inconsistent indentation (width of 3 spaces), which has been standardized.
Fixed
FixFixed tests, updated deprecated syntax so tests would run correctly:
- test_pandas.test_wide_data
- test_sasdatatest_sasdata_describe_pandas_chars
Removed
NoneNothing removed
What's Changed
- Add Apache Arrow support and enhance metadata retrieval by @k-nkmt in #654
- Fix a couple of tests and update version/changelog for PR654. by @DMcGee-SAS in #659
New Contributors
Full Changelog: https://github.com/sassoftware/saspy/compare/v5.104.1...v5.105.0## [5.105.0] - 2026-03-25
v5.104.1
[5.104.1] - 2026-02-09
Added
NoneNothing Added
Changed
NoneNothing Changed
Fixed
FixIn Pandas 3.0.0, a change was made to store "None" as NaN. This caused dataframe2sasdata to throw an exception. The fix is to call the fillna method to convert the missing values to an empty string when computing the column length. This fixes the issue and also solves another issue in that the length of a CHAR column is now set correctly.For example, in prior versions if you have this DataFrame:
df=pd.DataFrame({"col1": ["a", "b", None]})
And call dataframe2sasdata on it, the None value was previously being treated as a string: "None", which has a length of 4. So the CHAR column in the SAS dataset was being created with a length of 4, not a length of 1 as expected.
Removed
NoneNothing removed
What's Changed
- Pandas3.0.0 update by @DMcGee-SAS in #651
- Fix dataframe2sasdata so that it works with Pandas 3.0.0. by @DMcGee-SAS in #652
New Contributors
- @DMcGee-SAS made their first contribution in #651
Full Changelog: v5.104.0...v5.104.1
v5.104.0
[5.104.0] - 2025-10-30
Added
EnhancementA minor tweak to allow ODS output to be left 'asis' for internal testers here at SAS.
Since SASPy started, the returned ODS Document from SAS has been tweakd to get it to render in Jupyter
better than it looks by default. This new key in theSAS_output_optionsconfiguration option allows for this:
'asis' : False # defaults to how this has always worked
Changed
NoneNothing Changed
Fixed
NoneNothing Changed
Removed
NoneNothing removed
v5.103.2
[5.103.2] - 2025-07-11
Added
NoneNothing Added
Changed
NoneNothing Changed
Fixed
FixI broke download() in the HTTP access method with that last release! :( 2 days ago. Cut-n-paste error doing all of those try: except: around the http calls. This is a one line fix to remove the read I accidently inserted. The problem that resulted was not a failure, but rather 0 byte files after the 'successful' download.
Removed
NoneNothing removed
V5.103.1
[5.103.1] - 2025-07-08
Added
NoneNothing Added
Changed
EnhancedThe HTTP Access Method (for Viya) has some places where it has to make an HTTP call in a loop. There were some of these where I was doing connect() and close() on the connection, inside the loop. Other places I wasn't. There's no need to have those in the loops, so I removed that from the places it was doing those. I also changed upload from doing 'chunked' http transfer manually, to having it done by the http request call itself. I also added try/except around all of the http request calls that didn't have it, to handle unexpected failures better.
Fixed
NoneNothing Fixed
Removed
NoneNothing removed
[5.103.0] - 2025-04-15
Added
NoneNothing Added
V5.103.0
[5.103.0] - 2025-04-15
Added
NoneNothing Added
Changed
EnhancedThe submit*() methods of the HTTP Access Method (for Viya) include a GETstatusDelay= option for delaying the HTTP calls to see if the code is finished, which happen in a loop until done. Once done the LOG and LST can then be retrieved. This was implemented as a sleep() call in the loop checking the status. I’ve found that the API call can take a wait= value suchthat it is a synchronous call with a timeout. I’ve changed to provide the GETstatusDelay value to the API call instead of being asleep delay in the python code. This will improve this loop be eliminating excessive calls while at the same time being more performant since wait= will return as soon as the job finishes, while sleep will sleep that whole time before making another status call. I’ve changed the default value of GETstatusDelay from 0 to 30 seconds to take advantage of this functionality, so it will be used by default. GETstatusDelay is no longer required to eliminate excessive http status calls, while returning as soon as the code finishes.
Fixed
NoneNothing Fixed
Removed
NoneNothing removed