STScI Logo
STScI Logo
HST
Banner

PyRAF Release Notes

Earlier changes are available here.
See tickets referenced below on the PyRAF Trac site.


7 May 2008

PyRAF 1.6 has been released

Changes since the 1.5 release:

The following enhancements were made:

  • PyRAF now includes an optional Matplotlib graphics kernel (beta version), employing the TkAgg backend. The advantage of anti-grain geometry (AGG) over the default Tkinter graphics kernel is that it renders smoother looking plots and cleaner, more scalable fonts. This option is enabled by setting the environment variable PYRAFGRAPHICS to "matplotlib". The default choice is still the Tkinter based graphics kernel. (ticket #80)
  • A collection of built-in IRAF functions (for error handing, string manipulation, trig, etc.) had been added to the beta ECL release, and they are now also available within PyRAF. The new functions are listed under "New Builtin Functions" here. (ticket #8)
  • PyRAF's terminal parameter editor (tpar) was enhanced to accommodate API changes made to urwid between versions 0.9.7 and 0.9.8. Tpar is now compatible with both urwid versions. (ticket #69)
  • The FAQ was moved from the old stsdas.stsci.edu site out to the main PyRAF site. It was reformatted slightly for appearance, and some minor corrections/updates were made. The FAQ can now be found here. (ticket #28)
  • In an effort to help debug a vague error during startup, the amount of information in the 'Unknown parameter requested' error was expanded to include the task name and package name. (ticket #15)

The following minor API changes were made:

  • The "filename" parameter was removed from the makeIrafPar() function. Internal to the function, it was being passed to multiple places where it was never used. It is not expected that many external PyRAF users will have scripts which directly call this function. (ticket #24)
  • The 'deg' argument was removed from the clDms() function. It had been deprecated since April 2004 and it has now been removed. (ticket# 25)

The following bugs were fixed:

  • To be more IRAF-compliant, 'epar' is now run when the user executes a pset. (ticket #17)
  • The substr(string, start_index, end_index) function was made more compatible with the IRAF cl version by ensuring that it returns an empty string if the start index is given as 0 (the start index is 1-based like IRAF/cl strings). (ticket #82)
  • In Ipython-mode ("% pyraf --ipython"), PyRAF was in some cases not correctly handling the asterisk for wildcarding file names. (ticket #81)
  • A stack-trace producing bug was fixed in the code which redirects graphics output to a file (via '>G'). (ticket #77)
  • The "%r" format in iraf.printf() was causing a SyntaxError for large long integers, and it was not correctly handling negative numbers. (ticket #79)
  • The 'stty' command now correctly reports the number of lines and columns in the terminal window when requested. If the window is resized, 'stty resize' is still required. (ticket #20)


26 February 2008

PyRAF 1.5 has been released

Changes since the 1.4 release:

The following enhancements were made:

  • Some general refactoring of PyRAF's GKI-related classes was performed in preparation for the coming Matplotlib graphics kernel. The first look at this new capability is expected in PyRAF 1.6. (ticket #76)
  • The PyRAF 'time' command now matches the format of the associated cl command. (ticket #67)
  • Two graphics-related test modules were added to PyRAF for automated regression testing. (rev 802, no ticket)
  • Internal GkiKernel behavior was changed so that communication pipe constructs are able to handle special redirection cases. This is useful for the embedding of PyRAF within external applications. (ticket #74)

The following bugs were fixed:

  • There was a bug which allowed the wrong package to be assigned to a task in cases where the package script loaded a different package. (ticket #68)
  • The algorithm used by PyRAF to search for task parameters was changed to more exactly match that used by the cl. (rev 796, no ticket)
  • The sscanf module's buffer size in PyRAF was made to be consistent with the same buffer size in the cl. (ticket #65)
  • The ability to append graphics (e.g., via "append+") was not working correctly due to a problem in the logic of when to initialize a new graphics engine. (ticket #70)
  • As a performance improvement, element checks for IRAF arrays were simplified, otherwise the whole array was being checked every time a single element was assigned. For large arrays (thousands of elements), this resulted in a performance increase of orders of magnitude. (rev 803, no ticket)
  • PyRAF can now handle plots appended to GKI metacode files (e.g., "prow dev$pix 250 append+ >>G test.gki") via the redirection operators. (ticket #72)
  • On Linux (Ubuntu) a user was seeing a traceback with "cd .." which turned out to have to do with poor handling of Unicode in PyRAF commands. Such PyRAF commands are now being handled correctly. (ticket #73)


15 June 2007

PyRAF 1.4 has been released

Changes since the PyRAF 1.3 release:

The following changes were made:

  • Support for IRAF ECL-style error handling
  • Added unlearn method to IrafPkg class so that all tasks in package can be unlearned if the package is loaded.
  • No dependence on Numeric (now uses numpy) (ticket #36)
  • Added epsilon variable to PyRAF to match that of IRAF (for testing equality of floats). (ticket #62)
  • Support for next statement in for loops (ticket #60)

The following bugs were fixed:

  • lpar now encloses strings in quotes (ticket #58)
  • lpar prints out non-hidden parameters before hidden parameters.
  • The real() and int() functions were not robust enough (not as forgiving as the IRAF CL versions) (ticket #61)
  • Problem opening parameter filename specifications that use iraf variables as part of path. (ticket #64)
  • setup.py failing to find X11 libraries when using --with-x= flag on 64-bit systems.
  • PyRAF was ignoring the IPython user configuration options.
  • Added global names like 'yes' and 'no' to the ipython shell.
  • IPython new support for unicode broke PyRAF (within ipython).
  • Overloaded IPython's cd command with that of PyRAF.
  • Fixed the execution of long command lines in the ipython shell.
  • Exception thrown when fscan can't convert a string to the type of the receiving variable (no longer raises exception). (ticket #63)


14 November 2006

PyRAF 1.3 has been released

Changes since the PyRAF 1.2 release:

This version includes the following enhancements and bugfixes:

Enhancements:


Support for the IPython shell environment. IPython a great many shell enhancements than are provided by the PyRAF interactive shell. This includes all the PyRAF shell features and such things such as:

  • syntax highlighting
  • many magic and file-level commands (e.g., cd, ls, rm, etc.)
    • includes ability to define ones own magic commands
  • extensive history features
  • extensive help features
  • debugging support (pdb mode)
  • the ability to work with several differnt GUI toolkits
There is extensive documentation for IPython. It can be started by typing:

pyraf --ipython

It is our plan to eventually make this the default mode for pyraf.   See pyraf/docs/ipython_notes.txt for more information on using IPython with PyRAF.

Pyraf now has an alternate parameter editor: tpar.  tpar is:
  • text/keyboard rather than Tk GUI based
  • suitable for low bandwidth network links
  • similar in flavor but not identical to IRAF's CL epar
  • vi or emacs keybindings driven by the "editor" environment variable
  • invoked just like epar:    tpar <taskname>
  • not supported under Solaris.

installation requirements:
   using IPython requires installation of IPython version 0.7.2 or greater found here: http://ipython.scipy.org/moin/Download
   using tpar requires the installation of the text widget package urwid version 0.9.4 or greater found here:  http://excess.org/urwid/

Bugfixes:


See the PyRAF Trac site for more details

Trac number:   Description
52      PyRAF imaccess function returns True for a filename with spaces only
53      scan and fscan can't eval objects in iraf namespace
54      PyRAF aborts on startup if history command in login.cl or loginuser.cl
55      PyRAF traceback handling broken under Python 2.5
56      imaccess() returns 1 for a filename with empty brackets


03 November 2005

PyRAF 1.2 has been released

Changes since the PyRAF 1.1.2 release:

  • The addition of limited support for GOTO statements in CL scripts. GOTOs that jump forward and do not jump to labels within code blocks are now supported. (It should be possible to restructure CL code in almost all cases to use only forward GOTOs)
  • Multidimensional arrays now permitted as parameters and local variables in CL scripts. Other array-related bugs fixed (e.g., they can be used in epar now.)
  • Python 2.4 introduced changes that caused problems with the use of INDEF values in places where Python functions expected a float or int value. This has been fixed so such uses can continue. All the built-in CL functions have been modified to handle INDEF values correctly. Comparisons of INDEF values now behave the same as IRAF CL comparisons of INDEFs.
  • Fixed problem with certain tasks' terminal interactions that caused the task to hang (e.g., with phot)
  • Fixed bug that caused CL scripts with many consecutive hash characters to hang the Python session.
  • If Verbose is set, PyRAF now prints a traceback when syntax errors are caught in parameter file parsing.
  • int parameters now accept (and truncate) float values
  • Improved error message for CL syntax errors.
  • "set" has been added to the list of keywords that PyRAF treats differently when used in a way that is different from how the new (as of Python 2.4) Python "set" is used.
  • Performance of epar has been improved by caching the Tk default root window. This results in much faster startup times on platforms that have slow Tk window creation times
  • Changes made to support the simultaneous use of multiple image displays using named pipes (FIFOs). This now works identically to IRAF.
  • Added changes to support installation on 64-bit Linux (for X11 linking)
  • Improved handling of Python boolean values.
  • help works on functions again (broken by Python's addition of function attributes)
  • Many of the above changes were made to support the Gemini data reduction packages.
  • Added spaces after the prompts in CL compatibility mode.
  • the access function (which tests for file existance) now returns True for the special file names "STDIN", "STDOUT", and "STDERR" matching IRAF's behavior.
  • Various improvements to the CL script cache handling, including the compileall script (which now rename the old cache directory to clcache.old).
  • Added some more useful scripts to tools:
    • checkcompileall.py: Read output of compileallcl.py and pull out info on just the scripts that had errors or warnings
    • cachesearch.py: Search the CL cache for entries with Python code that matches a particular regular expression.
    • cachecompare.py: Compare the contents of two CL caches, listing the names of scripts where the Python code differs.

31 March 2005

PyRAF 1.1.2 has been released

Changes since the PyRAF 1.1.1 release:

  • The file chooser option in epar was changed to allow operation under both Python 2.2 and 2.3; Tkinter changed the way Tcl variables were passed around from strings to objects.
  • The 'help()' method in 'epar.py' was modified to include the package name with the task name when extracting the help information from IRAF. This avoids picking up the help file for the wrong task when there is a name conflict between tasks from different IRAF packages, such as 'dither.tran' and 'noao.translit'.
  • Python 2.4 changed the signature of the 'checkcache' function in the 'linecache' module and this function was added to traceback calls in Python. The PyRAF overloaded version needed to be modified to be consistent with that new signature in order to avoid crashing out of the command-line interpreter when Python hits an Exception.
  • A Python 2.3 boolean bug was fixed in the IRAF bool class
  • Support was added for extended log axes in plots (type=ELOG). IRAF plots often switch to to this type if there are 0 or negative values in a log plot. This type uses log for values greater than 10, -log10(-x) for negative values less than -10, and x/10 for values between 10 and -10.
  • A bug was fixed wherein PyRAF would crash when exiting from a session initiated without graphics support (-n).

1 June 2004

PyRAF 1.1.1 has been released

Changes since the PyRAF 1.1 release:

  • Python 2.3 uncovered a bug in the CL to Python translator that had the effect of breaking use of CL arrays. This has been fixed.
  • Steve Walton submitted a fix that allowed background PyRAF scripts to run successfully on Fedora. This fix has been included in 1.1.1.
  • Intermittent start-up problems on Mac OS X were being encountered because of problems with interactions with short-lived processes. This has been corrected.
  • Sexagesimal strings with negative signs (e.g., "-12:30:40") were not being handled correctly. This has been fixed.
  • The GetPrompt function in the programming interface has been renamed GetWithPrompt (the old name is still available for backward compatibility purposes) to give it a more accurate name.
  • Replace 'deg' keyword of clDms function with more aptly named 'seconds'. For backward compatibility, retained deg keyword but issue a deprecation warning if it is used.
  • A PyRAF Programmer's Guide is now available. Check the documentation link on the PyRAF home page:

    http://www.stsci.edu/resources/software_hardware/pyraf


17 Oct 2003

PyRAF v1.1 has been released.

Changes made since the 1.1beta1 release:

Plotting related:

  • Interactive plots made with the Tkplot graphics kernel got progressively slower and slower as more and more plots were rendered. This no longer happens.
  • In the beta the graphics cursor flickered while being moved on workstation displays and was unusably slow on remote displays over slower network connections. It has been speeded up signficantly which has eliminated the flickering on workstations and made it usable for remote displays.
  • Some tasks were plotting against a grey background instead a black background. This has been corrected.
  • Points plots used points larger than desirable. These have been reduced in size.
  • Y-axis labels now are rendered in the proper direction.
  • Problems with imcur not quitting when run from some tasks was corrected.
  • A pre-existing problem that prevented some tasks from plotting on the image display (e.g., ellipse in isophote) has been fixed.
  • On some displays the text in the help for the graphics window was truncated, and attempts to resize the window did not display the truncated text. This has been corrected.
  • In previous versions problems would arise if the focus was removed from the terminal window before PyRAF was finished loading. This could result in interactive graphics hanging (in particular, not recognizing character commands). This problem has been corrected.
  • The beta release changed the behavior of how image cursor mode was terminated by prompting the user for confirmation. This change has been removed so that it behaves as it used to for PyRAF 1.0
Python 2.3 related:
  • Carriage returns failed to move focus from one entry field to another in epar. This arose from a bug introduced in Python 2.3 which this release now works around to produce the correct behavior.
  • A change in a Python library caused paging of files to fail and plots to issue a runtime error. This has been corrected.
  • Tab completion stopped working due to an incompatible change in the underlying Python library. This has been fixed.
  • Exiting PyRAF after using interactive image display cursors resulted in error messages. This was due to a bug introduced in the Python 2.3 socket module, and has been worked around by modifying PyRAF code.
The implementation of the automatic conversion to string of all arguments passed to foreign tasks caused some simple commands such as "ls *" to fail. This was fixed to prevent special shell characters (such as '*' and '?') from being 'escaped' and passed as is.


31 Mar 2003

PyRAF v1.1beta1 has been released.

New features:

  • First release for MacOSX.
  • A TK based graphics kernel available (default) as well as the already existing OpenGL dependent kernel. They can be switched by setting the environment variable PYRAFGRAPHICS to 'tkplot' or 'opengl'.
  • Added a 'Close' button to the graphic window's HELP window.
Behavior changes and improvements:
  • PyRAF now works with PyOpenGL 1.5.x as well as PyOpenGL2.
  • The 'nint' function was added to the IRAF CL interpreter so that 'nint(2.4)' will work.
  • Added use of 'q' in IMCUR mode for quitting from interactive image graphics mode. This includes a verify step to avoid accidentally exiting prematurely, and does not interfere with any task-based command.
Bug Fixes:
  • A delay in interactive plotting that showed on Linux with some windows managers was corrected.
  • Fixed a problem which showed when running pyraf and TERM env variable was not defined.
  • Fixed a problem with reading inline comments in CL.
  • All arguments passed to ForeignTasks are now converted to strings, including those not naturally converted to strings. This allows 'x=5.0;echo(x)' to work in both IRAF and PyRAF (when echo is set as a foreign task).
  • Removed mapping of 'real' with 'float' and replaced 'real' with a separate internal function which reproduces IRAF behavior and handles sexagesimal numbers properly. For example, iraf.real('12:30:40') now works.
  • Provide a default WCS for graphics window to address problems with trying to 'append' a plot to an un-initialized plotting window.
  • Redirected prompts for parameters during interactive graphics sessions from the terminal to the graphics window's status buffer. This keeps the prompting question and query in the same window during the session. This required redirecting STDERR to the graphics window along with STDIN/STDOUT.


Copyright  | Help  | Printable Page