Mercurial File Finder Plugin for Setuptools
Project description
A simple setuptools plugin to support creating distributions from a mercurial-based package checkout.
Detailed Documentation
Mercurial File Finder Plugin for Setuptools
This package provides a simple, command-based file finder plugin for setuptools. Once installed, one can create distributions using a pacakge that has been checked out with Mercurial.
So let’s create a workspace:
>>> import tempfile >>> ws = tempfile.mkdtemp()
Since the workspace is not a mercurial repository, the finder returns an empty list and leaves an error message in the logs:
>>> from z3c.setuptools_mercurial import finder>>> finder.find_files(ws) abort: There is no Mercurial repository here (.hg not found)! (code 255) <BLANKLINE> []
Also, if the directory does not exist, we get an error message, but an empty result set:
>>> finder.find_files('/foo') [Errno 2] No such file or directory: '/foo' []
Let’s now create a new repository:
>>> import os >>> repos = os.path.join(ws, 'test') >>> cmd('hg init ' + repos)
The finder still fails with error code 1, since no file is yet added in the repository:
>>> finder.find_files(repos) (code 1) []
Let’s now add soem directories and files and the finder should be happy.
>>> cmd('touch ' + os.path.join(repos, 'data.txt')) >>> cmd('hg add ' + os.path.join(repos, 'data.txt'))>>> cmd('mkdir ' + os.path.join(repos, 'dir1')) >>> cmd('touch ' + os.path.join(repos, 'dir1', 'data1.txt')) >>> cmd('hg add ' + os.path.join(repos, 'dir1', 'data1.txt'))>>> cmd('mkdir ' + os.path.join(repos, 'dir1', 'dir11')) >>> cmd('touch ' + os.path.join(repos, 'dir1', 'dir11', 'data1.txt')) >>> cmd('hg add ' + os.path.join(repos, 'dir1', 'dir11', 'data1.txt'))>>> finder.find_files(repos) ['data.txt', 'dir1/data1.txt', 'dir1/dir11/data1.txt']
Note that the result of the finder is always a list of relative locations based on the input directory.
>>> finder.find_files(os.path.join(repos, 'dir1')) ['data1.txt', 'dir11/data1.txt']
Buildout 1.5 and higher
When one uses zc.buildout 1.5 or higher, the system’s environment is manipulated. In particular, the PYTHONPATH OS environment variable is rewritten. In that case it should be deleted:
>>> import os >>> bo_orig_path = os.environ.pop('BUILDOUT_ORIGINAL_PYTHONPATH', None) >>> orig_path = os.environ.get('PYTHONPATH') >>> os.environ['PYTHONPATH'] = '/bogus'>>> finder.find_files(os.path.join(repos, 'dir1')) ['data1.txt', 'dir11/data1.txt']>>> if bo_orig_path: ... os.environ['BUILDOUT_ORIGINAL_PYTHONPATH'] = bo_orig_path >>> if orig_path: ... os.environ['PYTHONPATH'] = orig_path
CHANGES
1.1.1 (2010-08-30)
Bug: Improve the Buildout support. Thanks to Gary Poster for helping me out.
1.1.0 (2010-08-30)
Feature: Make z3c.setuptools_mercurial compatible with Buildout 1.5, which does not include the standard PYTHONPATH by default anymore. This caused mercurial not to find its library.
Feature: Use doctest instead of zope.testing.doctest.
Feature: Update coverage setup.
1.0.1 (2009-12-16)
Feature: Add a test for getting the file list within a sub-directory of the repository.
Bug: It turns out that setuptools does not like “./<path>” notation but only “<path>”. Fixed the problem.
1.0.0 (2009-12-15)
Initial release.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for z3c.setuptools_mercurial-1.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | fb0a9f1d33ce7543e87170811d5cec49d935897294b29a6c104d590344e3e6ac |
|
MD5 | 243762a7bb35b33954d7da0155031259 |
|
BLAKE2b-256 | 1d9bc30552fb493cd4919421f2003738248bfb8efb5215c2e0675f253f648a6a |