Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Franck Pommereau
/
snakes
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Franck Pommereau
2017-05-18 14:28:05 +0200
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
e32f8963ba64e67f477244aca273630a024b105a
e32f8963
1 parent
397b635f
fixed encoding problems
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
23 additions
and
19 deletions
snakes/plugins/ops.py
snakes/plugins/pos.py
snakes/plugins/status.py
snakes/utils/apidoc.py
snakes/plugins/ops.py
View file @
e32f896
# -*- encoding: latin-1
"""A plugin to compose nets _à la_ Petri Box Calculus.
"""A plugin to compose nets _a la_ Petri Box Calculus.
@note: this plugin depends on plugins `clusters` and `status` that are
automatically loaded
...
...
snakes/plugins/pos.py
View file @
e32f896
#-*- encoding: latin-1
"""A plugin to add positions to the nodes.
`Place` and `Transition` are added an optional argument for the
...
...
@@ -388,8 +387,8 @@ def extend (module) :
for
node
in
self
.
node
()
:
node
.
pos
.
shift
(
dx
,
dy
)
def
transpose
(
self
)
:
"""Perform a clockwise 90
° rotation of node coordinates
,
ie,
change every position `(x, y)` to `(-y, x)`
"""Perform a clockwise 90
degrees rotation of node coordinates, ie
,
change every position `(x, y)` to `(-y, x)`
"""
for
node
in
self
.
node
()
:
x
,
y
=
node
.
pos
()
...
...
snakes/plugins/status.py
View file @
e32f896
#-*- coding: latin-1
"""Add statuses to nodes: a status is a special kind of label that is
used to define Petri nets compositions _
à
la_ Petri Box Calculus. See
used to define Petri nets compositions _
a
la_ Petri Box Calculus. See
plugin `ops` to read more about how statuses are used in practice.
Several status are defined by default: `entry`, `internal`, `exit`,
...
...
@@ -33,6 +32,7 @@ Place('p1', MultiSet([]), tAll, status=Status('entry'))
>>> n.add_place(Place('p2', status=exit))
>>> n.place('p2')
Place('p2', MultiSet([]), tAll, status=Status('exit'))
"""
import
operator
,
weakref
...
...
@@ -717,6 +717,6 @@ def extend (module) :
(
self
.
place
(
s
)
.
status
for
s
in
sources
))
module
.
PetriNet
.
merge_transitions
(
self
,
target
,
sources
,
**
args
)
self
.
set_status
(
target
,
status
)
return
Place
,
Transition
,
PetriNet
,
Status
,
\
(
"entry"
,
entry
),
(
"exit"
,
exit
),
(
"internal"
,
internal
),
\
Buffer
,
buffer
,
Safebuffer
,
safebuffer
,
Tick
,
tick
return
(
Place
,
Transition
,
PetriNet
,
Status
,
(
"entry"
,
entry
),
(
"exit"
,
exit
),
(
"internal"
,
internal
),
Buffer
,
buffer
,
Safebuffer
,
safebuffer
,
Tick
,
tick
)
...
...
snakes/utils/apidoc.py
View file @
e32f896
...
...
@@ -51,11 +51,10 @@ at SNAKES source code. However, let's note a few points:
it should work in other cases but this may required some work
"""
import
sys
,
os
,
os.path
import
inspect
,
fnmatch
,
collections
,
re
,
shlex
import
sys
,
os
,
os.path
,
codecs
import
inspect
,
fnmatch
,
re
,
shlex
import
textwrap
,
doctest
import
snakes
from
snakes.lang
import
unparse
from
snakes.lang.python.parser
import
parse
,
ast
try
:
...
...
@@ -118,7 +117,8 @@ def die (message, code=1) :
class
DocExtract
(
object
)
:
"""The class that extracts documentation and renders it
"""
def
__init__
(
self
,
inpath
,
outpath
,
exclude
=
[])
:
def
__init__
(
self
,
inpath
,
outpath
,
exclude
=
[],
inputenc
=
"utf-8"
,
outputenc
=
"utf-8"
)
:
"""
@param inpath: directory where the source code is searched for
@type inpath: `str`
...
...
@@ -127,11 +127,17 @@ class DocExtract (object) :
@param exclude: a list of glob patterns to exclude modules
(not file names, but Python modules names)
@type exclude: `list`
@param inputenc: encoding of input files
@type inputenc: `str`
@param outputenc: encoding of output files
@type outputenc: `str`
"""
self
.
path
=
inpath
.
rstrip
(
os
.
sep
)
self
.
outpath
=
outpath
self
.
out
=
None
self
.
exclude
=
exclude
self
.
inputenc
=
inputenc
self
.
outputenc
=
outputenc
self
.
_last
=
"
\n\n
"
def
md
(
self
,
text
,
inline
=
True
)
:
"""Return the Markdow rendering of `text`, include `<p>` if
...
...
@@ -196,7 +202,7 @@ class DocExtract (object) :
info
(
"
%
s ->
%
r"
%
(
self
.
module
,
outpath
))
if
not
os
.
path
.
exists
(
outdir
)
:
os
.
makedirs
(
outdir
)
self
.
out
=
open
(
outpath
,
"w"
)
self
.
out
=
codecs
.
open
(
outpath
,
"w"
,
encoding
=
self
.
outputenc
)
self
.
classname
=
None
return
True
def
write
(
self
,
text
)
:
...
...
@@ -271,9 +277,9 @@ class DocExtract (object) :
if
not
self
.
openout
(
path
)
:
continue
try
:
node
=
parse
(
open
(
path
)
.
read
())
except
:
err
(
"error parsing
%
r
"
%
path
)
node
=
parse
(
codecs
.
open
(
path
,
encoding
=
self
.
inputenc
)
.
read
())
except
Exception
as
e
:
err
(
"error parsing
%
r
(
%
s)"
%
(
path
,
e
)
)
continue
if
".plugins."
in
self
.
module
:
self
.
visit_plugin
(
node
)
...
...
@@ -594,7 +600,7 @@ class DocExtract (object) :
path
=
os
.
path
.
join
(
os
.
path
.
dirname
(
self
.
inpath
),
name
)
if
not
os
.
path
.
exists
(
path
)
:
err
(
"include file
%
r not found"
%
name
)
with
open
(
path
)
as
infile
:
with
codecs
.
open
(
path
,
encoding
=
self
.
inputenc
)
as
infile
:
self
.
newline
()
self
.
writeline
(
" :::
%
s"
%
lang
)
for
i
,
line
in
enumerate
(
infile
)
:
...
...
Please
register
or
login
to post a comment