Saspy

Latest version: v5.102.1

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

Scan your dependencies

Page 1 of 9

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

5.100.3

Added

- `Enhancement` I added the timestamp of when the SAS Session was started to the output when submitting the SASsession Object.
See `SASsession started` below:

>>> sas
Access Method = IOM
SAS Config name = iomj
SAS Config file = /opt/tom/github/saspy/saspy/sascfg_personal.py
WORK Path = /sastmp/SAS_work7AD4000A185A_tom64-7/SAS_workA74A000A185A_tom64-7/
SAS Version = 9.04.01M8P01182023
SASPy Version = 5.100.3
Teach me SAS = False
Batch = False
Results = Pandas
SAS Session Encoding = utf-8
Python Encoding value = utf_8
SAS process Pid value = 661594
SASsession started = Tue Sep 10 13:52:19 2024


Changed

- `None` Nothing changed

Fixed

- `Fix` From Issue 516, I reworked how SASPy looks through the SASLOG to see if there was an ERROR, to set the
SASsession attreibute, `sas.check_error_log`, to True. The usual 'ERROR:' that starts a line in the SASLOG sometimes
has line number/col number embedded in it, though that's not the usual case. I reworked all of the places looking for
ERROR: in the log to use a better regex expression that finds both that case and the other; for instance:
`ERROR 180-322: Statement is not valid or it is used out of proper order.`


Removed

- `None` Nothing removed

Page 1 of 9

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.