python rope 0.6.1
Python rope 0.6.1
Python rope is a Python IDE. more>>
Refactoring: In recent years refactoring has become a basic task of everyday programing, specially in java community. In the agile programing methodologies, like Extreme Programing, Refactoring is one of the core practices.
Some IDEs support some basic refactorings like PyDev (which uses bicycle repair man). These IDEs have a limited set of refactorings and fail when doing refactorings that need to know the type of objects in the source code (specially for relatively large projects). rope tries to provide a rich set of refactorings. Some of the refactorings require type inferencing which is described later.
Auto Completion: One of the basic features of modern IDEs is the availability of auto-completion. Some Python IDEs have auto-completion support but in a limited form. Since the type of many variables cannot be deduced from simple analysis of the source code. Auto-completing modules names, class names, static methods, class methods, function names and variable names are easy. But auto-completing the methods and attributes of an object is hard. Because the IDE needs to know the type of the object that cannot be achieved easily most of the time in dynamic languages. rope uses Type Inferencing algorithms to solve this problem.
Type Inferencing: One disadvantage of dynamic languages like python is that you cannot know the type of variables by a simple analysis of program source code most of the time. Knowing the type of variables is very essential for providing many of the refactorings and auto-completions. rope will use type inferencing to overcome this problem.
Static type inferencing uses program source code to guess the type of objects. But type inferencing python programs is very hard. There have been some attempts though not very successful (examples: psycho: only str and int types, StarKiller: wasnt released and ShedSkin: good but limited). They where mostly directed at speeding up python programs by transforming its code to other typed languages rather than building IDEs. Such algorithms might be helpful.
There is another approach toward type inferencing. That is the analysis of running programs. This dynamic approach records the types variables are assigned to during the program execution. Although this approach is a lot easier to implement than the alternative, it is limited. Only the parts of the program that are executed are analyzed. If developers write unit tests and use test driven development this approach works very well.
pythondr 0.0.1
pythondr project is a simple python library for parsing the TV-channel info at http://dr.dk. more>>
python-money 0.1
python-money provides carefully designed basic Python primitives for working with money and currencies. more>>
python-money 0.1 provides another extremely useful utility for people who have to work a lot with currencies. It actually offers carefully designed basic Python primitives for this process.
The primary objectives of this module is to aid in the development of financial applications by increasing testability and reusability, reducing code duplication and reducing the risk of defects occurring in the code.
The module defines two basic Python classes -- a Currency class and a Money class. It also pre-defines all the world's currencies, according to the ISO 4217 standard. The classes define some basic operations for working with money, overriding Python's addition, substraction, multiplication, etc. in order to account for working with money in different currencies. They also define currency-aware comparison operators. To avoid floating point precision errors in monetary calculations, the module uses Python's Decimal type exclusively.
The design of the module is based on the Money enterprise design pattern, as described in Martin Fowler's "Patterns of Enterprise Application Architecture". This project also contains Django helper classes for easy integration with python-money.
Major Features:
- Offers testability and reusability, reducing code duplication and reducing the risk of defects occurring in the code
- Defines a currency class and a money class
- Uses Python's Decimal type exclusively to avoid floating point precision errors
- The design of the module is based on the Money enterprise design pattern
- Contains Django helper classes
Python OpenID 1.1.1
Python OpenID is a set of Python packages that support use of the OpenID decentralized identity system. more>>
Python OpenID can be used to enable single sign-on for your Web sites or for running an OpenID server. Example code is supplied and a variety of storage back-ends are supported.
Main features:
- Refined and easy-to-use API.
- Extensive documentation.
- Many storage implemetations including file-based, SQL, and memcached.
- Simple examples to help you get started.
- Licensed under the LGPL.
Enhancements:
- This release includes support for Yadis discovery of OpenID servers and OpenID extensions.
Python 2.5.1
Python is a high-level scripting language. more>>
Python combines remarkable power with very clear syntax. It has modules, classes, exceptions, very high level dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to various windowing systems (X11, Motif, Tk, Mac, MFC). New built-in modules are easily written in C or C++. Python is also usable as an extension language for applications that need a programmable interface.
The Python implementation is portable: it runs on many brands of UNIX, on Windows, OS/2, Mac, Amiga, and many other platforms. If your favorite system isnt listed here, it may still be supported, if theres a C compiler for it.
The Python implementation is copyrighted but freely usable and distributable, even for commercial use.
Python is an interpreted, object-oriented, high-level programming language with dynamic semantics. Its high-level built in data structures, combined with dynamic typing and dynamic binding, make it very attractive for Rapid Application Development, as well as for use as a scripting or glue language to connect existing components together.
Pythons simple, easy to learn syntax emphasizes readability and therefore reduces the cost of program maintenance. Python supports modules and packages, which encourages program modularity and code reuse. The Python interpreter and the extensive standard library are available in source or binary form without charge for all major platforms, and can be freely distributed.
Often, programmers fall in love with Python because of the increased productivity it provides. Since there is no compilation step, the edit-test-debug cycle is incredibly fast. Debugging Python programs is easy: a bug or bad input will never cause a segmentation fault. Instead, when the interpreter discovers an error, it raises an exception.
When the program doesnt catch the exception, the interpreter prints a stack trace. A source level debugger allows inspection of local and global variables, evaluation of arbitrary expressions, setting breakpoints, stepping through the code a line at a time, and so on.
The debugger is written in Python itself, testifying to Pythons introspective power. On the other hand, often the quickest way to debug a program is to add a few print statements to the source: the fast edit-test-debug cycle makes this simple approach very effective.
python-dime 0.1
python-dime project provides a way to parse and generate DIME messages. more>>
Direct Internet Message Encapsulation (DIME) is a binary message format that can be used to encapsulate multiple payloads into a single message.
Python XHTML 0.4.1
Python XHTML is a simple Python module for the generation of valid XHTML. more>>
ToDo:
* include tests for all methods in xhtml_test.py
* ensure that all text that is added to the document is xml safe
* include methods for added w3.org validation link buttons
* complete support for XHTML 1.1 specification
python-graph 1.6.0
A library for working with graphs in Python more>> python-graph 1.6.0 is a useful software which functions as a library for working with graphs in Python. This software provides ?a suitable data structure for representing graphs and a whole set of important algorithms.
The code is appropriately documented and API reference is generated automatically by epydoc. Comments, bug reports and suggestions are welcome.
Major Features:
- Support for directed, undirected, weighted and non-weighted graphs
- Support for hypergraphs
- Canonical operations
- XML import and export
- DOT-Language output (for usage with Graphviz)
- Random graph generation
- Accessibility (transitive closure)
- Breadth-first search
- Cut-vertex and cut-edge identification
- Depth-first search
- Heuristic search (A* algorithm)
- Identification of connected components
- Minimum spanning tree (Prims algorithm)
- Mutual-accessibility (strongly connected components)
- Shortest path search (Dijkstras algorithm)
- Topological sorting
Enhancements: Fixes an installer bug.
Requirements: Python
Python MP3 Manager 0.9.1
PyMM is an MP3 Manager written in Python. more>>
I used to use the windows program MP3 Manager to manage my MP3s. I have since migrated my MP3 collection to Unix, and I therefore needed something similar on that platform. The project also gave me an opportunity to get aquainted with wxPython, which I must say is a quite suberb windowing toolkit.
You can use the program to manage your collection, create playlists, control the XMMS player, edit ID3 tags and so forth.
You can install the program in two ways:
1. run "python setup.py install". This requires write access to the python installation tree. It will install a startup script in the python bin directory. Then just type "pymm" to start the program.
This requires Python 2.0/1.6 or that you have Distutils installed.
2. Just put this directory somewhere and start the program with "python pymm.py". I made a link to the pymm.py script in a bin directory (i.e something like "ln -s /pymm.py /usr/local/bin/pymm").
Enhancements:
- pymm.py (Timer.Notify): Added total time of track to statusbar.
- xmms.py (Xmms): Added get_playlist_time(pos).
python-amarok 0.1.0
python-amarok is a fairly complete amaroK remote control class for Python. more>>
python-amarok is extremely useful for amaroK scripts and other applications and makes it possible to remote control amaroK by calling methods from an amaroKProxy instance.
In addition, it implements the Observer/Observable pattern so you can deal with events in an object oriented, loosely coupled fashion.
Even better, you can call an amaroKProxy instances collection.getSong(filename) method to get a Song object, with track, artist, album name, and elegant "Artist - Track name" strings.
Python milter 0.8.7
The milter module for Python provides a python interface to Sendmails libmilter that exploits all its features. more>>
The milter can even run with a different operating system or processor than sendmail. Sendmail talks to the milter via a local or internet socket, and keeps the milter informed of events as it processes a mail connection.
At any point, the milter can cut the conversation short by telling sendmail to ACCEPT, REJECT, or DISCARD the message. After receiving a complete message from sendmail, the milter can again REJECT or DISCARD it, but it can also ACCEPT it with changes to the headers or body.
Enhancements:
- The spf module has been moved to the pyspf package.
- This will cause some confusion when upgrading, since 0.8.6 still has the module and will conflict with pyspf, whereas 0.8.7 does not have spf by itself, and will stop doing SPF if you dont install pyspf.
Python Call Graph 0.4.0
Python Call Graph (pycallgraph) is a Python library that creates call graphs for Python programs more>>
pycallgraph is quite new. It seems to work well and I will most likely improve it in the near future!
Python in Scheme 0.1
Python in Scheme is a scheme library that allows you to run Python code within Scheme. more>>
Python in Scheme project uses the Python/C API to embed a Python interpreter.
Python Sudoku 0.12.4
Python Sudoku is a text and graphical program (gtk interface) to create or resolve sudokus. more>>
Sudoku, sometimes spelled Su Doku, is a placement puzzle, also known as Number Place in the United States.
The aim of the puzzle is to enter a numeral from 1 through 9 in each cell of a grid, most frequently a 9 x 9 grid made up of 3 x 3 subgrids (called "regions"), starting with various numerals given in some cells (the "givens").
Each row, column and region must contain only one instance of each numeral. Completing the puzzle requires patience and logical ability.
Its grid layout is reminiscent of other newspaper puzzles like crosswords and chess problems. Sudoku initially became popular in Japan in 1986 and attained international popularity in 2005.
Python-LDAP 2.3.1
Python-LDAP provides an object-oriented API to access LDAP directory servers from Python programs. more>>
Additionally the package contains modules for other LDAP-related stuff (e.g. processing LDIF, LDAPURLs, LDAPv3 schema, etc.).