Buildout is a deployment automation tool written in and extended with Python

Overview

Buildout

Travis CI build report

Buildout is a project designed to solve 2 problems:

  1. Application-centric assembly and deployment

    Assembly runs the gamut from stitching together libraries to create a running program, to production deployment configuration of applications, and associated systems and tools (e.g. run-control scripts, cron jobs, logs, service registration, etc.).

    Buildout might be confused with build tools like make or ant, but it is a little higher level and might invoke systems like make or ant to get its work done.

    Buildout might be confused with systems like puppet or chef, but it is more application focused. Systems like puppet or chef might use buildout to get their work done.

    Buildout is also somewhat Python-centric, even though it can be used to assemble and deploy non-python applications. It has some special features for assembling Python programs. It's scripted with Python, unlike, say puppet or chef, which are scripted with Ruby.

  2. Repeatable assembly of programs from Python software distributions

    Buildout puts great effort toward making program assembly a highly repeatable process, whether in a very open-ended development mode, where dependency versions aren't locked down, or in a deployment environment where dependency versions are fully specified. You should be able to check buildout into a VCS and later check it out. Two checkouts built at the same time in the same environment should always give the same result, regardless of their history. Among other things, after a buildout, all dependencies should be at the most recent version consistent with any version specifications expressed in the buildout.

    Buildout supports applications consisting of multiple programs, with different programs in an application free to use different versions of Python distributions. This is in contrast with a Python installation (real or virtual), where, for any given distribution, there can only be one installed.

To learn more about buildout, including how to use it, see http://docs.buildout.org/.

Comments
  • up/downgrade fails with extension (mr.developer)

    up/downgrade fails with extension (mr.developer)

    Having the following buildout.cfg:

    [buildout]
    extensions = mr.developer
    sources-dir = dep
    auto-checkout = *
    parts = scripts
    develop = .
    versions = versions
    
    [versions]
    zc.buildout = 2.2.0
    
    #  jedi and epc are eggs needed for jedi.  Folded into the scripts
    #  part in order to reduce the number of parts that take time.
    [scripts]
    recipe = zc.recipe.egg
    eggs = jedi
           epc
           RBTools
    
    interpreter = python
    
    

    results in:

    bin/buildout
    While:
      Installing.
      Loading extensions.
    Error: There is a version conflict.
    We already have: zc.buildout 2.2.3
    

    The current zc.buildout version is 2.2.3, that gets downloaded by bootstrap.py The problem can be fixed by either python bootstrap.py --version=2.2.0 or nailing zc.buildout = 2.2.3

    opened by agroszer 59
  • Proof of concept: buildout using pip

    Proof of concept: buildout using pip

    Currently, buildout cannot install wheels. There are several issues about that, like #316. I have been wanting to experiment with getting this to work. So I went hacking. See the pip branch in my fork and compare.

    This is very far from complete. I was just curious on how far I could come with a couple of hours work. Maybe others can continue in this direction, or we can conclude that this way is not viable.

    So how do you use this for testing:

    • Create a virtualenv (I used Python 2.7 on Mac) and activate it.
    • git clone my branch
    • Go to the zc.buildout clone and do python setup.py develop.
    • Go to the zc.recipe.egg_ sub directory and do python setup.py develop.
    • Return to the main virtualenv directory.
    • Create a buildout.cfg to your liking and run buildout.
    • Run buildout a couple of times to get past some problems.

    The buildout.cfg I used, was this:

    [buildout]
    parts = test command backup
    # Possibly add develop lines like this:
    # develop =
    #     /Users/maurits/community/buildout/
    #     /Users/maurits/community/buildout/zc.recipe.egg_
    
    [test]
    recipe = zc.recipe.egg
    eggs = zest.releaser
    
    [command]
    recipe = plone.recipe.command
    command = echo Running command recipe.
    update-command = ${:command}
    
    [backup]
    recipe = collective.recipe.backup
    backup_blobs = false
    
    [versions]
    # Latest zest.releaser is 6.8, pin an earlier one.
    zest.releaser = 6.7
    plone.recipe.command = 1.1
    

    It has three parts, to show three different recipes that basically work.

    • zc.recipe.egg installs an egg plus its dependencies, including scripts. The bin/release script works, quitting with an expected error (there is nothing to release here).
    • plone.recipe.command performs a command during buildout run.
    • collective.recipe.backup creates some scripts for backing up a Zope/Plone database. The bin/backup script works, quitting with an expected error (there is no database here).

    Some remarks:

    • You must be in a virtualenv, and the current working directory must be the root of the virtualenv. Buildout will quit with an error if this is not the case. This is just to avoid my code messing up your system. You still use it at your own risk.
    • The code does not shell out to pip on a command line.
    • The code imports all kinds of stuff from pip. This may not be stable at all. I am not aware of an api for pip. If we want to go this way, we should ask for such an api, and help create and test it.
    • There are lots of buildout options that we could in some way pass to pip, but currently I don't. At this moment I don't care if newest=true/false works, or if we can use an alternative index.
    • There are lots of pip options that I am currently not using.
    • Various things are hardcoded.
    • You may need to run buildout a couple of times: after installing a recipe, buildout wants to import the recipe, which at first fails.
    • I changed stuff in zc.buildout and in the included zc.recipe.egg_. Most importantly, in easy_install.install I am no longer creating an easy_install.Installer, but I use the new install function inzcpip.py.
    • In zcpip.py I am basically trying to do what pip.commands.install.InstallCommand.run does, and have ripped out as much as I could, to keep things a bit simpler.
    • Drawback of this approach with installing everything in a virtualenv: all scripts will have the same packages installed. So you cannot install a script bin/script-with-package-X and a script bin/script-without-package-X to check if your code works properly both with and without an optional dependency.

    Closing remarks:

    • No this is not ready. Do not use this in production.
    • Yes, it is ugly and has problems.
    • Hey, some stuff works! :-)
    opened by mauritsvanrees 45
  • Buildout does not install setup.scripts, even with zc.recipe.egg:scripts

    Buildout does not install setup.scripts, even with zc.recipe.egg:scripts

    http://pypi.python.org/pypi/zc.recipe.egg/1.3.2#script-generation does not work.

    You can verify this with the following test package: http://pypi.python.org/pypi/tompoes/0.0.2.

    It seems zc.buildout.easy_install isn't doing it's work properly.

    There is one more issue, which might or might not be related. In any case, the example package has only 1 module; tompoes.py. This module is NOT installed. That means the endpoint tom isn't working!

    Since I've got no idea if this bug is caused by the failure to install scripts, I added it to this ticket instead of creating a separate issue.

    opened by specialunderwear 44
  • Travis CI appears to be broken

    Travis CI appears to be broken

    The last successful build was 2 months ago: https://travis-ci.org/buildout/buildout/builds/553658470

    Today I merged a typo fix in a doctest and the build is failing: https://travis-ci.org/buildout/buildout/builds/574320041

    The Python 2.7 build fails three tests, all Python 3.x builds hang.

    bug 
    opened by mgedmin 32
  • update to bootstrap.py

    update to bootstrap.py

    setuptools 34.0.0 just introduced 3 new deps and deprecated the ez_setup.py (pinned to 33.1.1). I am not sure if bootstrap.py can be updated to reflect the setuptools upgrade.

    Carlos

    opened by papachoco 30
  • Force install egg

    Force install egg

    Hi,

    I have the following buildout.cfg

    [buildout]
    include-site-packages = false
    versions = versions
    
    parts =
        makedirs
    
    eggs =
        six
    
    [versions]
    six = 1.10.0
    
    [makedirs]
    recipe = z3c.recipe.mkdir
    paths = ${buildout:directory}/var
    

    When I call bin/buildout I expect to see six in the eggs folder at the end but buildout doesn't do it.

    What is wrong with this, how to force buildout to put egg into eggs folder?

    I tried to add custom egg definition and include it in parts but it didn't work too.

    Thanks.

    opened by sultaniman 29
  • Install wheels via setuptools, fixes #425

    Install wheels via setuptools, fixes #425

    Default to setuptools' wheel support instead of failing

    Setuptools 38.2.0 suddenly started supporting and downloading wheels. .whl files would end up in the non-functioning and deprecated unpack_wheel(). The new default ('just use setuptools') works fine.

    • If you use an older setuptools, setuptools won't download wheels and the new code won't be used.

    • If you use buildout.wheel, you'll overwrite the unpacker anyway.

    Fixes #425

    opened by reinout 27
  • Fix #153: buildout should cache working set environments

    Fix #153: buildout should cache working set environments

    This PR is meant to address the problem discussed here: https://community.plone.org/t/multiple-zope-instances-slow-buildout

    Review is much appreciated because I'm new to buildout development (I'm a buildout heavy user, though).

    opened by rafaelbco 24
  • setuptools is removing easy_install, deprecation warning in 42.0.0

    setuptools is removing easy_install, deprecation warning in 42.0.0

    Refer to pypa/setuptools/pull/1830.

    Buildout still calling out to setuptools.command.easy_install in zc/buildout/easy_install.py:call_easy_install(spec, dest).

    So what our take and future direction on this?

    42.0.0 changelog also mentioned about eggs are not supported anymore.

    #1830, #1909: Mark the easy_install script and setuptools command as deprecated, and use pip when available to fetch/build wheels for missing setup_requires/tests_require requirements, with the following differences in behavior:

        support for python_requires
        better support for wheels (proper handling of priority with respect to PEP 425 tags)
        PEP 517/518 support
        eggs are not supported
    
    opened by k4ml 23
  • Add support to overwrite instead of update the versions-file

    Add support to overwrite instead of update the versions-file

    buildout.dumppickedversions has the option overwrite-picked-versions-file to overwrite instead of appending to the versions file. (https://github.com/collective/buildout.dumppickedversions/blob/master/src/buildout/dumppickedversions/init.py#L63)

    Buildout 2.0 only provides update-versions-file. When using this option the picked versions file just grows each buildout run.

    @reinout Do you think it's possible to add this behavior to buildout 2.0?

    opened by jaap3 23
  • Download config is broken with https://user:password@host:port/myconfig.cfg

    Download config is broken with https://user:password@host:port/myconfig.cfg

    The latest changes in version 2.4.1 will break downloading a config file from a private pypi server.

    bin/buildout -c https://user:[email protected]/myconfig.cfg
    

    will end in:

      An internal error occurred due to a bug in either zc.buildout or in a recipe being used:
      Traceback (most recent call last):
        File "/xeebo/python27/lib/python2.7/site-packages/zc.buildout-2.4.1-py2.7.egg/zc/buildout/buildout.py", line 1986, in main
          user_defaults, command, args)
        File "/xeebo/python27/lib/python2.7/site-packages/zc.buildout-2.4.1-py2.7.egg/zc/buildout/buildout.py", line 231, in __init__
          data['buildout'].copy(), override, set()))
        File "/xeebo/python27/lib/python2.7/site-packages/zc.buildout-2.4.1-py2.7.egg/zc/buildout/buildout.py", line 1574, in _open
          path, is_temp = download(filename)
        File "/xeebo/python27/lib/python2.7/site-packages/zc.buildout-2.4.1-py2.7.egg/zc/buildout/download.py", line 117, in __call__
          local_path, is_temp = self.download(url, md5sum, path)
        File "/xeebo/python27/lib/python2.7/site-packages/zc.buildout-2.4.1-py2.7.egg/zc/buildout/download.py", line 196, in download
          tmp_path, headers = urlretrieve(url, tmp_path)
        File "/xeebo/python27/lib/python2.7/site-packages/zc.buildout-2.4.1-py2.7.egg/zc/buildout/download.py", line 41, in urlretrieve
          url_obj = urllib2.urlopen(url)
        File "/xeebo/python27/lib/python2.7/urllib2.py", line 127, in urlopen
          return _opener.open(url, data, timeout)
        File "/xeebo/python27/lib/python2.7/urllib2.py", line 404, in open
          response = self._open(req, data)
        File "/xeebo/python27/lib/python2.7/urllib2.py", line 422, in _open
          '_open', req)
        File "/xeebo/python27/lib/python2.7/urllib2.py", line 382, in _call_chain
          result = func(*args)
        File "/xeebo/python27/lib/python2.7/urllib2.py", line 1222, in https_open
          return self.do_open(httplib.HTTPSConnection, req)
        File "/xeebo/python27/lib/python2.7/urllib2.py", line 1153, in do_open
          h = http_class(host, timeout=req.timeout) # will parse host:port
        File "/xeebo/python27/lib/python2.7/httplib.py", line 1186, in __init__
          source_address)
        File "/xeebo/python27/lib/python2.7/httplib.py", line 706, in __init__
          (self.host, self.port) = self._get_hostport(host, port)
        File "/xeebo/python27/lib/python2.7/httplib.py", line 748, in _get_hostport
          raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
      InvalidURL: nonnumeric port: '[email protected]'
    
    opened by projekt01 22
  • Private pypi repository with basic auth used to work in previous versions

    Private pypi repository with basic auth used to work in previous versions

    I have started using buildout 3.0.0.rc3 and noticed that it was not able to pull packages from a private pypi server with basic authentication.

    This is the snippet that used to work in the past:

    [some_package]
    recipe = zc.recipe.egg
    index =
        https://user:[email protected]/packages/simple
    eggs = some_package
    

    Now with 3.0.0rc3, it shows an error that has the following form:

    While:
      Installing apps.
      Getting distribution for 'some_package'.
    Error: Can't download https://pypi.example.com/api/packages/pypi/files/ml-demo/0.0.1/some_package-0.0.1.tar.gz#sha256-dda0a65e388a005f56c0d7d13c5737338b527dfdeafe3727f288441be857ed93: 401 Unauthorized
    

    What this seems to say is that buildout can pull the index, which is also behind basic auth, but cannot pull the package itself, this is to say, the credentials are not used when downloading the package.

    opened by shamirapz 4
  • Problem with Buildout on Python 3.10 and macOS >= 11; with reproduction repository

    Problem with Buildout on Python 3.10 and macOS >= 11; with reproduction repository

    Dear @goschtl, @mauritsvanrees, @gotcha, and the whole Buildout community,

    first things first: Thanks a stack for conceiving and maintaining this excellent package.

    TLDR;

    There is a minimal reproduction case repository at test-buildout-python310, where https://github.com/crate-workbench/test-buildout-python310/issues/1 swiftly outlines the problem.

    Details

    While working on https://github.com/crate/crate-python/pull/428, we ran into a similar problem you have been discussing at #606. We are also installing SQLAlchemy within a Buildout environment and it croaks specifically on Python 3.10 with macOS >= 11. Both Buildout 2 and Buildout 3 show the same symptom.

    First, we thought it would be a problem with GHA, but then a colleague also confirmed the flaw happens on his workstation running macOS 12. On our research about this issue, we also discovered https://github.com/pypa/setuptools/issues/2514 by @idgserpro, where similar symptoms showed up.

    In order to assist you with further research on this matter, we wrapped all up into a repository with a minimal reproduction case at test-buildout-python310, where the CI/GHA jobs will precisely highlight the build matrix items where the front falls off. https://github.com/crate-workbench/test-buildout-python310/issues/1 has more details about its outcome.

    With kind regards, Andreas.

    /cc @proddata

    Screenshot

    image

    TLDR;

    No eggs found in /var/folders/24/8k48jl6d249_n_qfxwsl6xvm0000gn/T/easy_install-uvggdcg2/zope.interface-5.2.0/egg-dist-tmp-s7mlm8qo (setup script problem?)
    
      File "/Users/runner/hostedtoolcache/Python/3.10.5/x64/lib/python3.10/site-packages/zc/buildout/easy_install.py", line 1745, in _move_to_eggs_dir_and_compile
        [tmp_loc] = glob.glob(os.path.join(tmp_dest, '*'))
    ValueError: not enough values to unpack (expected 1, got 0)
    
    Getting distribution for 'greenlet!=0.4.17'.
    [...]
    gcc: error: sh -c '/Applications/Xcode_13.2.1.app/Contents/Developer/usr/bin/xcodebuild -sdk /Applications/Xcode_13.2.1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk -find gcc 2> /dev/null' failed with exit code 256: (null) (errno=Invalid argument)
    xcode-select: Failed to locate 'gcc', requesting installation of command line developer tools.
    error: Setup script exited with error: command '/usr/bin/gcc' failed with exit code 72
    
    opened by amotl 14
  • ERROR: Package 'collective-jsonmigrator' requires a different Python: 3.8.10 not in '==2.7,>=3.7'

    ERROR: Package 'collective-jsonmigrator' requires a different Python: 3.8.10 not in '==2.7,>=3.7'

    Hi @gotcha

    here is an error I get when using zc.buildout 3.0.0rc3 while trying to install collective.jsonmigrator

    So the problem is either in https://github.com/collective/collective.jsonmigrator/blob/master/setup.py where python_requires="==2.7, >=3.7" or in the way it is managed by zc.buildout?

    Another thing is that the error message appears when asking for a fixed version, but if you do not pin a version, you have following message:

    Getting distribution for 'transmogrify.dexterity==2.0.0'.
    While:
      Installing instance1.
      Getting distribution for 'transmogrify.dexterity==2.0.0'.
    Error: Couldn't find a distribution for 'transmogrify.dexterity==2.0.0'.
    

    It would be great to have a message specifying that the version exists but is not python compatible.

    See you! Gauthier

    opened by gbastien 1
  • buildout3 rc3 problem

    buildout3 rc3 problem

    Hi,

    i try to install sqlalchemy via zc.recipe.egg. Buildout3 rc3.

    This is my config:

      4 [sqla]
      5 recipe = zc.recipe.egg
      6 eggs = sqlalchemy
    

    I get this error on first run:

    While:
      Installing sqla.
      Getting distribution for 'sqlalchemy'.
    
    An internal error occurred due to a bug in either zc.buildout or in a
    recipe being used:
    Traceback (most recent call last):
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/buildout.py", line 2250, in main
        getattr(buildout, command)(args)
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/buildout.py", line 855, in install
        installed_files = self[part]._call(recipe.install)
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/buildout.py", line 1651, in _call
        return f()
      File "/Users/ck/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8.egg/zc/recipe/egg/egg.py", line 227, in install
        reqs, ws = self.working_set()
      File "/Users/ck/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8.egg/zc/recipe/egg/egg.py", line 78, in working_set
        ws = self._working_set(
      File "/Users/ck/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8.egg/zc/recipe/egg/egg.py", line 161, in _working_set
        ws = zc.buildout.easy_install.install(
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/easy_install.py", line 971, in install
        return installer.install(specs, working_set)
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/easy_install.py", line 696, in install
        for dist in self._get_dist(requirement, ws):
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/easy_install.py", line 581, in _get_dist
        dists = [_move_to_eggs_dir_and_compile(dist, self._dest)]
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/easy_install.py", line 1948, in _move_to_eggs_dir_and_compile
        assert newdist is not None  # newloc above is missing our dist?!
    AssertionError
    

    and this on 2'nd

    ╰ bin/buildout -c tt.cfg
    Installing sqla.
    Getting distribution for 'sqlalchemy'.
    While:
      Installing sqla.
      Getting distribution for 'sqlalchemy'.
    
    An internal error occurred due to a bug in either zc.buildout or in a
    recipe being used:
    Traceback (most recent call last):
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/buildout.py", line 2250, in main
        getattr(buildout, command)(args)
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/buildout.py", line 855, in install
        installed_files = self[part]._call(recipe.install)
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/buildout.py", line 1651, in _call
        return f()
      File "/Users/ck/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8.egg/zc/recipe/egg/egg.py", line 227, in install
        reqs, ws = self.working_set()
      File "/Users/ck/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8.egg/zc/recipe/egg/egg.py", line 78, in working_set
        ws = self._working_set(
      File "/Users/ck/.buildout/eggs/zc.recipe.egg-2.0.7-py3.8.egg/zc/recipe/egg/egg.py", line 161, in _working_set
        ws = zc.buildout.easy_install.install(
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/easy_install.py", line 971, in install
        return installer.install(specs, working_set)
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/easy_install.py", line 696, in install
        for dist in self._get_dist(requirement, ws):
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/easy_install.py", line 581, in _get_dist
        dists = [_move_to_eggs_dir_and_compile(dist, self._dest)]
      File "/Users/ck/work/reha/new_bo/lib/python3.9/site-packages/zc/buildout/easy_install.py", line 1922, in _move_to_eggs_dir_and_compile
        os.rename(tmp_loc, newloc)
    OSError: [Errno 66] Directory not empty: '/Users/ck/.buildout/eggs/tmp5h568bek/SQLAlchemy-1.4.35-py3.9-macosx-11.5-x86_64.egg' -> '/Users/ck/.buildout/eggs/SQLAlchemy-1.4.35-py3.9-macosx-11.5-x86_64.egg'
    

    any idea?

    opened by goschtl 11
  • [feature request] Parallelise building parts

    [feature request] Parallelise building parts

    Is it possible to parallelise the building of parts? Could be a huge time saver.

    I think what would be needed would be to:

    1. Some kind of next_part function which can yield out the next non-dependent part to be built
    2. A way to send parts to a forked buildout process
    3. A way to receive results from the forked buildout process and write .installed.cfg
    4. An output display that shows the progress of forked buildout processes.

    Multi-processing, it can't be that hard right?

    Perhaps it shouldn't be on by default - I think some people express decencies by the order of the buildout:parts value.

    enhancement 
    opened by arterrey 4
  • buildout 3: PkgResourcesDeprecationWarning for packages containing a hyphen

    buildout 3: PkgResourcesDeprecationWarning for packages containing a hyphen

    If I am using a downloads cache and install a package those name contains a hyphen which is not in the eggs directory I get PkgResourcesDeprecationWarnings about invalid version numbers.

    See the following example:

    Contents of buildout.cfg:

    [buildout]
    parts = test
    eggs-directory = eggs
    download-cache = cache
    
    [test]
    recipe = zc.recipe.egg
    eggs = pytest-cov
    

    Example output:

    $ python3.9 -m venv deprec-warn
    $ cd deprec-warn/
    $ bin/pip install -U pip setuptools wheel "zc.buildout==3.0.0b5"
    ...
    Successfully installed pip-21.3.1 setuptools-59.4.0 wheel-0.37.0 zc.buildout-3.0.0b5
    cat > buildout.cfg << EOF
    [buildout]
    parts = test
    eggs-directory = eggs
    download-cache = cache
    
    [test]
    recipe = zc.recipe.egg
    eggs = pytest-cov
    EOF
    $ bin/buildout
    Creating directory '/.../deprec-warn/cache'.
    Creating directory '/.../deprec-warn/eggs/cp39'.
    Creating directory '/.../deprec-warn/parts'.
    Creating directory '/.../deprec-warn/develop-eggs'.
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning:  is an invalid version and will not be supported in a future release
      warnings.warn(
    Getting distribution for 'zc.recipe.egg>=2.0.6'.
    Got zc.recipe.egg 2.0.7.
    Installing test.
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.6 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning:  is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.7 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.8 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.9 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.10 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.11 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.12 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.13 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.14 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-0.15 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.2 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.3 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.4 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.5 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.6 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.7.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.8.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-1.8.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.0.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.1.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.2.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.2.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.3.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.3.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.4.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.5.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.5.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.6.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.6.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.7.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.7.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.8.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.8.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.9.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.10.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.10.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.11.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.11.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.12.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-2.12.1 is an invalid version and will not be supported in a future release
      warnings.warn(
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning: cov-3.0.0 is an invalid version and will not be supported in a future release
      warnings.warn(
    Getting distribution for 'pytest-cov'.
    Got pytest-cov 3.0.0.
    Getting distribution for 'pytest>=4.6'.
    Got pytest 6.2.5.
    Getting distribution for 'coverage[toml]>=5.2.1'.
    Got coverage 6.2.
    Getting distribution for 'toml'.
    Got toml 0.10.2.
    Getting distribution for 'py>=1.8.2'.
    Got py 1.11.0.
    Getting distribution for 'pluggy<2.0,>=0.12'.
    Got pluggy 1.0.0.
    Getting distribution for 'packaging'.
    Got packaging 21.3.
    Getting distribution for 'iniconfig'.
    Got iniconfig 1.1.1.
    Getting distribution for 'attrs>=19.2.0'.
    Got attrs 21.2.0.
    Getting distribution for 'tomli'.
    Got tomli 1.2.2.
    Getting distribution for 'pyparsing!=3.0.5,>=2.0.2'.
    Got pyparsing 3.0.6.
    $
    

    The interesting warnings seem to be the one without a version number and that each existing version of pytest-cov gets a warning.

    Repreated calls to bin/buildout show just one warning for an empty version number:

    $ bin/buildout
    /.../deprec-warn/lib/python3.9/site-packages/pkg_resources/__init__.py:116: PkgResourcesDeprecationWarning:  is an invalid version and will not be supported in a future release
      warnings.warn(
    Updating test.
    $
    
    opened by icemac 6
🔨🐍Make-like build automation tool for Python projects with extensive DSL features.

Pyke (WIP, Beta Release) Make-like build automation tool for Python projects with extensive DSL features. Features: Users can specify tasks, subtasks,

Ire 17 Jul 5, 2022
task management & automation tool

README doit - automation tool doit comes from the idea of bringing the power of build-tools to execute any kind of task Sample Code Define functions r

doit 1.5k Dec 30, 2022
Clang-based cross platform build system written in Python

Clang-build Find the full documentation at https://clang-build.readthedocs.io First steps Customisations Multiple targets Multiple projects Defaults M

Trick 17 9 Jun 29, 2022
A Star Trek Online build tool in Python

SETS - STO Equipment and Trait Selector A Star Trek Online build tool in Python Description Pre-alpha version of build tool for STO Getting Started De

Star Trek Online Community Developers 7 Nov 12, 2022
SCons - a software construction tool

SCons - a software construction tool Welcome to the SCons development tree. The real purpose of this tree is to package SCons for production distribut

SCons Project 1.6k Jan 3, 2023
bitbake tool

Bitbake ======= BitBake is a generic task execution engine that allows shell and Python tasks to be run efficiently and in parallel while working wit

openembedded 336 Dec 27, 2022
This is a simple tool for bootstrapping Chimera systems from binaries. For source builds, you want cports.

chimera-bootstrap This is a simple tool for bootstrapping Chimera systems from binaries. For source builds, you want cports. Simple usage: $ # run as

Chimera Linux 7 Feb 11, 2022
Python package used on Hardfight projects to make building, testing and deploying easy.

Hardfight Devtools Build, test and deploy Hardfight projects easly ?? What is it Devtools is a Python tool to make building, testing and deploying int

Hardfight 1 Dec 5, 2021
Package, distribute, and update any app for Linux and IoT.

Snapcraft Package, distribute, and update any app for Linux and IoT. Snaps are containerised software packages that are simple to create and install.

null 1.1k Jan 2, 2023
The official binary distribution format for Python

wheel This library is the reference implementation of the Python wheel packaging standard, as defined in PEP 427. It has two different roles: A setupt

Python Packaging Authority 368 Dec 23, 2022
Python-based continuous integration testing framework; your pull requests are more than welcome!

Buildbot The Continuous Integration Framework Buildbot is based on original work from Brian Warner, and currently maintained by the Botherders. Visit

Buildbot 5k Jan 5, 2023
Simplified packaging of Python modules

Flit is a simple way to put Python packages and modules on PyPI. It tries to require less thought about packaging and help you avoid common mistakes.

Thomas Kluyver 1.9k Jan 5, 2023
Python-based project scripting.

Paver - Easy Scripting for Software Projects Web: https://pythonhosted.org/Paver/ Download: https://pypi.python.org/pypi/Paver/ Source: https://github

Paver community 452 Dec 9, 2022
A pynt of Python build.

A pynt of Python build. Raghunandan Rao Features Easy to learn. Build tasks are just python funtions. Manages dependencies between tasks. Automaticall

Raghunandan Rao 154 Jan 4, 2023
Python program for installing many tools automatically

Tool Installer is a script made with python which help user in installing tools automatically

Spider Anongreyhat 6 Mar 13, 2022
PyPacker: a dumb little script for turning Python apps into standalone executable packages on Windows

PyPacker: a dumb little script for turning Python apps into standalone executable packages on Windows PyPacker is my attempt at creating a way to make

Serdar Yegulalp 9 Mar 15, 2022
This is a python helper package for Telebirr H5 Web payment integration helper.

Telebirr This is a python helper package for Telebirr H5 Web payment integration helper. The use case for this interface is payment via web. Third par

null 24 Dec 13, 2022
PlatformIO is a professional collaborative platform for embedded development :alien: A place where Developers and Teams have true Freedom! No more vendor lock-in!

PlatformIO Quick Links: Web | PlatformIO IDE | Project Examples | Docs | Donate | Contact Us Social: LinkedIn | Twitter | Facebook | Community Forums

PlatformIO 6.5k Jan 8, 2023
Smaller, easier, more powerful, and more reliable than make. An implementation of djb's redo.

redo - a recursive build system Smaller, easier, more powerful, and more reliable than make. This is an implementation of Daniel J. Bernstein's redo b

null 1.7k Jan 4, 2023