Franck Pommereau

API doc extraction

Showing 102 changed files with 4479 additions and 0 deletions
syntax: glob
doc/api/*
dist/*
dput.sh
*.pyc
*~
.gone
,*
*.class
abcd crash on [foo>>(s), foo<<(s+s)]
[foo(x,y,z)] creates a multi-arc instead of a tuple
abcd substitues for loops variables:
net Foo (x) :
buffer b : int = [x for x in range(4)]
^ ^
substituted (should not)
errors during expressions evaluation are directly sent to user, should be wrapper to indicate this is a model error. And should be catched in abcd --simul/check
recursive-include doc *
include *
all:
@echo "Commands:"
@echo " release prepare source for release"
@echo " tgz build a source tarball"
@echo " doc build API documentation"
@echo " dput build and upload Ubuntu packages"
@echo " clean delete some garbage files"
@echo " test run tests through supported Python implementations"
@echo " next-deb increments debian/VERSION"
@echo " next-ppa increments debian/PPA"
@echo " lang build generated files in snakes/lang"
@echo " emacs compile Emacs files"
committed:
hg summary|grep -q '^commit: (clean)$$'
next-deb:
echo 1 > debian/PPA
echo $$((1+$$(cat debian/VERSION))) > debian/VERSION
emacs:
emacs -batch -f batch-byte-compile utils/abcd-mode.el
next-ppa:
echo $$((1+$$(cat debian/PPA))) > debian/PPA
release: committed test doc tgz
hg tag version-$$(cat VERSION)
echo 1 > debian/PPA
echo 1 > debian/VERSION
hg commit -m "version $$(cat VERSION)"
hg push
lang:
python mklang.py
tgz: committed
hg archive snakes-$$(cat VERSION)-$$(cat debian/VERSION)
cd snakes-$$(cat VERSION)-$$(cat debian/VERSION) && make doc
tar cf snakes-$$(cat VERSION)-$$(cat debian/VERSION).tar snakes-$$(cat VERSION)-$$(cat debian/VERSION)
rm -rf snakes-$$(cat VERSION)-$$(cat debian/VERSION)
gzip -9 snakes-$$(cat VERSION)-$$(cat debian/VERSION).tar
gpg --armor --sign --detach-sig snakes-$$(cat VERSION)-$$(cat debian/VERSION).tar.gz
doc: snakes/*.py snakes/plugins/*.py snakes/utils/*.py snakes/lang/*.py
make -C doc
dput.sh: VERSION debian/*
python mkdeb.py
dput: committed dput.sh
sh dput.sh
clean:
rm -f $$(find . -name ",*")
rm -f $$(find . -name "*.pyc")
rm -f $$(find . -name "*~")
rm -f $$(find . -name "*.class")
rm -rf $$(find . -type d -name __pycache__)
test:
python2.5 test.py
python2.6 test.py
python2.7 test.py
python3 test.py
unladen test.py
pypy test.py
spypy test.py
stackless test.py
jython test.py
+ emacs mode for ABCD
! fixex nodes merge in plugin labels
! fixed nets.MultiArc.flow (thanks to Jan Ciger's report)
version 0.9.13 (Fri Jul 16 17:01:22 CEST 2010):
+ added inhibitor arcs
+ added Ubuntu Lucid (10.04) package
! fixed data.WordSet.fresh when base is used
! fixed reduce(xor, []) is some __hash__ methods
+ added PetriNet.layout method in snakes.plugins.gv
version 0.9.12 (Thu Apr 1 19:42:33 CEST 2010):
+ removed PyGraphviz dependency (layout method supressed temporarily)
+ now compatible with PyPy (1.2), Unladen-Swallow and Jython (2.5.1)
! fixed snakes.plugins.clusters.rename_node
! fixed snakes.nets.Flush.flow
! fixed an uncaught exception in snakes.data.MultiSet.__eq__
and snakes.data.Symbol.__eq__
! hopefully fixed LALR built in ABCD compiler
! fixed hash-related issues
* moved PLY stuff to snakes.utils.abcd
* snakes.compyler has been completely replaced (PLY dependency removed)
version 0.9.11 (Thu Mar 25 19:32:31 CET 2010):
! fixed various doctests
! fixed issues with attributes locking
! fixed issues related to missing __hash__ methods
! fixed renaming a node to itself in ABCD
+ added snakes.nets.Evaluator.__contains__
+ added base argument to snakes.data.WordSet
+ added option --symbols to ABCD compiler
+ added snakes.data.Symbol
+ added net instances naming in ABCD
+ added logo
+ added let function to update bindings from expressions
+ added snakes.data.Subtitution.__setitem__
version 0.9.10 (Fri Jun 19 13:32:45 CEST 2009):
! fixed inconstent hashing on clusters
! fixed mutability of hashed multisets
! fixed snakes.nets.Tuple.mode
version 0.9.9 (Tue, 19 May 2009 15:00:00 +0100):
+ added mkdeb.py to build deb packages for multiple distributions
+ ported to Python 2.6
version 0.9.8 (lun, 23 mar 2009 17:30:34 (CET)):
+ added graph_attr option to snakes.plugins.gv.StateGraph
* plugin gv now draws partially constructed marking graphs
! fixed expression compilation in present of net parameters in ABCD
compiler
! fixed flush arcs binding
* plugin lashdata has been removed because its too experimental
* merged plugin decorators into a single one
version 0.9.7 (Tue, 20 Jan 2009 13:04:15 +0100):
! fixed sharing of globals between net components
! fixed loading of PNML when some plugins fail to load
+ added cpp option to abcd
+ added some docstrings and doctests
! fixed sharing of globals between net components
version 0.9.6 (Fri, 28 Nov 2008 15:22:27 +0100):
+ added doc for ABCD
! fixed False and True handling in ABCD compiler
+ added cross product types to ABCD
version 0.9.5 (Wed, 19 Nov 2008 21:42:05 +0100):
+ added distutils setup.py
* strip PNML data before decoding (work around invalid XML)
! fixed Multiset.__pnmlload__ on iterable values
version 0.9.4 (mar, 28 oct 2008 12:28:02 (UTC+0100)):
! fixed nets.Value.__eq__, __ne__ and __hash__
! fixed nets.Token.__repr__
+ added Flush arcs
! fixed nets.Tuple.bind
! fixed PNML dump/load of subclasses
! fixed nets.PetriNet.merge_* in the presence of Tuple arcs
! fixed plugins.clusters.Cluster.path
! fixed plugins.status.PetriNet.__pnmlload__
! fixed ABCD lexer
+ improved ABCD compiler with parametric nets, Python declarations
! fixed black token values in ABCD arcs and flush
+ ABCD compiler launches pdb.post_mortem when an error occurs in
+ added TCP mode to query plugin debug mode
* removed dependency to epydoc in snakes.typing
+ updated PNML doc
+ added a producer/consumer ABCD example
version 0.9.3 (lun, 29 sep 2008 08:04:55 (CEST)):
! fixed a bug in place pnml loading
! fixed wrong association of pnml tags to classes
+ improved query and associated programs, added documentation
* improved loading of PNML files with plugins
* PNML tag <snakes> can only occur once as a child of <pnml>
+ abcd compiler adds many structural information to PNML (including
+ test.py checks is snakes.version is correct AST if asked)
+ query plugins now has two verbosity levels
+ added snakes.compyler.Tree.__pnmldump__()
version 0.9.2
+ added query plugin and demon client/server programs
! various small bugs fixed
+ improved PNML serialisation of standard objects
+ snakes.plugins.load puts new module in caller's environment
! fixed snakes.pnml.Tree.update
* Substitution.image() returns a set
+ added apix.py
! PNML export empty arcs fixed
! fixed broken abcd.py
* updated abcd.py so it uses gv
* improved clustering efficiency
version 0.9.1
+ added plugin gv to replace graphviz
+ added plugin clusters to manage clusters of nodes
+ updated plugins ops so it builds clusters
* the plugin posops is deprecated since gv does the work much better
version 0.9
* dropped compatibilty with Python 2.4
+ finished pnml
* the compyler module has been completely replaced
Changes in 0.8.4 (06.09.2007 11:30:21):
+ updated the tutorial
Changes in 0.8.3 (29.06.2007 11:57:39):
+ snakes.plugins.graphivz: added options to control the layout
+ snakes.plugins.graphviz: improved the rendering
+ updated the tutorial
Changes in 0.8.2 (22.06.2007 13:09:02):
+ snakes.plugins.ops: added a name hiding operator (PetriNet.__div__)
! fixed several copy/clone problems
Changes in 0.8.1 (20.06.2007 10:18:17):
* updated tutorial
+ snakes.plugins.pos: the position of a node can be redefined when
! snakes.plugins.pos: accept float positions when loading from pnml
Changes in 0.8 (19.06.2007 17:19:19): First public release.
SNAKES is the Net Algebra Kit for Editors and Simulators
========================================================
////////////////////////////////////////////////////////////////
This file is formatted in order to be processed by AsciiDoc
(http://www.methods.co.nz/asciidoc). It will be more comfortable
to render it or to read the HTML version available at:
http://www.univ-paris12.fr/pommereau/soft/snakes/index.html
////////////////////////////////////////////////////////////////
SNAKES is a Python library that provides all then necessary to define
and execute many sorts of Petri nets, in particular those of the PBC
and M-nets family. Its main aim is to be a general Petri net library,
being able to cope with most Petri nets models, and providing the
researcher with a tool to quickly prototype its new ideas. SNAKES
should be suitable to provide the data model for editors or
simulators; actually, any editor that use SNAKES may also be a
simulator as SNAKES can execute any net.
A key feature of SNAKES is the ability to use arbitrary Python objects
as tokens and arbitrary Python expressions in many points, for
instance in transitions guards or arcs outgoing of transitions. This
is what makes SNAKES that general. This relies on the capability of
Python to run dynamically provided Python code (the $eval$ function).
This feature may not be efficient enough for model-checking: speed is
the price to pay for the wide generality. However, in the case of a
new model, SNAKES may happen to be the only available tool.
Another important feature of SNAKES is the plugin system that allows
to extend the features and work with specialised classes of Petri
nets. Currently, the following plugins are provided:
pos:: adds to nodes the capability of holding their position. Nodes
can be moved or shifted, Petri nets can be shifted globally and their
bounding box can be computed.
gv:: adds a method to draw a Petri net or a state graph using the tool
http://www.graphviz.org[GraphViz] (through the Python binding
http://networkx.lanl.gov/wiki/pygraphviz[PyGraphViz]). This module
replaces the previous plugin called _graphviz_ and provides more
flexibility and security, _graphviz_ is still provided but deprecated.
status:: extends the Petri net model by adding status to the nodes.
This is similar to what is used in the models of the PBC or Mnets
family. Nodes can then merged automatically according to their status.
ops:: this plugins defines control flow operations on Petri nets
usually found in the PBC and Mnets family. Nets can be composed in
parallel, sequence, choice and iteration. These operations rely on the
places status.
labels:: allows to add arbitrary labels to most objects (places,
transitions, nets, ...)
posops:: combines the features of pos and ops plugins: the control
flow operations are modified in order to rearrange the nodes position
in order to provide well shaped nets. This plugin is deprecated
because the new _gv_ does the work much better.
synchro:: it defines the label-based transition synchronisation
defined in the Mnets model.
// export:: allows to save Petri nets objects in the format of the tools
// http://pep.sourceforge.net[PEP], http://helena.cnam.fr[Helena] and
// http://maria[Maria]. http://pnml[PNML] is also supported as it is
// built-in SNAKES.
lashdata:: allows to define data that is not handled in the places of
the Petri net but stored instead in the special structures handled by
the http://www.montefiore.ulg.ac.be/~boigelot/research/lash/[library
Lash]. This allows in particular to aggregate possibly infinite states
into one meta-state.
clusters:: this is an auxiliary plugin that allows to group nodes in a
Petri net. This feature is used by _ops_ in order to record how a net
is constructed, which is exploited by _gv_ in order to build a nice
layout of composed nets.
Getting SNAKES and installing it
--------------------------------
Download http://www.univ-paris12.fr/lacl/pommereau/soft/snakes/snakes-{VERSION}.tar.gz[$snakes-{VERSION}.tar.gz$]
({sys:../stat snakes-{VERSION}.tar.gz})
To install SNAKES, uncompress the archive and copy the directory
snakes in a location where Python can find it (_i.e._, in a directory
listed in your $PYTHONPATH$ environment variable).
SNAKES should work with a Python version at least 2.5 but will _not_
work for an older version. Optionally, you may want to install
additional software required by some plugins:
gv:: depends on http://www.graphviz.org[GraphViz] and its Python
binding http://networkx.lanl.gov/wiki/pygraphviz[PyGraphViz]. The
plugin _graphviz_ depends on GraphViz only but is now deprecated.
lashdata:: requires
http://www.montefiore.ulg.ac.be/~boigelot/research/lash[Lash] and
the
http://www.univ-paris12.fr/lacl/pommereau/soft/index.html#PyLash[Python
Lash binding].
[NOTE]
=====================
(C) 2007 Franck Pommereau <pommereau@univ-paris12.fr>
This library is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
published by the Free Software Foundation; either version 2.1 of the
License, or (at your option) any later version.
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA
=====================
Contact
-------
Please feel free to send me comments, questions, bug reports or
contributions by mailto:pommereau@univ-paris12.fr[email].
If you wish to be notified of the new releases of SNAKES, please
register at the http://freshmeat.net/projects/snakes[FreshMeat page].
You may contribute to SNAKES by either send patches by email, or by
using the https://launchpad.net/snakes[SNAKES Launchpad page].
Documentation
-------------
A good starting point may be the link:tutorial.html[tutorial]. Then,
you may find the link:api/index.html[API reference manual] useful, it
documents all the API and gives number of examples of how to use the
various classes and functions.
If you do not program Python, you can learn it in a few hours thanks
to the very good http://docs.python.org/tut/tut.html[Python tutorial].
In order to know more about the PBC and M-nets family or the Petri net
compositions defined in the plugins, you may read papers from
http://www.univ-paris12.fr/lacl/pommereau/publis[my publications page]
(in particular those with _calculus_ in the title).
* add name to transitions, eg, [buff-(x) as name]
make it consistent with instance names?
* zero test/inhibitor arc
! parameter and global buffer with same names => parameter ignored
! accept net instances with too much parameters
0.9.16
#!/usr/bin/env python
import snakes.utils.abcd.main as abcdmain
abcdmain.main()
#!/usr/bin/env python
import socket, sys, readline
from snakes.pnml import dumps, loads
from snakes.plugins.query import Query
env = {}
def public (fun) :
env[fun.__name__] = fun
return fun
@public
def set (*larg, **karg) :
"""set(name, value) -> None
assign value (object) to name (str) on the server"""
return Query("set", *larg, **karg)
@public
def get (*larg, **karg) :
"""get(name) -> object
return the last value assigned to name (str)"""
return Query("get", *larg, **karg)
@public
def delete (*larg, **karg) :
"""delete(name) -> None
discard name (str)"""
return Query("del", *larg, **karg)
@public
def call (*larg, **karg) :
"""call(obj, ...) -> object
call obj (str or result from another call) with the additional arguments
return whatever the called object returns"""
return Query("call", *larg, **karg)
@public
def help (command=None) :
"""help(command) -> None
print help about command, if no command is given, list available commands"""
if command is None:
print "commands:", ", ".join(repr(cmd) for cmd in env
if not cmd.startswith("_"))
print " type 'help(cmd)' to ge help about a command"
elif command in env :
print env[command].__doc__
elif command.__name__ in env :
print command.__doc__
else :
print "unknown command %r" % command
@public
def quit () :
"""quit() -> None
terminate the client"""
print "bye"
sys.exit(0)
@public
def load (path) :
"""net(path) -> object
load a PNML file from path (str) and return the object is represents"""
return loads(open(path).read())
@public
def show (query) :
"""show(obj) -> None
show the PNML representation of obj (object), for instance of a query"""
print dumps(query)
_verbose = False
@public
def verbose (state=None) :
"""verbose(state) -> None
turn on (state=True), off (state=False) or toggle (state not
given) the printing of queries before they are sent to the
server"""
global _verbose
if state is None :
_verbose = not _verbose
else :
_verbose = state
if _verbose :
print "dump of queries enabled"
else :
print "dump of queries disabled"
try :
if sys.argv[1] in ("-t", "--tcp") :
proto = "TCP"
del sys.argv[1]
else :
proto = "UDP"
host, port = sys.argv[1:]
port = int(port)
except :
print >>sys.stderr, "Usage: snkc [--tcp] HOST PORT"
sys.exit(1)
sock = None
def sendto (data, address) :
global sock
if proto == "UDP" :
if sock is None :
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(2)
sock.sendto(data, address)
else :
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2)
sock.connect(address)
sock.send(data)
def recvfrom (size) :
global sock
if proto == "UDP" :
data, address = sock.recvfrom(size)
else :
parts = []
while True :
parts.append(sock.recv(size))
if len(parts[-1]) < size :
break
address = sock.getpeername()
sock.close()
data = "".join(parts)
return data, address
while True :
try :
data = raw_input("? ")
q = eval(data.strip(), env)
except (EOFError, KeyboardInterrupt) :
quit()
except SystemExit :
raise
except Exception, e :
print "query error:", e
continue
if q is not None :
q = dumps(q)
if _verbose :
print "# query to %s:%u" % (host, port)
print q
sendto(q, (host, port))
try :
data, address = recvfrom(2**20)
if _verbose :
print "# answer from %s:%u" % address
print data.strip()
except socket.timeout :
print "# no answer received (timeout)"
print
#!/usr/bin/env python
import sys
import snakes.plugins
snakes.plugins.load("query", "snakes.nets", "nets")
port = 1234
size = 2**20
verbose = 0
proto = "UDP"
def help () :
print "Usage: snkd [OPTION]"
print "Options:"
print " -p PORT, --port PORT listen on port number PORT"
print " -t, --tcp use TCP instead of UDP"
print " -s SIZE, --size SIZE set buffer size for inputs"
print " -v, --verbose display information about queries"
print " (use '-v' twice to dump queries/answers)"
print " -h, --help print this help and exit"
args = sys.argv[1:]
try :
while len(args) > 0 :
arg = args.pop(0)
if arg in ("-p", "--port") :
port = int(args.pop(0))
elif arg in ("-v", "--verbose") :
verbose += 1
elif arg in ("-t", "--tcp") :
proto = "TCP"
elif arg in ("-s", "--size") :
size = int(args.pop(0))
elif arg in ("-h", "--help") :
help()
sys.exit(0)
else :
print >>sys.stderr("snkd: invalid command %r" % arg)
sys.exit(1)
except SystemExit :
raise
except :
cls, val, tb = sys.exc_info()
print >>sys.stderr, "snkd: %s, %s" % (cls.__name__, val)
sys.exit(1)
if verbose :
print "# starting"
print "# listen on: %s:%u" % (proto, port)
print "# buffer size: %uMb" % (size/1024)
print "# verbosity:", verbose
try :
if proto == "UDP" :
nets.UDPServer(port, size=size, verbose=verbose).run()
else :
nets.TCPServer(port, size=size, verbose=verbose).run()
except KeyboardInterrupt :
print "# bye"
except :
cls, val, tb = sys.exc_info()
if verbose > 1 :
raise
elif verbose :
print "# fatal error"
print >>sys.stderr, "snkd: %s, %s" % (cls.__name__, val)
sys.exit(2)
lucid 10.04 LTS
hardy 8.04 LTS
oneiric 11.10
precise 12.04 LTS
python-snakes (0.9.16-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Tue, 07 Jun 2011 12:23:33 +0200
python-snakes (0.9.15-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Tue, 10 May 2011 18:22:34 +0200
python-snakes (0.9.14-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Mon, 11 Apr 2011 16:45:50 +0200
python-snakes (0.9.13-2) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Fri, 23 Jul 2010 20:06:53 +0200
python-snakes (0.9.13-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Fri, 16 Jul 2010 17:09:14 +0200
python-snakes (0.9.12-2) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Sat, 03 Apr 2010 21:06:50 +0200
python-snakes (0.9.12-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Thu, 01 Apr 2010 19:46:02 +0200
python-snakes (0.9.11-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Thu, 25 Mar 2010 19:39:47 +0100
python-snakes (0.9.10-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Fri, 19 Jun 2009 13:40:36 +0200
python-snakes (0.9.9-2) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Tue, 19 May 2009 09:29:46 +0200
python-snakes (0.9.8-2) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Tue, 14 Apr 2009 20:02:32 +0200
python-snakes (0.9.8-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Mon, 23 Mar 2009 17:34:06 +0100
python-snakes (0.9.7-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Tue, 20 Jan 2009 13:07:09 +0100
python-snakes (0.9.6-2) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Tue, 02 Dec 2008 17:47:43 +0100
python-snakes (0.9.6-1) UNRELEASED; urgency=low
* see NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Fri, 28 Nov 2008 15:24:05 +0100
python-snakes (0.9.5-2) UNRELEASED; urgency=low
* Fixed doc installation path
-- Franck Pommereau <pommereau@univ-paris12.fr> Fri, 21 Nov 2008 13:20:55 +0100
python-snakes (0.9.5-1) UNRELEASED; urgency=low
* Trying to fix build on Launchpad
-- Franck Pommereau <pommereau@univ-paris12.fr> Fri, 21 Nov 2008 08:19:04 +0100
python-snakes (0.9.5) UNRELEASED; urgency=low
* See NEWS
-- Franck Pommereau <pommereau@univ-paris12.fr> Wed, 19 Nov 2008 21:47:52 +0100
python-snakes (0.9.4) UNRELEASED; urgency=low
* Initial release. (Closes: #XXXXXX)
-- Franck Pommereau <pommereau@univ-paris12.fr> Tue, 18 Nov 2008 12:09:16 +0100
Source: python-snakes
Section: python
Priority: extra
Maintainer: Franck Pommereau <pommereau@univ-paris12.fr>
Homepage: http://lacl.univ-paris12.fr/pommereau/soft/snakes
Build-Depends: python (>=2.5), cdbs (>=0.4.49), debhelper (>= 5), python-central (>=0.5.6)
XS-Python-Version: >=2.5
Standards-Version: 3.7.2
Package: python-snakes
Architecture: all
XB-Python-Version: ${python:Versions}
Depends: python (>=2.5), python-central, graphviz, python-tk
Description: SNAKES is the Net Algebra Kit for Editors and Simulators
SNAKES is a general purpose Petri net Python library allowing to
define and execute most classes of Petri nets. It features a plugin
system to allow its extension. In particular, plugins are provided to
implement the operations usually found in the PBC and M-nets family.
This package was debianized by Franck Pommereau <pommereau@univ-paris12.fr> on
DATE
License:
This package is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public License
as published by the Free Software Foundation; either version 2 of
the License, or (at your option) any later version.
This package is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this package; if not, see
`http://www.gnu.org/licenses/lgpl-3.0.txt'.
On Debian systems, the complete text of the GNU General
Public License can be found in `/usr/share/common-licenses/LGPL'.
The Debian packaging is (C) 2008, Franck Pommereau
<pommereau@univ-paris12.fr> and is licensed under the LGPL, see above.
#!/usr/bin/make -f
DEB_PYTHON_SYSTEM=pycentral
include /usr/share/cdbs/1/rules/debhelper.mk
include /usr/share/cdbs/1/class/python-distutils.mk
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
This version of the GNU Lesser General Public License incorporates
the terms and conditions of version 3 of the GNU General Public
License, supplemented by the additional permissions listed below.
0. Additional Definitions.
As used herein, "this License" refers to version 3 of the GNU Lesser
General Public License, and the "GNU GPL" refers to version 3 of the GNU
General Public License.
"The Library" refers to a covered work governed by this License,
other than an Application or a Combined Work as defined below.
An "Application" is any work that makes use of an interface provided
by the Library, but which is not otherwise based on the Library.
Defining a subclass of a class defined by the Library is deemed a mode
of using an interface provided by the Library.
A "Combined Work" is a work produced by combining or linking an
Application with the Library. The particular version of the Library
with which the Combined Work was made is also called the "Linked
Version".
The "Minimal Corresponding Source" for a Combined Work means the
Corresponding Source for the Combined Work, excluding any source code
for portions of the Combined Work that, considered in isolation, are
based on the Application, and not on the Linked Version.
The "Corresponding Application Code" for a Combined Work means the
object code and/or source code for the Application, including any data
and utility programs needed for reproducing the Combined Work from the
Application, but excluding the System Libraries of the Combined Work.
1. Exception to Section 3 of the GNU GPL.
You may convey a covered work under sections 3 and 4 of this License
without being bound by section 3 of the GNU GPL.
2. Conveying Modified Versions.
If you modify a copy of the Library, and, in your modifications, a
facility refers to a function or data to be supplied by an Application
that uses the facility (other than as an argument passed when the
facility is invoked), then you may convey a copy of the modified
version:
a) under this License, provided that you make a good faith effort to
ensure that, in the event an Application does not supply the
function or data, the facility still operates, and performs
whatever part of its purpose remains meaningful, or
b) under the GNU GPL, with none of the additional permissions of
this License applicable to that copy.
3. Object Code Incorporating Material from Library Header Files.
The object code form of an Application may incorporate material from
a header file that is part of the Library. You may convey such object
code under terms of your choice, provided that, if the incorporated
material is not limited to numerical parameters, data structure
layouts and accessors, or small macros, inline functions and templates
(ten or fewer lines in length), you do both of the following:
a) Give prominent notice with each copy of the object code that the
Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the object code with a copy of the GNU GPL and this license
document.
4. Combined Works.
You may convey a Combined Work under terms of your choice that,
taken together, effectively do not restrict modification of the
portions of the Library contained in the Combined Work and reverse
engineering for debugging such modifications, if you also do each of
the following:
a) Give prominent notice with each copy of the Combined Work that
the Library is used in it and that the Library and its use are
covered by this License.
b) Accompany the Combined Work with a copy of the GNU GPL and this license
document.
c) For a Combined Work that displays copyright notices during
execution, include the copyright notice for the Library among
these notices, as well as a reference directing the user to the
copies of the GNU GPL and this license document.
d) Do one of the following:
0) Convey the Minimal Corresponding Source under the terms of this
License, and the Corresponding Application Code in a form
suitable for, and under terms that permit, the user to
recombine or relink the Application with a modified version of
the Linked Version to produce a modified Combined Work, in the
manner specified by section 6 of the GNU GPL for conveying
Corresponding Source.
1) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (a) uses at run time
a copy of the Library already present on the user's computer
system, and (b) will operate properly with a modified version
of the Library that is interface-compatible with the Linked
Version.
e) Provide Installation Information, but only if you would otherwise
be required to provide such information under section 6 of the
GNU GPL, and only to the extent that such information is
necessary to install and execute a modified version of the
Combined Work produced by recombining or relinking the
Application with a modified version of the Linked Version. (If
you use option 4d0, the Installation Information must accompany
the Minimal Corresponding Source and Corresponding Application
Code. If you use option 4d1, you must provide the Installation
Information in the manner specified by section 6 of the GNU GPL
for conveying Corresponding Source.)
5. Combined Libraries.
You may place library facilities that are a work based on the
Library side by side in a single library together with other library
facilities that are not Applications and are not covered by this
License, and convey such a combined library under terms of your
choice, if you do both of the following:
a) Accompany the combined library with a copy of the same work based
on the Library, uncombined with any other library facilities,
conveyed under the terms of this License.
b) Give prominent notice with the combined library that part of it