PyRAF 2.1.14 has been released!
(v2.1 bundled with stsci_python 2.14 as well as stand-alone)
Version 2.1 originally released May 2013. All 2.1.* releases support Python versions 2.6, 2.7, 3.4, and 3.5.
Since the 2.0 release, the following enhancements have been made:
- parallel processing: The optional
writeparsvariable has been added to the list of possible IRAF-environment variables (login.cl) in the event that the user plans to parallelize their calling of tasks. Set writepars to 0 if you wish to ensure that .par files are not written to disk. By default, PyRAF will continue to write .par files to disk. (#187) Also see: FAQ 3.5.
- PyRAF was updated to work with Python 3.3 (from 3.2) concerning changes to the import module. (#189)
- PyRAF was updated to work with the latest versions of IPython. (#166, #192)
- Installation changes: STScI is experimenting with pip installation. While PyRAF may still be
python setup.py install, the suggested installation process will always be listed on the Download Page.
- The PyRAF FAQ has been updated with all the latest usage questions and guidelines, especially with respect to graphics and operating system differences. (#186)
- Further debugging code was added to help diagnose startup problems due to errors in one's login.cl file. (#178)
and the following bugs have been fixed:
- An issue was corrected where certain parameter values passed to tasks on the PyRAF command-line were not being sent correctly to the task, in certain cases when those parameters belonged to a PSET. (#191)
Python 2 versus 3: Python 2.7 will be supported for the foreseeable future. While many users will be interested in converting their scripts and processing to Python 3, it is expected that many of our users will remain on Python 2 for a while. This is release however, does not support Python 2.5.
PyRAF v2.1.14: There have been a series of mini-releases since v2.1, available also via pip. The latest of these is v2.1.14 (Jan 2017), which is basically PyRAF v2.1 with a few additional installation changes and bug fixes (actually a growing collection). You may always however find the absolute latest PyRAF version in the nightly tar-ball.
PyRAF 2.0 has been released
(bundled with stsci_python 2.13 as well as stand-alone)
June 2012. This release supports Python 2.5, 2.6, 2.7, and 3.2.
Since the 1.11 release, the following enhancements have been made:
- The PyRAF code has endured a relatively large overhaul and now supports both Python 2 and Python 3. The same code base supports both, though the Python 3 version has been run through the 2to3 tool. See FAQ 1.8 (#164).
- PyRAF graphics windows can now (optionally) be forced to stay always on top, i.e. in the foreground (#174).
- The UNLEARN command now works for TEAL-enabled tasks (r1520).
- EPAR/TEAL now has a status-message log which can be shown (r1521).
- EPAR/TEAL now use better native file dialogs on Linux (r1611).
- PyRAF installation and launching on Microsoft Windows is now quicker and easier.
- The version number is now accessible via "--version" (r1533).
and the following bugs have been fixed:
- Upon startup, PyRAF now makes smarter decisions about whether to even try to initialize graphics (#170).
- A bug in overplotting was fixed (OSX only, using xgterm) where the linestylle attribute list end was reached (#172).
- Jon N. at ANU found a bug (and submitted a fix!) in the real() function where sign information was mishandled. Thanks Jon! (r1557).
- PyRAF now handles when old IRAF-linked binaries (e.g. STSDAS 3.14) are used/packaged along with a current IRAF (v2.15.1, 2.16, +) by determining the WCS struct length on the fly (#173).
- Make installation kinder in the face of missing numpy and/or stsci.tools (r1559, r1561).
Python 2 versus 3: Python 2.7 will be supported for the foreseeable future. Many users will be interested in (but also cautious about) converting their scripts and processing to Python 3, but it is expected that the majority of our users will remain on Python 2 for some time. This is however, the last release which will support Python 2.5.
PyRAF 1.11 has been released
(bundled with stsci_python 2.12 as well as stand-alone)
July 2011. This release supports Python 2.5, 2.6, and 2.7.
Since the 1.10 bundled release, the following enhancements have been made:
- PyRAF is being prepared for the port to Python 3. Many code changes were made, though there should be no behavior changes noticeable to the user (#137, #154).
- PyRAF was modified to maintain compatibility with IRAF 2.15.*, both 32 and 64-bit (mostly due to graphics WCS changes). Also, better error messaging was implemented within PyRAF's core in order to debug related problems, often seen during startup. See PyRAF FAQ #1.5 (#156 and r1324).
- PyRAF is now more robust in the face of outdated or changing CL scripts, e.g. login.cl. The ErrorTracker class, used internally, is now keeping better track of offensive CL script code for reporting to the user.
- The 'unlearn' command is now available for TEAL-enabled tasks (r1412,3). TEAL also now automatically switches focus like EPAR (#159).
- PyRAF on Windows now has a desktop icon for launching the command-line interface (#130).
and the following bugs have been fixed:
- EPAR for TEAL-enabled tasks (.cfg file) now more elegantly handles changes to that task's .cfgspc definition: no traceback, simpler error message or, in some cases, even a dialog (#127). Validation errors are also handled more gracefully now (#158).
- It was noticed that text-based help in the terminal would not run without graphics capabilities, even though it should not require them (#147).
- On OSX, Python itself will no longer crash in a remote session if aqutil fails to load (#149).
- A bug in the Page menu (graphics windows) was fixed for the matplotlib graphics kernel (#150). Also fixed in this graphics kernel was redraws not occurring with 't' during implot (r1387).
- CL script parsing is now catching cases where a "#" is found in the right hand side of a set/reset statement (#155).
- Integer division was not behaving correctly in parsed CL code. See PyRAF FAQ #6.6 for a full discussion of the expected behavior (#157).
- PyRAF was throwing a traceback during a warning about certain CL system/shell commands (#162).
- PyRAF on Windows no longer requires the use of the HOME environment variable (#130).
Python 3: It is anticipated that the next full release of PyRAF (mid 2012) will have basic capabilities working under Python 3. Python 2.x however will be supported for quite a while. Many users will be interested in (but also cautious about) converting their scripts and processing.
Build/Install: The stsci_python and PyRAF code bases are now using "distribute" for installation. In the near future, this will open up more ways to download/install the software.
PyRAF 1.10 has been released
(bundled with stsci_python 2.11 as well as stand-alone)
Jan 2011. This release supports Python 2.5, 2.6, and 2.7.
Since the 1.9 bundled release, the following enhancements have been made:
- PyRAF commands can now be run as '-c' arguments to the 'pyraf' command, i.e. without entering the command-line shell (ticket #98). See also FAQ 2.9.
- The 'unlearn' function is now supported for TEAL-enabled tasks (ticket #128).
- The CL filename information has been added to any syntax errors thrown when PyRAF parses a CL file (ticket #135).
- A change was made to EPAR (for TEAL-enabled tasks) to allow it to recognize sub-modules of previously imported task packages (ticket #138).
- PyRAF can now be run when there is no widget library (i.e. Tkinter) installed on the node. As with no display, i.e. terminal interaction only, to run this way without error remember to setenv PYRAF_NO_DISPLAY (ticket #144).
and the following bugs have been fixed:
- Tabbed filename completion had an issue where PyRAF would list directory contents before they were requested by TAB (ticket #113).
- The 'pyraf -h' command now correctly displays all the possible command-line options (ticket #131).
- PyRAF was not elegantly handling when a corruption in the .pyraf_history file was found (ticket #132).
- An unused feature was removed: PyRAF had been adding its bin directory to sys.path (ticket #139).
- EPAR: There was a bug in the parameter interface code causing EPAR and TPAR to incorrectly save array-type parameters (ticket #145). A second bug during Save was fixed for cases where the 'uparm' variable is not correctly formed (ticket #141). Some EPAR GUI color fixes were made (ticket #134) as well.
- Plots were not being fully drawn after imexamine commands via ds9 when using the newly sped-up matplotlib graphics kernel (ticket #146).
- A user found an issue with saveToFile() and with clear() when they had no installed /usr/bin/tput (ticket #148).
- PyRAF installation notes state that the readline module is optional, but it was causing an exception when missing (ticket #151).
In addition, code changes not affecting behavior are gradually being made to PyRAF in an effort to support the eventual transition to Python 3. This release includes such changes.
PyRAF 1.9 has been released
(bundled with stsci_python 2.10 as well as stand-alone)
May 2010. This release supports Python 2.5, 2.6, and 2.7-rc1. Since the 1.8.1 bundled release, the following enhancements have been made:
- Matplotlib graphics kernel speed improvement: PyRAF v1.6 brought us the optional matplotlib graphics kernel (ticket #80). It provided cleanly resizable fonts and much smoother looking graphics than the default Tk kernel, but it was slower. This new version makes some assumptions about the GKI command stream from the IRAF task which allows it to severely limit the amount of drawing to the matplotlib canvas, resulting in improved performance. In some cases, graphics render as much as 5 to 10 times faster. (ticket #122)
- PyRAF without IRAF: PyRAF can now run in "No-IRAF" mode, where the PyRAF Python shell will run, and - although no IRAF tasks will be found (imheader, implot, etc.) - the basic capabilities of the PyRAF command-line are still supported. Some examples of working features are:
- parameter handling (e.g. epar/tpar/lpar/dpar)
- CL script conversion to Python (except of course any IRAF tasks called)
- both Python and CL syntax on the command-line
- minimum matching
- command history (up-arrow), which is persistent after exit
- access to shell variables and commands
- spawning native executables
- behind-the-scenes conversion to parenthesis, "sleep 3" -> "sleep(3)"
- the full span of Python's capabilities and Tkinter graphics
Please see PyRAF FAQ #1.3 for a full description. (ticket #107)
- Command history persistence was added to PyRAF. Upon starting a PyRAF session, the up-arrow can be used to recall commands from the previous session(s), similar to ipython or your favorite shell. (ticket #115)
- X11 graphics initialization has been changed to help Linux users (see FAQ #5.7). By setting an environment variable within the Python process, PyRAF now preempts the majority of issues with the X11 composite extension. (ticket #123)
- Mouse-wheels are now supported in EPAR (and TEAL) for those Python installations with Tk 8.5 or better. (ticket #120)
- Commonly used invocation options may now be specified in the environment variable named 'PYRAF_ARGS'. (ticket #114)
- For PyRAF-only users (as opposed to those downloading all of stsci_python), installation instructions have been created on the web site. A README file was also created to direct such users to that page. (ticket #121)
and the following bugs have been fixed:
- Testing under Python 2.7-beta revealed an import error which was due to a change in Python's own UserDict type. (ticket #126)
- PyRAF on OSX 64-bit Python had an issue where mouse-warping during graphics tasks left the mouse cursor in the top left corner of the screen. (ticket #110)
- PyRAF initialization code was refactored so that PyRAF will perform no graphics setup when run in non-graphics mode (e.g. setenv PYRAF_NO_DISPLAY 1). (r1092-1096)
- A bug in "tpar" was causing control characters to be shown on the screen (making navigation difficult) upon the second call within the same PyRAF session (OSX). This has been fixed. (ticket #117)
- Also on the Mac, the "help" command was emitting BadWindow X errors when called from PyRAF running inside the Terminal application. This was related to X11 focus-switching which was not actually necessary in that specific situation. (ticket #124)
- sleep: version 1.8.1 included the cleaning up of some command-line functions' signatures. The sleep() function had been changed to require an argument (seconds), since a call with no arguments was equivalent to "sleep 0" which does not seem useful. However, there are existing IRAF CL scripts with such "sleep" calls, so PyRAF was changed in 1.8.2 to re-allow this. (r1120)
PyRAF 1.8.2 has been released
The PyRAF v1.8 series supports Python 2.6. Version 1.8.2 is a duplicate of the 1.8.1 bundled release with a single bug fixed:
- sleep: version 1.8.1 included the cleaning up of some command-line functions' signatures. The sleep() function had been changed to require an argument (seconds), since a call with no arguments was equivalent to "sleep 0" which does not seem useful. However, there are existing IRAF CL scripts with such "sleep" calls, so PyRAF was changed in 1.8.2 to go back to allowing this. This is also fixed in the trunk (nightly build).
PyRAF 1.8.1 has been released
(bundled with stsci_python 2.9 only)
- The PyRAF v1.8 series supports Python 2.6. Since the last full release of PyRAF (v1.8), the following enhancements have been made:
- Process caching has been made more flexible with the addition of the prcacheOff() and prcacheOn() functions. The former sets the process cache size to 0 and flushes it, while the latter re-enables caching. (ticket #95)
- On OSX the user might have a Python build which is linked with X11, and/or the user might have a Python build which is linked with native graphics (Cocoa/Aqua). For the former case, PyRAF needs to load an X11 shared object. For the latter case, PyRAF needs to load an Aqua module. PyRAF will now attempt to determine upon startup which is the case, and load the appropriate item. This affects EPAR and all graphics windows. (r1063, see ticket #86)
- To the Python API (iraf.task()) was added the ability to easily send multi-line CL strings to be executed. Currently, this is most useful in regression testing PyRAF. (ticket #104)
- In an attempt to start moving the codebase toward Python 3 compatibility, future division is now in use in all PyRAF modules as well as those relied upon in PyTools. (ticket #102)
- For code maintainability a large set of functions in iraffunctions.py had repeated code (related to I/O redirection) removed/consolidated via the use of decorators. (ticket #106)
And the following bugs have been fixed:
- PyRAF started with the '-s' option is now correctly silent as advertised. See 'pyraf -h' for a list of command-line options. (ticket #97)
- Mixed-casing in task names was causing problems for the command-line help system. (r1059)
- A warning-generating incompatibility with matplotlib 0.99.1 was fixed. (r1077)
- PyRAF requires pytools (from stsci_python).
- This version of PyRAF does not require a purge of the clcache in home$pyraf, though the next version may.
PyRAF 1.8 has been released
June 2009. This version of PyRAF supports Python 2.6. While stsci_python v2.8 does not yet fully support Python 2.6, enough of it does for PyRAF (which requires stsci_python's pytools package).
Since the 1.7.1 bundled release, the following enhancements have been made:
- PyRAF now runs under Python 2.6 (changes to the built-in 'import', updated the dict-like classes in PyRAF, etc.) with ticket #93, and PyRAF now handles relative imports (ticket #85).
- The 'which' and 'whereis' commands have been added to mimic the CL capabilities (ticket #90).
- PyRAF was updated to handle a change to the matplotlib internal API, in a backwards compatible way (r1010).
- The conversion to the new integer division has begun with some of the lower risk modules (r1021-1023).
The following bugs were fixed:
- A few PyRAF windowing problems occurring on the Mac were related to X11 errors, or improperly handled native calls from within an X11-based PyRAF. (ticket #84) Note that as of ticket #86, a new version of PyRAF is available which can be run natively on Mac OS X (Aqua).
- EPAR was not showing a dash ('-') as a pulldown menu option. (ticket #100)
- The EPAR radio buttons on Linux, which were continually filled-in with black, have been fixed. (ticket #101)
- Fixed a problem in the way help() on a numpy object works (r1012).
PyRAF 1.7.1 has been released
(bundled with stsci_python 2.8 only)
11 May 2009. Since the last full release of PyRAF (v1.7), only a few bug fixes and enhancements have been made. The majority of the PyRAF development fell under the umbrella of a refactoring effort so that the PyRAF software dealing with task parameters could be used more generally outside of PyRAF. A large set of code was generalized and moved to "Pytools", including the backbone of the EPAR GUI. EPAR itself is still available within PyRAF, but has been enhanced as a result of this effort. The Load and Save-As capabilities (ticket #87) have had their finishing touches applied. For example, the list of Load file choices is now pre-populated and shown in a pull-down menu from the top of the GUI. EPAR's issue with the scrollbar slider (jumping from first to last parameter upon clicking Unlearn) has been fixed, the help text has been corrected, and on native OSX, EPAR now has a default color (besides black and white).
In addition, the following bugs have been fixed:
- Corrected the bug which raised an exception with "pyraf -h" (ticket #96)
- Fixed an undocumented bug in TPAR which would raise an exception unnecessarily when checking parameter values (r961)
- Changed gki_psikern_tests.py tests so that they run much more reliably on Solaris (r946-9)
- Corrected the definition of the color blue for plotting and overplotting so that now it looks blue not black (thanks to Erik Tollerud) (r994)
Note: This version of PyRAF does require pytools (which is in stsci_python).
PyRAF 1.7 has been released
2 December 2008. Since the 1.6.1 bundled release, the following enhancements were made:
- Aqua Support: PyRAF now supports native OS X (Aqua) execution in a beta capacity (i.e. without the need for an X server). The default on Mac OS X is still to run locally with X, but for those interested users, PyRAF trac ticket #86 describes how to enable the Aqua version. This has now been run on both OSX 10.4 and 10.5.5. (ticket #86)
- Further changes to TPAR and EPAR were made. TPAR can now "Load" saved .par files (like EPAR), if an appropriate file is found in the 'uparm_aux' directory. This directory may also be specified via the UPARM_AUX environment variable. List- and file-chooser-dialogs were added to TPAR for Load and Save-As, and OSX-specific changes were made for both tasks. Also, TPAR will now support both the older (0.9.7.*) and newer (0.9.8.*) versions of urwid. (ticket #87, in part)
The following API change was made:
- The getParam() call for a task now returns the native value instead of a string version, by default. The string version can still be requested however, via a "native=0" argument to the call. (ticket #88)
The following bugs were fixed:
- PyRAF now correctly handles the situation when home$uparm does not exist. This was causing failures during import, which is confusing to the user. (ticket #91)
- On OS X, HTML help (from graphics applications, e.g. EPAR) will now use the correct (system-selected) application for displaying HTML, rather than simply trying to call Netscape. (ticket #89)
- PyRAF will now handle a little better the situation where a user tries a task like 'implot' with non-English locale characters. The character input actions for the task will of course not work in such a case, but the plot will appear without crashing. (ticket #92)
Note: This version of PyRAF does not require pytools or a purge of the clcache in home$pyraf, but the next version will.
PyRAF 1.6.1 has been released
(bundled with stsci_python 2.7 only)
PyRAF 1.7 will be out soon.
In addition to a few changes to regression test scripts and other minor edits, the following enhancements have been made since the 1.6 release:
- Preparations for Native-OSX (Aqua) Support in 1.7: Changes were made to allow PyRAF to be run natively on OSX (i.e. without the need for an X server). This capability is currently pre-"beta". The default is still to run under X on OSX, but for those interested parties, PyRAF Trac ticket #86 describes how to enable the Aqua version. OSX 10.5 users will notice a deprecation warning until PyRAF 1.7. The full beta capability will appear in PyRAF 1.7. (ticket #86)
- EPAR and TPAR were both enhanced to allow "Save As". The user may now save a particular version of a parameter file to a user-specified directory (set the CL variable 'uparm_aux' for convenience). EPAR can also "Load" such a saved .par file, if an appropriate one is found in the 'uparm_aux' directory. TPAR will have the "Load" capability in PyRAF 1.7. (ticket #87)
- PyRAF graphics via the matplotlib graphics kernel now support matplotlib 0.98 and higher (rev 884).
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)
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:
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:
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.
- 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
- not supported under Solaris.
See the PyRAF Trac site (listed/linked at the top of this page) 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
17 Oct 2003
PyRAF v1.1 has been released.
Changes made since the 1.1beta1 release:
- 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.
- 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.
- 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.
Earlier than v1.1
Here is historical CVS information on earlier changes.