VPlants Lpy documentation#

Module description#

Documentation#

  • A PDF version of VPlants.Lpy documentation is available.

See also

More documentation can be found on the openalea wiki.

Authors#

Authors: Frédéric Boudon

License#

VPlants.Lpy is released under a Cecill-C License.

Note

Cecill-C license is a LGPL compatible license.

ChangeLog#

July 24th 2009: version 1.4.0 (rev 6689):#

  • Introduce Lsystem::Debugger

  • Introduce first ui of a Lsystem Debugger.

  • fix bug with animation when resuming (avoid reloading text)

July 17th 2009: version 1.3.0 (rev 6635):#

  • Introduce static rules

  • introduce structures PatternModule and PatternString

  • add parametric production (to avoid use of python list)

  • add optimization level option

  • add not named variable to avoid useless arg value retrieval

  • add heuristic to find static rule and not named variable

  • add RuleMap to avoid useless test

  • Introduce compilation with Cython

  • Introduce compilation with python -OO

  • add possibility to store arg into a vector instead of creating a python list when retrieving arg.

  • enable switching order of simulation in tab

  • fix bug with first view computation in animation

  • fix bug with query module value assignment

  • allow lazy copy of parameters

  • add examples/tutorial/models

  • Regular Expression in strict predecessor

  • introduce or module to alternative matching

  • add possibility to retrieve directly module

  • add possibility to name parameters of module and access them as member of the module

  • make particular test for matching with module any (or *)

  • improve iterator

  • check index when accessing module parameter. Throw exception if required.

  • allow produce None to produce empty string

  • fix bug with selection

  • fix bug updateNamespace function of LsysContext.

  • fix bug with PyQt/Qt4.5

May 30th 2009: version 1.2.0 (rev 6470):#

  • Introduce option early return when no matching

  • raise error/warning when detecting # smb

  • fix bug with alias

  • Introduce filtering on parameter value

  • Introduce Repeated Expression

  • getVarNb function added

  • Introduce Category of Module

  • Introduce Tropism

  • Introduce SetContour of GeneralizedCylinder

  • Introduce production of new(name) and produce of A(*arg)

  • Introduce GetIterator on some part of the structure

March 17th 2009: version 1.1.0 (rev 6096):#

  • Compatibility with PlantGL : RefCountPtr/pgl_hash_map/…

  • Compatibility with OpenAlea : update nodes

  • Introduce MatchingEngine

  • add StringMatchingMethod

  • Introduce multiscale matching with MScaleAxialTree and MLevelAxialTree

  • use template method for matching

  • Introduce ModuleVTable to add property to module class

  • Introduce scale property

  • simplify some wrapping code

  • fix bug with context activation

October 8th 2008: version 1.0.0 (rev 5581):#

  • small bug fix mainly on MacOSX

  • improve packaging

September 11th 2008: version 1.0.0 release candidate 3 (rev 5529):#

  • split tool bar into 2.

  • add Save All feature.

  • fix small bug with Lsystem initialisation.

  • fix bug with text encoding and SyntaxHighlighter.

  • fix bug with path on compile_ui rc generation.

  • fix bug with SyntaxError. Treat them as special case.

  • add arguments to EndEach.

  • correct bugs with str and repr on AxialTree.

  • make saveImage re definable.

  • simplify plot redefinition api. A plotter object can be pass.

September 4th 2008: version 1.0.0 release candidate 2 (rev 5469):#

  • fix bug with signal valueChanged() of material editor.

  • fix bug with import of local python file.

  • compatibility with py2exe.

August 13th 2008: version 1.0.0 release candidate 1 (rev 5408):#

  • fix small text encoding bugs.

  • release candidate version.

August 12th 2008: version 0.20.2 (rev 5401):#

  • introduce LpyParsing namespace.

  • introduce set of function and member of LpyParsing to check format version compatibility and support.

  • format version test in parsing.

  • simple test of gui.

  • gui stream redirection improvement.

  • change variable tree to lstring into python shell of gui.

  • update documentation.

  • add documentation.getWikiSpecification.

August 11th 2008: version 0.20.1 (rev 5397):#

  • now load initialisation code before lpy code in Lsystem.set. Add a test for this.

  • fix bugs with add/remove tab and comment in code editor. add icons to the buttons.

  • add possibility to enable/disable view of tab in code editor.

  • add option to see text below button of tool bar.

  • add automatic test of examples of share/.

August 8th 2008: version 0.20.0 (rev 5394):#

  • text editor improvement: * add text zooming capability. * font and size selection. * tab space replacement and tab size control.

  • file monitoring.

  • tool bar style selection.

  • preference dialog.

August 7th 2008: version 0.19.2 (rev 5390):#

  • automatic reload of last opened document.

  • add new rule to syntax highlighting: * function names are in magenta. * strings are in grey. * tabs and spaces of the begining of a line are marked in different greys to prevent mixing. * operators and delimiters are in dark blue. * number are in red.

  • make smaller border in the gui.

  • fix bug with closing application and saving documents.

  • set simulation in modified state when changing options.

August 6th 2008: version 0.19.1 (rev 5388):#

  • add module undeclaration and query module declaration features.

  • fix bug with parsing and comments.

  • improve lines correspondence in lpy translation.

  • syntax error highlight in editor.

  • fix bug with project code mess up when several project are opened in Gui.

August 5th 2008: version 0.19.0 (rev 5385):#

  • change GUI interface to have dock widgets and multiple documents editing.

  • remove modules G and g.

  • remove None module from doc.

July 28th 2008: version 0.18.1 (rev 5351):#

  • replace PYLSYS prefix by LPY.

  • remove StringInterpreter class.

  • add documentation to predefined modules.

July 24th 2008: version 0.18.0 (rev 5338):#

  • Rename project as lpy. Change file and dir names accordingly.

  • fix bug with produce *

  • separate matching from application in LsysRule (now has match and applyTo functions).

  • fix bug with LsysOption.isToDefault.

  • clean examples of share/.

July 21th 2008: version 0.17.2 (rev 5278):#

  • Fix bug with GlobalContext. Add a __local_namespace to contain LsysRule code.

  • Add memory tracker (TRACKER_ENABLED to activate) with memory report on stderr at the end.

  • LsysRule : * change interface to avoid exception raise inside constructor. * function set from python automatically call compile by default.

  • create predefined modules into a separate cpp file.

  • Update code files header.

July 18th 2008: version 0.17.1 (rev 5269):#

  • remove intermediate structure for turtle interpretation. Each predefined modules has a custom ModuleClass class.

July 10th 2008: version 0.17.0 (rev 5224):#

  • add turtle interpretation as a function of each module class. for now, use intermediate structure.

  • fix bug with module matching mode.

  • add lineno to rules for error display.

  • improve parsing.

  • add simple tests on geometry of interpretation.

July 7th 2008: version 0.16.0 (rev 5200):#

  • fix bugs:

    • in argument parsing of query module.

    • with *args variable name in LsysRule generated code.

    • with use of * module: first arg is always matched module name.

    • with left matching of rule in backward mode.

  • remove LsysContext from stack when deleted.

  • Lsystem object:

    • possibility to enabled or disabled (makeCurrent or done) its context.

    • print declared modules when print.

  • report query module and axialtree parsing code in lpy_parser.

  • ModuleClass are augmented with an active state. Allow to use always the same ModuleClass in different namespaces.

  • matching tests are a lot augmented.

July 2nd 2008: version 0.15.1 (rev 5178):#

  • use declared module in rule predecessors.

July 2nd 2008: version 0.15.0 (rev 5171):#

  • add module declaration:

    • introduce ModuleClass and ModuleClassTable.

    • look for longest name when parsing Lstring.

    • LsysContext has their own moduleclass namespace.

  • add sceneInterpretation in Lsystem to get homomorphism resulting Scene.

  • process line starting by # as comment line in production blocks of lpy code.

June 17th 2008: version 0.14.1 (rev 5119):#

  • Fix bug with space in Lsystem string.

  • Fix bug with window specific end line in Lsystem code.

  • Fix bug with nproduce in Lsystem rules.

  • Add tests normalized with nosetests convention.

  • Fix bugs with LsysOption template and gcc

  • Redefined len cpp function in lsysrule.cpp now compatible with all boost.python version.

June 12th 2008: version 0.14.0 (rev 5086):#

  • Define LsysOptions class and mechanism to simply add an option, its possible value and corresponding slots.

  • Add an LsysOptions to LsysContext.

  • Graphic edition of the options of LsysContext.

  • Avoid copying of LsysRule when iterating in Lsystem.

  • Add function getIterationNb.

  • Add control on module matching : Simple, with * module or with also *args parameters.

June 4th 2008: version 0.13.1 (rev 4996):#

  • fix bug with animate number of iterations.

  • fix bugs with multi-threading and visual shell. Introduce for this sources for new Shell classes copied from visualea and modified them thus that text writing is protected from concurrent access.

May 30th 2008: version 0.13.0 (rev 4983):#

  • Lsystem interface update:

    • function run disappear.

    • function iterate has an extra argument starting iteration number.

    • function interpret is available and take as arg a Turtle.

    • function plot do an interpret and a plot of the resulting pgl scene.

    • Fix bug with homomorphism.

    • Interpretation before iteration :

      • can be avoid with an extra arg to iterate.

      • done with interpret.

  • LsysRule.apply is now const. python code should be compile before. Else an exception is raised.

  • LsysContext updated:

    • readAxiom disappear.

  • parsing :

    • Related functions regrouped into a new file named lpy_``parser``.

    • l2py function renamed lstring2py.

  • StringInterpreter has now possibility to change of Turtle.

  • GUI:

    • First call of Step produces now the axiom.

May 23th 2008: version 0.12.2 (rev 4924):#

  • change error for homomorphism rule with context as warning

  • add possibility to give a function to retrieve selection (similarly to plot)

May 22th 2008: version 0.12.1 (rev 4920):#

  • add recursive application of rules for homomorphism and turtle interpretation.

  • add selection and insertion by a X module

  • correct bug in parsing with line starting by ‘e’

May 21th 2008: version 0.12.0 (rev 4919):#

  • StringMatching structure to keep id matching after rule application

May 15th 2008: version 0.11.0 (rev 4902):#

  • add groups of rules in lsystems.

  • small bug fix in post_install script

May 15th 2008: version 0.10.1 (rev 4895):#

  • prevent multiple access of lsystem even from same thread. Resolve warning from //April 29th 2008//.

May 15th 2008: version 0.10.0 (rev 4893):#

  • animation_timestep is a property of context that can be changed during animation and is taken into account.

  • animation_timestep is now saved into lpy file.

  • add the module @g in string interpreter to plot custom plantgl geometric symbol.

  • add the module _ in string interpreter to change width. Will replace module # in the future.

  • add a parameter to endBracket and beginBracket of AxialTree to define if current pos is [ and ] respectively if search should start before or after.

  • fix matching bug for A[B[C]D]D with A > [B]D.

May 14th 2008: version 0.9.0 (rev 4892):#

  • process lpy file into one py file to have exact correspondence of lines for exceptions.

  • axiom, maximum depths and derivation length are now converted as python variables which are imported after.

  • introduce nproduce statement.

  • error are improved to allow syntax error, warning and syntax warning- when parsing lpy file, explicit exceptions for lpy special command error.

  • code editor highlight line in case of error at execution.

  • filename, decompositionMaxDepth and homomorphismMaxDepth are now properties of a Lsystem.

May 13th 2008: version 0.8.0 (rev 4889):#

  • Merge kernel and gui. Gui is now a submodule of kernel.

May 13th 2008: develop version 0.5.2 of Gui (rev 4885):#

  • add case sensitivity and whole word options into find feature

  • add replace and replaceAll feature

  • add automatic tabulation when enter is pressed (take into account if previous line ends by a semicolon)

  • tabulation is done with LsysCodeEditor.indentation which can be set to '\t' or ' '*n

April 29th 2008: develop version:#

  • A mutex now protect access to Lsystem object from multiple thread. Add isRunning function to test whether it currently perform any action. Warning: It does not prevent multiple access from same thread (to allow embedded call of protected action e.g. run calling iterate, …).

April 29th 2008: develop version:#

  • Create default lsystem execution context containing __builtins__ and openalea.pylsystems.* . Accessible from LsysContext.defaultContext(). Have _main_ context accessible using LsysContext.globalContext().

April 29th 2008: release version:#

  • Now version is controlled by the hexadecimal number __version__ in pylsystem.__version__. Some variables such as LPY_VERSION_[STR|MAJOR|MINOR] are created. Similar things for LPYGUI_VERSION_*. This number is directly imported into setup.py to create egg. The rev is added in the *_VERSION_STR. Warning: the __version__ file has to be committed to obtain the last revision version value.