Skip to content

Releases: sassoftware/saspy

v5.107.1

24 Apr 12:57
66597e3

Choose a tag to compare

[5.107.1] - 2026-04-24

Added

  • None Nothing Added

Changed

  • None Nothing Changed

Fixed

  • Bug Fix Fixed submit_timeout not raising SASsubmitTimeout when the SAS job doesn't respond to the cancel request.

Removed

  • None Nothing removed

What's Changed

  • Fixed submit_timeout not raising SASsubmitTimeout when the SAS job doesn't respond to the cancel request.

v5.107.0

22 Apr 19:52

Choose a tag to compare

[5.107.0] - 2026-04-22

Added

  • Enhancement Added "submit_timeout" option to HTTP access method.

Changed

  • None Nothing Changed

Fixed

  • None Nothing fixed

Removed

  • None Nothing removed

What's Changed

  • New option added to HTTP access method: submit_timeout.

v5.106.0

20 Apr 14:59

Choose a tag to compare

[5.106.0] - 2026-04-20

Added

  • Enhancement Added "reuse_session" option to HTTP access method.

Changed

  • None Nothing Changed

Fixed

  • None Nothing fixed

Removed

  • None Nothing removed

What's Changed

  • New option added to HTTP access method: reuse_session.

v5.105.1

25 Mar 16:10
4c2739a

Choose a tag to compare

[5.105.1] - 2026-03-25

Added

  • None Nothing added

Changed

  • Enhancement Added Don/Phil as authors and updated contact email

Fixed

  • None Nothing fixed

Removed

  • None Nothing removed

What's Changed

Full Changelog: v5.105.0...v5.105.1

v5.105.0

25 Mar 15:23
4b0e83f

Choose a tag to compare

[5.105.0] - 2026-03-25

Added

  • Enhancement Added Apache Arrow support:
  1. Conversion between SAS datasets and Apache Arrow tables
  2. Arrow-based Parquet conversion with optional parameter
  3. Support for converting Parquet files to SAS datasets via Arrow
  • Enhancement Enhanced metadata retrieval:
  1. Add labels parameter to list_tables() to optionally retrieve dataset labels
  2. Add schema() method to SASdata to retrieve comprehensive schema information including extended attributes

Changed

  • Enhancement Applied autopep8 to fix indentation issues (E101, E11, W191). Some files had inconsistent indentation (width of 3 spaces), which has been standardized.

Fixed

  • Fix Fixed tests, updated deprecated syntax so tests would run correctly:
  1. test_pandas.test_wide_data
  2. test_sasdatatest_sasdata_describe_pandas_chars

Removed

  • None Nothing 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

09 Feb 21:06
a045435

Choose a tag to compare

[5.104.1] - 2026-02-09

Added

  • None Nothing Added

Changed

  • None Nothing Changed

Fixed

  • Fix In 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

  • None Nothing removed

What's Changed

New Contributors

Full Changelog: v5.104.0...v5.104.1

v5.104.0

30 Oct 18:00

Choose a tag to compare

[5.104.0] - 2025-10-30

Added

  • Enhancement A 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 the SAS_output_options configuration option allows for this:
    'asis' : False # defaults to how this has always worked

Changed

  • None Nothing Changed

Fixed

  • None Nothing Changed

Removed

  • None Nothing removed

v5.103.2

11 Jul 19:48

Choose a tag to compare

[5.103.2] - 2025-07-11

Added

  • None Nothing Added

Changed

  • None Nothing Changed

Fixed

  • Fix I 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

  • None Nothing removed

V5.103.1

08 Jul 13:34

Choose a tag to compare

[5.103.1] - 2025-07-08

Added

  • None Nothing Added

Changed

  • Enhanced The 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

  • None Nothing Fixed

Removed

  • None Nothing removed

[5.103.0] - 2025-04-15

Added

  • None Nothing Added

V5.103.0

15 Apr 18:24

Choose a tag to compare

[5.103.0] - 2025-04-15

Added

  • None Nothing Added

Changed

  • Enhanced The 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

  • None Nothing Fixed

Removed

  • None Nothing removed