diff --git a/.github/workflows/conda-numpy-build.yml b/.github/workflows/conda-numpy-build.yml deleted file mode 100644 index 0883dbda..00000000 --- a/.github/workflows/conda-numpy-build.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: build_publish_anaconda - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build-and-publish: - name: ${{ matrix.os }}, Python 3.${{ matrix.python-minor-version }} for conda deployment - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - max-parallel: 3 - matrix: - os: [ ubuntu-latest] - python-minor-version: [9] - isMaster: - - ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/dev') }} - exclude: - - isMaster: false - os: ubuntu-latest - python-minor-version: 7 - - isMaster: false - os: ubuntu-latest - python-minor-version: 8 - - isMaster: false - os: macos-latest - python-minor-version: 7 - - isMaster: false - os: macos-latest - python-minor-version: 8 - - isMaster: false - os: macos-latest - python-minor-version: 9 - - isMaster: false - os: windows-latest - python-minor-version: 7 - - isMaster: false - os: windows-latest - python-minor-version: 8 - - isMaster: false - os: windows-latest - python-minor-version: 9 - - steps: - - name: Chekout - uses: actions/checkout@v3 - - name: Determine publish - uses: haya14busa/action-cond@v1 - id: publish - with: - cond: ${{ contains(github.ref, 'master') || startsWith(github.ref, 'refs/heads/v') }} - if_true: 'true' - if_false: 'false' - - name: Build and Publish - uses: openalea/action-build-publish-anaconda@v0.1.4 - with: - conda: numpy/conda - mamba: true - python: ${{ matrix.python-minor-version }} - numpy: '20' - channels: openalea3, conda-forge - token: ${{ secrets.ANACONDA_TOKEN }} - publish: ${{ steps.publish.outputs.value }} - label: main diff --git a/.github/workflows/conda-pylab-build.yml b/.github/workflows/conda-pylab-build.yml index 1fe975c3..fa0384f1 100644 --- a/.github/workflows/conda-pylab-build.yml +++ b/.github/workflows/conda-pylab-build.yml @@ -1,67 +1,28 @@ -name: build_publish_anaconda +name: OpenAlea CI on: push: - branches: [ master ] + branches: + - main + - master + tags: + - 'v*' pull_request: - branches: [ master ] - + types: + - opened + - synchronize + - reopened + release: + types: + - published + jobs: - build-and-publish: - name: ${{ matrix.os }}, Python 3.${{ matrix.python-minor-version }} for conda deployment - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - max-parallel: 3 - matrix: - os: [ ubuntu-latest] - python-minor-version: [9] - isMaster: - - ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/dev') }} - exclude: - - isMaster: false - os: ubuntu-latest - python-minor-version: 7 - - isMaster: false - os: ubuntu-latest - python-minor-version: 8 - - isMaster: false - os: macos-latest - python-minor-version: 7 - - isMaster: false - os: macos-latest - python-minor-version: 8 - - isMaster: false - os: macos-latest - python-minor-version: 9 - - isMaster: false - os: windows-latest - python-minor-version: 7 - - isMaster: false - os: windows-latest - python-minor-version: 8 - - isMaster: false - os: windows-latest - python-minor-version: 9 + build: + uses: openalea/action-build-publish-anaconda/.github/workflows/openalea_ci.yml@main + secrets: + anaconda_token: ${{ secrets.ANACONDA_TOKEN }} - steps: - - name: Chekout - uses: actions/checkout@v3 - - name: Determine publish - uses: haya14busa/action-cond@v1 - id: publish - with: - cond: ${{ contains(github.ref, 'master') || startsWith(github.ref, 'refs/heads/v') }} - if_true: 'true' - if_false: 'false' - - name: Build and Publish - uses: openalea/action-build-publish-anaconda@v0.1.4 - with: - conda: pylab/conda - mamba: true - python: ${{ matrix.python-minor-version }} - numpy: '20' - channels: openalea3, conda-forge - token: ${{ secrets.ANACONDA_TOKEN }} - publish: ${{ steps.publish.outputs.value }} - label: main + with: + conda-directory: pylab/conda + python-minor-version: "[10, 11, 12]" + operating-system: '[ "ubuntu-latest" , "macos-13" , "windows-latest"]' diff --git a/.github/workflows/conda-stdlib-build.yml b/.github/workflows/conda-stdlib-build.yml deleted file mode 100644 index b10ba646..00000000 --- a/.github/workflows/conda-stdlib-build.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: build_publish_anaconda - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - build-and-publish: - name: ${{ matrix.os }}, Python 3.${{ matrix.python-minor-version }} for conda deployment - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - max-parallel: 3 - matrix: - os: [ ubuntu-latest] - python-minor-version: [9] - isMaster: - - ${{ github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/heads/dev') }} - exclude: - - isMaster: false - os: ubuntu-latest - python-minor-version: 7 - - isMaster: false - os: ubuntu-latest - python-minor-version: 8 - - isMaster: false - os: macos-latest - python-minor-version: 7 - - isMaster: false - os: macos-latest - python-minor-version: 8 - - isMaster: false - os: macos-latest - python-minor-version: 9 - - isMaster: false - os: windows-latest - python-minor-version: 7 - - isMaster: false - os: windows-latest - python-minor-version: 8 - - isMaster: false - os: windows-latest - python-minor-version: 9 - - steps: - - name: Chekout - uses: actions/checkout@v3 - - name: Determine publish - uses: haya14busa/action-cond@v1 - id: publish - with: - cond: ${{ contains(github.ref, 'master') || startsWith(github.ref, 'refs/heads/v') }} - if_true: 'true' - if_false: 'false' - - name: Build and Publish - uses: openalea/action-build-publish-anaconda@v0.1.4 - with: - conda: stdlib/conda - mamba: true - python: ${{ matrix.python-minor-version }} - numpy: '20' - channels: openalea3, conda-forge - token: ${{ secrets.ANACONDA_TOKEN }} - publish: ${{ steps.publish.outputs.value }} - label: main diff --git a/pylab/conda/meta.yaml b/pylab/conda/meta.yaml index 73f92efd..558c2405 100644 --- a/pylab/conda/meta.yaml +++ b/pylab/conda/meta.yaml @@ -1,46 +1,57 @@ -{% set data = load_setup_py_data() %} +{% set pyproject = load_file_data('../pyproject.toml', from_recipe_dir=True) %} +{% set name = pyproject.get('project').get('name') %} +{% set description = pyproject.get('project').get('description') %} +{% set version = environ.get('SETUPTOOLS_SCM_PRETEND_VERSION', "0.0.0.dev") %} +{% set license = pyproject.get('project').get('license') %} +{% set home = pyproject.get('project', {}).get('urls', {}).get('Homepage', '') %} +{% set build_deps = pyproject.get("build-system", {}).get("requires", []) %} +{% set deps = pyproject.get('project', {}).get('dependencies', []) %} +{% set conda_deps = pyproject.get('tool', {}).get('conda', {}).get('environment', {}).get('dependencies',[]) %} + package: - name: openalea.pylab - version: {{ data.get('version') }} + name: {{ name }} + version: {{ version }} source: path: .. build: noarch: python + string: py{{ PY_VER }} preserve_egg_dir: True - number: 0 - script: {{PYTHON}} setup.py install + # pip install options mainly ensure that dependencies are handled by conda (and not pip) + # --no-deps ensure pip will not install deps not declared in meta.yaml (but declared in pyproject.toml) + # --no-build-isolation ensure pip will not replace build deps declared in meta.yaml (and declared in pyproject.toml) + # --ignore-installed ensure that compiled files (accidentally present in sources or uncleaned locally) will be overwritten + script: {{ PYTHON }} -m pip install . --no-deps --ignore-installed --no-build-isolation -vv requirements: - build: - - python {{PY_VER}} - - setuptools - - openalea.deploy + host: + - python + {% for dep in build_deps %} + - {{ dep }} + {% endfor %} + run: - - python <3.11 - - openalea.deploy - - openalea.core - - openalea.numpy - - matplotlib + - python + {% for dep in deps + conda_deps %} + - {{ dep }} + {% endfor %} test: - imports: - - openalea.oapylab requires: - pytest - - scipy + - setuptools + imports: + - openalea.core + - openalea.oapylab source_files: - - test/ - - test/*.py - + - test/test_*.py commands: - - cd test - - pytest -v test_*.py + - pytest -v about: - home: {{ data.get('url') }} - license: Cecill-c License - summary: {{ data.get('description') }} - + home: {{ home }} + license: {{ license }} + summary: {{ description }} diff --git a/pylab/doc/conf.py b/pylab/doc/conf.py index 185a4426..ba50ab05 100644 --- a/pylab/doc/conf.py +++ b/pylab/doc/conf.py @@ -1,16 +1,153 @@ -import os,sys +# -*- coding: utf-8 -*- +import sys +import os -# read sphinx conf.py file -from openalea.misc.sphinx_configuration import * -from openalea.misc.sphinx_tools import sphinx_check_version -from openalea.deploy.metainfo import read_metainfo +import pydata_sphinx_theme # Pydata theme: https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html -sphinx_check_version() # check that sphinx version is recent -metadata = read_metainfo('../metainfo.ini') # read metainfo from common file with setup.py -for key in ['version','project','release', 'name']: - exec("%s = '%s'" % (key, metadata[key])) +from importlib.metadata import metadata +project='pylab' +meta = metadata('openalea.' + project) +release = meta.get("version") +# for example take major/minor +version = ".".join(release.split('.')[:3]) +author = meta['Author'].split(' <')[0] +desc = meta['Summary'] +urls = {k:v for k,v in [item.split(',') for item in meta.get_all('Project-URL')]} -# by product that need to be updated: -latex_documents = [('contents', 'main.tex', project + ' documentation', authors, 'manual')] -project = name +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath('..')) # to include the root of the package + +# -- General configuration ------------------------------------------------ +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + 'sphinx.ext.autodoc', # support for automatic inclusion of docstring + 'sphinx.ext.autosummary', # generates autodoc summaries + 'sphinx.ext.doctest', # inclusion and testing of doctest code snippets + 'sphinx.ext.intersphinx', # support for linking to other projects + 'sphinx.ext.mathjax', # support for math equations + 'sphinx.ext.ifconfig', # support for conditional content + 'sphinx.ext.viewcode', # support for links to source code + 'sphinx.ext.coverage', # includes doc coverage stats in the documentation + 'sphinx.ext.todo', # support for todo items + 'sphinx.ext.napoleon', # support for numpy and google style docstrings + "sphinx_favicon", # support for favicon + "sphinx_copybutton", # support for copybutton in code blocks + "nbsphinx", # for integrating jupyter notebooks + "myst_parser" # for parsing .md files +] +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] +autosummary_generate = True +exclude_patterns = ['build', '_build', '_templates'] +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +source_suffix = { + '.rst': 'restructuredtext', + '.md': 'markdown', +} +# The master toctree document. +master_doc = 'index' +# General information about the project. +copyright = u'Cecill-C INRAE / INRIA / CIRAD' +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = "en" +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + +# -- Options for HTML output ---------------------------------------------- +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'pydata_sphinx_theme' +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +html_theme_options = { + "header_links_before_dropdown": 6, + "sidebarwidth": 200, + "sticky_navigation": "false", + "collapse_navigation": "false", + "display_version": "true", + "icon_links": [ + { + "name": "GitHub", + "url": urls['Repository'], + "icon": "fa-brands fa-github", + }, + ], + "show_version_warning_banner": True, + "footer_start": ["copyright"], + "footer_center": ["sphinx-version"], + "secondary_sidebar_items": { + "**/*": ["page-toc", "edit-this-page", "sourcelink"], + "examples/no-sidebar": [], + }, + "use_edit_page_button": True, + } +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] +html_logo = "_static/openalea_web.svg" +html_favicon = "_static/openalea_web.svg" +# If false, no module index is generated. +html_domain_indices = True +# If false, no index is generated. +html_use_index = True +# If true, the index is split into individual pages for each letter. +html_split_index = False +# If true, links to the reST sources are added to the pages. +html_show_sourcelink = True +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +html_show_sphinx = True +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +html_show_copyright = True +# Output file base name for HTML help builder. +htmlhelp_basename = project + '_documentation' +# Add infomation about github repository +html_context = { + # "github_url": "https://github.com", # or your GitHub Enterprise site + "github_user": "openalea", + "github_repo": "openalea-components", + "github_version": "main", + "doc_path": "doc", +} + +# -- Options for LaTeX output --------------------------------------------- +latex_elements = { +} +latex_documents = [ + (master_doc, 'pylab.tex', u'pylab Documentation', + u'INRA / INRIA / CIRAD', 'manual'), +] + +# -- Options for manual page output --------------------------------------- +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, project, project + ' Documentation', + [author], 1) +] + +# -- Options for Texinfo output ------------------------------------------- +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, project, project + ' Documentation', + author, project, desc, + 'Miscellaneous'), +] +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'python': ('https://docs.python.org/', None)} \ No newline at end of file diff --git a/pylab/pyproject.toml b/pylab/pyproject.toml new file mode 100644 index 00000000..d5c23da6 --- /dev/null +++ b/pylab/pyproject.toml @@ -0,0 +1,83 @@ +# FB 2025-04-14: based on ADEL and hydroshoot, sphinx pkg in environment.yml +[build-system] +requires = [ + "setuptools", + "setuptools_scm", + ] +build-backend = "setuptools.build_meta" + +# allow openalea to be a namespace package +[tool.setuptools.packages.find] +where = ["src"] + +# enable dynamic versioning based on git tags +[tool.setuptools_scm] +# can be empty if no extra settings are needed, presence enables setuptools-scm + +[project] +name = "openalea.pylab" +authors = [ + { name = "Christophe Pradal" }, +] +description = "Numpy modules for Visualea." +readme = "README.rst" +license = "CECILL-C" +license-files = ["LICEN[CS]E*"] +requires-python = ">=3.0" +classifiers = [ + "Intended Audience :: Science/Research", + "Intended Audience :: Developers", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Topic :: Scientific/Engineering", +] +dynamic = ["version"] + +dependencies = [ + "matplotlib", +] + + +# section specific to conda-only distributed package (not used by pip yet) +[tool.conda.environment] +channels = [ + "openalea3", + "conda-forge" +] +dependencies = [ + "openalea.core" +] + +[project.optional-dependencies] +test = ["pytest"] +notebook = ["jupyter"] +doc = [ + "sphinx-favicon", + "sphinx-rtd-theme", + "pydata-sphinx-theme", + "myst-parser", + "nbsphinx", + "sphinx-copybutton", +] + +[project.urls] +Homepage = "https://openalea.rtfd.io" +"Bug Tracker" = "https://github.com/openalea/openalea-components/issues" +Discussions = "https://github.com/openalea/openalea-components/discussions" +Changelog = "https://github.com/openalea/openalea-components/releases" + +[tool.setuptools.package-data] +"numpy" = ["*.csv"] + +[project.entry-points."wralea"] +"pylab" = "openalea.pylab_main_wralea" +"pylab.demo" = "openalea.pylab_demo_wralea" +"pylab.plotting" = "openalea.pylab_plotting_wralea" +"pylab.datasets" = "openalea.pylab_datasets_wralea" +"pylab.decorators" = "openalea.pylab_decorators_wralea" +"pylab.Drawing" = "openalea.pylab_drawing_wralea" +"pylab.test" = "openalea.pylab_test_wralea" +"pylab.patches" = "openalea.pylab_patches_wralea" +"pylab.mplot3d" = "openalea.pylab_3d_wralea" diff --git a/pylab/setup.py b/pylab/setup.py deleted file mode 100644 index dbe1531d..00000000 --- a/pylab/setup.py +++ /dev/null @@ -1,71 +0,0 @@ -# -*- coding: utf-8 -*- - -import sys -import os - -from setuptools import setup, find_namespace_packages - -# find version number in src/openalea/core/version.py -_version = {} -with open("src/openalea/oapylab/version.py") as fp: - exec(fp.read(), _version) - version = _version["__version__"] - -name = 'OpenAlea.Pylab' -package = 'pylab' -description= 'Pylab interface' -long_description= 'Pylab interface provides a set of nodes that provide pylab tools within OpenAlea' -authors= 'Thomas Cokelaer, Christophe Pradal' -authors_email = 'christophe.pradal@cirad.fr' -url = 'https://openalea.rtfd.io' -license = 'Cecill-C' - -packages = find_namespace_packages(where='src', include=['openalea.*']) -package_dir = {'':'src'} - -setup_requires = ['openalea.deploy'] -install_requires = [] - -setup( - # Meta data (no edition needed if you correctly defined the variables above) - name=name, - version=version, - description=description, - long_description=long_description, - author=authors, - author_email=authors_email, - url=url, - license=license, - keywords = '', - - # package installation - packages= packages, - package_dir= package_dir, - - # Namespace packages creation by deploy - #namespace_packages = [namespace], - #create_namespaces = True, - zip_safe= False, - - # Dependencies - setup_requires = setup_requires, - install_requires = install_requires, - - include_package_data = True, - - entry_points = { - "wralea": [ "pylab = openalea.pylab_main_wralea", - "pylab.demo = openalea.pylab_demo_wralea", - "pylab.plotting = openalea.pylab_plotting_wralea", - "pylab.datasets = openalea.pylab_datasets_wralea", - "pylab.decorators = openalea.pylab_decorators_wralea", - "pylab.Drawing = openalea.pylab_drawing_wralea", - "pylab.test = openalea.pylab_test_wralea", - "pylab.patches = openalea.pylab_patches_wralea", - "pylab.mplot3d = openalea.pylab_3d_wralea", - ] - }, - - ) - - diff --git a/pylab/src/openalea/oapylab/__init__.py b/pylab/src/openalea/oapylab/__init__.py index 823a2f02..0cfba26c 100644 --- a/pylab/src/openalea/oapylab/__init__.py +++ b/pylab/src/openalea/oapylab/__init__.py @@ -1,7 +1,6 @@ -from openalea.deploy import get_metainfo +from importlib import metadata - -version = get_metainfo('openalea.pylab', 'version') -authors = get_metainfo('openalea.pylab', 'author') +version = metadata.metadata('openalea.pylab')['version'] +authors = metadata.metadata('openalea.pylab')['Author'] from . import tools diff --git a/pylab/src/openalea/pylab_3d_wralea/__wralea__.py b/pylab/src/openalea/pylab_3d_wralea/__wralea__.py index 8d399c36..1f61618f 100644 --- a/pylab/src/openalea/pylab_3d_wralea/__wralea__.py +++ b/pylab/src/openalea/pylab_3d_wralea/__wralea__.py @@ -2,10 +2,10 @@ # This file has been generated at Sat Mar 6 21:17:54 2010 from openalea.core import Factory -from openalea.deploy import get_metainfo +from importlib import metadata -version = get_metainfo('openalea.pylab', 'version') -authors = get_metainfo('openalea.pylab', 'author') +version = metadata.metadata('openalea.pylab')['version'] +authors = metadata.metadata('openalea.pylab')['Author'] __name__ = 'openalea.pylab.mplot3d' diff --git a/pylab/src/openalea/pylab_datasets_wralea/__wralea__.py b/pylab/src/openalea/pylab_datasets_wralea/__wralea__.py index d240f22c..5889c577 100644 --- a/pylab/src/openalea/pylab_datasets_wralea/__wralea__.py +++ b/pylab/src/openalea/pylab_datasets_wralea/__wralea__.py @@ -2,10 +2,10 @@ # This file has been generated at Sat Mar 6 21:17:54 2010 from openalea.core import Factory -from openalea.deploy import get_metainfo +from importlib import metadata -version = get_metainfo('openalea.pylab', 'version') -authors = get_metainfo('openalea.pylab', 'author') +version = metadata.metadata('openalea.pylab')['version'] +authors = metadata.metadata('openalea.pylab')['Author'] __name__ = 'openalea.pylab.datasets' diff --git a/pylab/src/openalea/pylab_decorators_wralea/__wralea__.py b/pylab/src/openalea/pylab_decorators_wralea/__wralea__.py index 8e7bf776..7c423d36 100644 --- a/pylab/src/openalea/pylab_decorators_wralea/__wralea__.py +++ b/pylab/src/openalea/pylab_decorators_wralea/__wralea__.py @@ -2,10 +2,10 @@ # This file has been generated at Sat Mar 6 21:17:54 2010 from openalea.core import Factory -from openalea.deploy import get_metainfo +from importlib import metadata -version = get_metainfo('openalea.pylab', 'version') -authors = get_metainfo('openalea.pylab', 'author') +version = metadata.metadata('openalea.pylab')['version'] +authors = metadata.metadata('openalea.pylab')['Author'] __name__ = 'openalea.pylab.Axes decorators' diff --git a/pylab/src/openalea/pylab_drawing_wralea/__wralea__.py b/pylab/src/openalea/pylab_drawing_wralea/__wralea__.py index ed4f8c1a..b4b982fd 100644 --- a/pylab/src/openalea/pylab_drawing_wralea/__wralea__.py +++ b/pylab/src/openalea/pylab_drawing_wralea/__wralea__.py @@ -2,10 +2,10 @@ # This file has been generated at Sat Mar 6 21:17:54 2010 from openalea.core import Factory -from openalea.deploy import get_metainfo +from importlib import metadata -version = get_metainfo('openalea.pylab', 'version') -authors = get_metainfo('openalea.pylab', 'author') +version = metadata.metadata('openalea.pylab')['version'] +authors = metadata.metadata('openalea.pylab')['Author'] __name__ = 'openalea.pylab.Drawing' diff --git a/pylab/src/openalea/pylab_main_wralea/__wralea__.py b/pylab/src/openalea/pylab_main_wralea/__wralea__.py index dacd76cf..bf4c2565 100644 --- a/pylab/src/openalea/pylab_main_wralea/__wralea__.py +++ b/pylab/src/openalea/pylab_main_wralea/__wralea__.py @@ -1,10 +1,10 @@ # This file has been generated at Fri Mar 5 11:20:24 2010 -from openalea.deploy import get_metainfo +from importlib import metadata -version = get_metainfo('openalea.pylab', 'version') -authors = get_metainfo('openalea.pylab', 'author') +version = metadata.metadata('openalea.pylab')['version'] +authors = metadata.metadata('openalea.pylab')['Author'] __name__ = 'openalea.pylab' __editable__ = False diff --git a/pylab/src/openalea/pylab_patches_wralea/__wralea__.py b/pylab/src/openalea/pylab_patches_wralea/__wralea__.py index a5fd44f2..97975918 100644 --- a/pylab/src/openalea/pylab_patches_wralea/__wralea__.py +++ b/pylab/src/openalea/pylab_patches_wralea/__wralea__.py @@ -2,11 +2,10 @@ # This file has been generated at Sat Mar 6 21:17:54 2010 from openalea.core import Factory -from openalea.deploy import get_metainfo +from importlib import metadata - -version = get_metainfo('openalea.pylab', 'version') -authors = get_metainfo('openalea.pylab', 'author') +version = metadata.metadata('openalea.pylab')['version'] +authors = metadata.metadata('openalea.pylab')['Author'] __name__ = 'openalea.pylab.patches'