Skip to content

plaster 1.1 failed to load development.ini: plaster.exceptions.MultipleLoadersFound #25

@bostrick

Description

@bostrick

Bug Report

Describe the bug
Starting with version 1.1, plaster get_loader() raises MultipleLoadersFound on stock installs.

To Reproduce
Steps to reproduce the behavior:
(Stock pyramid install from https://docs.pylonsproject.org/projects/pyramid/en/2.0-branch/narr/project.html#creating-the-project)

 $ cookiecutter gh:Pylons/pyramid-cookiecutter-starter --checkout 2.0-branch
 project_name [Pyramid Scaffold]:                                                                                                                                                                                                            
 repo_name [pyramid_scaffold]: breakplaster
 ... choose [1] template_langauge jinja2  and [1] no backend...

$ cd breakplaster/                                                                                                                                                                                                           
$ python3 -m venv env                                                                                                                                                                                             
$ env/bin/pip install --upgrade pip setuptools
...
Successfully installed pip-22.3.1 setuptools-65.5.1

 $ env/bin/pip install -e ".[testing]"
...
Successfully installed Mako-1.2.4 PasteDeploy-3.0.1 Pygments-2.13.0 WebTest-3.0.0 attrs-22.1.0 beautifulsoup4-4.11.1 breakplaster-0.0 coverage-6.5.0 exceptiongroup-1.0.4 hupper-1.10.3 iniconfig-1.1.1 jinja2-3.1.2 markupsafe-2.1.1 packaging-21.3 plaster-1.1 plaster_pastedeploy-1.0.1 pluggy-1.0.0 pyparsing-3.0.9 pyramid-2.0 pyramid-mako-1.1.0 pyramid_debugtoolbar-4.9 pyramid_jinja2-2.10 pytest-7.2.0 pytest-cov-4.0.0 repoze.lru-0.7 soupsieve-2.3.2.post1 tomli-2.0.1 translationstring-1.4 venusian-3.0.0 waitress-2.1.2 webob-1.8.7 zope.deprecation-4.4.0 zope.interface-5.5.1

$ env/bin/pserve development.ini
Traceback (most recent call last):
  File "/home/bowe/breakplaster/env/bin/pserve", line 8, in <module>
    sys.exit(main())
  File "/home/bowe/breakplaster/env/lib64/python3.10/site-packages/pyramid/scripts/pserve.py", line 30, in main
    return command.run()
  File "/home/bowe/breakplaster/env/lib64/python3.10/site-packages/pyramid/scripts/pserve.py", line 189, in run
    loader = self._get_config_loader(config_uri)
  File "/home/bowe/breakplaster/env/lib64/python3.10/site-packages/pyramid/scripts/common.py", line 23, in get_config_loader
    return plaster.get_loader(config_uri, protocols=['wsgi'])
  File "/home/bowe/breakplaster/env/lib64/python3.10/site-packages/plaster/loaders.py", line 115, in get_loader
    raise MultipleLoadersFound(
plaster.exceptions.MultipleLoadersFound: Multiple plaster loaders were found for scheme "file+ini", protocol "wsgi". Please specify a more specific config_uri. Matched loaders: plaster-pastedeploy+file+ini, plaster-pastedeploy+file+ini                                                                                                                                                                                                                                                                                                                                                         

Expected behavior
plaster properly loads development.ini and starts the web application.

Additional context
Not unique to pyramid, plaster 1.1 breaks similarly in my own project as well. Downgrading to plaster==1.0 resolves the problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions