python rope
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.
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-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-SIP 4.7
Python-SIP is a tool to generate Python bindings from C++ code. more>>
SIP is a tool that makes it very easy to create Python bindings for C and C++ libraries. Python-SIP was originally developed to create PyQt, the Python bindings for the Qt toolkit, but can be used to create bindings for any C or C++ library.
SIP comprises a code generator and a Python module. The code generator processes a set of specification files and generates C or C++ code which is then compiled to create the bindings extension module. The SIP Python module provides support functions to the automatically generated code.
The specification files contains a description of the interface of the C or C++ library, i.e. the classes, methods, functions and variables. The format of a specification file is almost identical to a C or C++ header file, so much so that the easiest way of creating a specification file is to edit the corresponding header file.
SIP makes it easy to exploit existing C or C++ libraries in a productive interpretive programming environment. SIP also makes it easy to take a Python application (maybe a prototype) and selectively implement parts of the application (maybe for performance reasons) in C or C++.
Enhancements:
- This release adds support for consolidated and composite modules.
- It adds support for pickling classes and enums.
pythondr 0.0.1
pythondr project is a simple python library for parsing the TV-channel info at http://dr.dk. more>>
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-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.
Dee-Python 0.12
Dee-Python is an implementation of a truly relational database language with Python. more>>
Mind The Gap
Most of todays programs handle data in one way or another and often this data is stored in some kind of relational database. To read and modify this data, a program must bridge the gap between its representation and the one used by the dialect of SQL that the database provides. This bridge typically comprises a database API that sends queries as text strings, often accompanied by some kind of table-to-object mapper that has to coerce data and relationships in both directions, usually with elaborate layers of abstraction in an effort to keep the two sides loosely coupled.
"Yet by obscuring the true data source these solutions end up throwing away the most compelling feature of relational databases; the ability for the data to be queried."
Microsoft, DLinq .NET Language-Integrated Query for Relational Data, May 2006.
This approach not only adds complexity and increases the need for data transformations but, most importantly, it destroys the significant advantages provided by the relational model of data. The relational model is built upon predicate logic which brings the power of formal reasoning to data: it is the only sound foundation available.
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 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).