Saspy

Latest version: v5.102.2

Safety actively analyzes 724051 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 9

5.102.2

Added

- `None` Nothing Added

Changed

- ` None ` Nothing Changed

Fixed

- `Fix` Issue 640 found an edge case in sd2df where a row was dropped for a missing value in a single column data set for IOM
and HTTP. STDIO didn't have the problem. Pandas read_csv required a column separator for that one case even though it didn't for
cases with more than one column, even for the last column. I fixed the stream of data being provided to pandas so it handled
this case.

Removed

- `None` Nothing removed

5.102.1

Added

- `Enhancement` PR 635 was contributed by a new contributor gregorywaynepower who enhanced the install instructions for installing
saspy from other package manages and enhanced the conda instructions as well. Appreciate it!

Changed

- ` None ` Nothing Changed

Fixed

- `Fix` Issue 634 was fixed in this release. The read_csv() and write_csv() methods generated a filename statement with double
quotes around the physical path. That's fine unless there are special characters that can be configused with marco variables; '&'
for instance. I fixed this to use single quotes which won't let the SAS parser think there are embedded marco variables to resolve
in the path specification.

Removed

- `None` Nothing removed

New Contributors
* gregorywaynepower made their first contribution in https://github.com/sassoftware/saspy/pull/635

5.102.0

Added

- `Enhancement` Per user request (620) I've added a parameter to the Submit*() methods, `reset=` which
resets the LanguageService to an initial state with respect to token scanning; the default is False.

Changed

- ` Enhancement ` I've changed the method for acquiring the local IP address of the client for the
SSH access method (STDIO over SSH) from using nslookup to using a a socket connect/close (to the remote host)
to get the IP. This was a problem with internal systems that happened w/ a VPN application that no longer
registers client machines w/ DNS such that the previous method didn't resolve the hostname. This should
cause no changes or regressions.

Fixed

- `Fix` From another internal consumer, I've fixed a bug in the HTTP access method around interrupt
handling for submit*() methods. When processing a keyboard interrupt in submit, while waiting for the
code to complete, the user is prompted with choices to take; `C`ancel the submitted code, `Q`uit waiting
for the results, or ignore - continue to `W`ait. Cancel is a new feature in this access method, and for
the case where Prompt=False (in the configuration file), where there can be no prompting, Cancel is
the default for this interrupt. What has been changed/fixed is that in the case of Prompt=False and
this interrupt happening and Canceling the submitted statements, that interrupt was not then being
raised so the calling code (Prompt=False is used for non-interactive scripts) could catch that and do
what was needed from the application. For the interactive case where the prompt is displayed, there
is no change. So, for the case where Prompt=False and a keyboard interrupt (ctl-C) is taken in submit,
the statements are Canceled (no change with that), and the interrupt is percolated to the caller
(this is the change), instead of just returning.

Removed

- `None` Nothing removed

5.101.1

Added

- `Enhancement` For an internal request to get around a VPN DNS problem, I've enhanced the way I try to get
the local IP address for the Python machine, when using the SSH access method to connect to a remote server.
So when the local machine isn't registered in DNS, this can get the local IP to use w/out requiring setting the
`localhost` key in your configuration. `localhost` will still be used if provided.

Changed

- `None` Nothing changed

Fixed

- `None` Nothing fixed

Removed

- `None` Nothing removed

5.101.0

Added

- `Enhancement` For an internal request to get data set information, like date time created/modified, ...
I added a method on the SASdata object called `attrs` which returns a 1 row dataframe with each of the attributes
returned by the ATTRN and ATTRC functions. Mostly they are character or numeric, but the create/modified are
returned as timestamps. This provides an easy programmatic way to access any of these values.

Changed

- `None` Nothing changed

Fixed

- `None` Nothing fixed

Removed

- `None` Nothing removed

5.100.4

Added

- `None` Nothing added

Changed

- `None` Nothing changed

Fixed

- `Tweak` This was from an internal reported issue. I noticed 2 places where I was submitting code internally where
I was missing the results='text' that I use for internal code submissions that don't need ODS results. For an unusual
(not user case) reason that was causing them a problem. There's no issue reported from the field for this, so just
cleaning up these 2 submits so they are the same as all of the others.

Removed

- `None` Nothing removed

Page 1 of 9

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.