Giter Site home page Giter Site logo

check-manifest's Introduction

check-manifest

buildstatus appveyor coverage

Are you a Python developer? Have you uploaded packages to the Python Package Index? Have you accidentally uploaded broken packages with some files missing? If so, check-manifest is for you.

Quick start

$ pip install check-manifest

$ cd ~/src/mygreatpackage
$ check-manifest

You can ask the script to help you update your MANIFEST.in:

$ check-manifest -u -v
listing source files under version control: 6 files and directories
building an sdist: check-manifest-0.7.tar.gz: 4 files and directories
lists of files in version control and sdist do not match!
missing from sdist:
  tests.py
  tox.ini
suggested MANIFEST.in rules:
  include *.py
  include tox.ini
updating MANIFEST.in

$ cat MANIFEST.in
include *.rst

# added by check_manifest.py
include *.py
include tox.ini

Command-line reference

$ check-manifest --help
usage: check-manifest [-h] [--version] [-v] [-c] [-u] [-p PYTHON]
                      [--ignore patterns]
                      [source_tree]

Check a Python MANIFEST.in file for completeness

positional arguments:
  source_tree           location for the source tree (default: .)

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -v, --verbose         more verbose output (default: False)
  -c, --create          create a MANIFEST.in if missing (default: False)
  -u, --update          append suggestions to MANIFEST.in (implies --create)
                        (default: False)
  -p PYTHON, --python PYTHON
                        use this Python interpreter for running setup.py sdist
                        (default: /home/mg/.venv/bin/python)
  --ignore patterns     ignore files/directories matching these comma-
                        separated patterns (default: None)
  --ignore-bad-ideas patterns
                        ignore bad idea files/directories matching these
                        comma-separated patterns (default: [])

Configuration

You can configure check-manifest to ignore certain file patterns using a [tool.check-manifest] section in your pyproject.toml file or a [check-manifest] section in either setup.cfg or tox.ini. Examples:

# pyproject.toml
[tool.check-manifest]
ignore = [".travis.yml"]

# setup.cfg or tox.ini
[check-manifest]
ignore =
    .travis.yml

Note that lists are newline separated in the setup.cfg and tox.ini files.

The following options are recognized:

ignore

A list of filename patterns that will be ignored by check-manifest. Use this if you want to keep files in your version control system that shouldn't be included in your source distributions. The default ignore list is

PKG-INFO
*.egg-info
*.egg-info/*
setup.cfg
.hgtags
.hgsigs
.hgignore
.gitignore
.bzrignore
.gitattributes
.github/*
.travis.yml
Jenkinsfile
*.mo
ignore-default-rules
If set to true, your ignore patterns will replace the default ignore list instead of adding to it.
ignore-bad-ideas
A list of filename patterns that will be ignored by check-manifest's generated files check. Use this if you want to keep generated files in your version control system, even though it is generally a bad idea.

Version control integration

With pre-commit, check-manifest can be part of your git-workflow. Add the following to your .pre-commit-config.yaml.

repos:
-   repo: https://github.com/mgedmin/check-manifest
    rev: "0.49"
    hooks:
    -   id: check-manifest

If you are running pre-commit without a network, you can utilize args: [--no-build-isolation] to prevent a pip install reaching out to PyPI. This makes python -m build ignore your build-system.requires, so you'll want to list them all in additional_dependencies.

repos:
-   repo: https://github.com/mgedmin/check-manifest
    rev: "0.49"
    hooks:
    -   id: check-manifest
        args: [--no-build-isolation]
        additional_dependencies: [setuptools, wheel, setuptools-scm]

check-manifest's People

Contributors

asottile avatar brechtm avatar davisagli avatar fschulze avatar ghostofgoes avatar hugovk avatar ionelmc avatar jdufresne avatar jugmac00 avatar jwilk avatar lorengordon avatar mauritsvanrees avatar mgedmin avatar miketheman avatar mjakob avatar myint avatar pgjones avatar phijor avatar sbrugman avatar tjanez avatar tobiasraabe avatar zobayer1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

check-manifest's Issues

licensed under gplv2, but missing bits

http://www.gnu.org/licenses/gpl-howto.html

Per that page which covers how to apply the GPLv2 to your software, you need to do two things:

  1. add a header to each source file with the copyright notice and a statement saying the file is distributed under the gplv2
  2. include the text of the license itself with your program

The latter is usually done in a file called COPYING.

If you want, I'm game for doing a pull request. Let me know.

non-ASCII characters in filenames break output formatting

Same repository as #23:

$ git clone https://github.com/hhatto/autopep8
$ cd autopep8
$ check-manifest --version
check-manifest version 0.19.dev0
$ check-manifest -u
...
missing from sdist:
  ...
  test/example/é.txt
  ...
suggested MANIFEST.in rules:
  include *.bash
  include *.py
  include *.rst
  include .travis.yml
  include AUTHORS
  include LICENSE
  include Makefile
  include tox.ini
  recursive-include test *.gitignore
  recursive-include test *.py
  recursive-include test *.txt
updating MANIFEST.in
don't know how to come up with rules matching
  hooks/pre-push

and now with the updated MANIFEST.in we get a crash

$ check-manifest
listing source files under version control: 94 files and directories
copying source files to a temporary directory
building an sdist: autopep8-1.0a4.tar.gz: 92 files and directoriesTraceback (most recent call last):
  File "/home/mg/.venv/bin/check-manifest", line 9, in <module>
    load_entry_point('check-manifest==0.19.dev0', 'console_scripts', 'check-manifest')()
  File "/home/mg/src/check-manifest/check_manifest.py", line 658, in main
    update=args.update, python=args.python):
  File "/home/mg/src/check-manifest/check_manifest.py", line 594, in check_manifest
    "VCS", "sdist"))
  File "/home/mg/src/check-manifest/check_manifest.py", line 117, in format_difference
    return '\n'.join(res)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xcc in position 34: ordinal not in range(128)

`check-manifest path` does not work

  1. mkdir /tmp/x
  2. touch /tmp/x/setup.py
  3. cd /tmp
  4. check-manifest x

What I expect:

  • same result as cd x && check-manifest, i.e. an error that it couldn't find version control data

What actually happens:

  • "This is not a Python project (no setup.py)."

Curiously, this error does not happen if I mkdir /tmp/y && cd /tmp/y && check-manifest ../x.

non-ASCII characters in filenames break git ls-files parsing

I'm not sure whether I tried check-manifest on this repository before. So I'm not sure whether this is a regression or whether it never worked before. I can reproduce this on 0.18 and 0.19.dev0. I've seen this on Python 3.3, but it seems to also occur if I try Python 2.7.

$ git clone https://github.com/hhatto/autopep8
$ cd autopep8
$ check-manifest --version
check-manifest version 0.19.dev0
$ check-manifest
listing source files under version control: 96 files and directories
copying source files to a temporary directoryTraceback (most recent call last):
  File "/Users/myint/Library/Python/3.3/bin/check-manifest", line 9, in <module>
    load_entry_point('check-manifest==0.19.dev0', 'console_scripts', 'check-manifest')()
  File "/Users/myint/Library/Python/3.3/lib/python/site-packages/check_manifest.py", line 658, in main
    update=args.update, python=args.python):
  File "/Users/myint/Library/Python/3.3/lib/python/site-packages/check_manifest.py", line 572, in check_manifest
    copy_files(source_files, tempsourcedir)
  File "/Users/myint/Library/Python/3.3/lib/python/site-packages/check_manifest.py", line 191, in copy_files
    shutil.copy2(filename, destfile)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/shutil.py", line 243, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/shutil.py", line 109, in copyfile
    with open(src, 'rb') as fsrc:
FileNotFoundError: [Errno 2] No such file or directory: '"test'

'check-manifest -p python2.7' is broken

Example:

$ check-manifest -p python2.7
could not run ['/tmp/pywt/python2.7', 'setup.py', 'sdist', '-d', '/tmp/check-manifest-4f44XR-sdist']: [Errno 2] No such file or directory

Note how it's calling os.path.abspath() on python2.7. It shouldn't do that.

Doesn't work with Python 2.6

According to docs, TarFile only supports context manager protocol since 2.7, so that on 2.6 check-manifest crashes with AttributeError: 'TarFile' object has no attribute '__exit__'

Don't apologize for no reason

mg@platonas: ~/src/zopefoundation/z3c.viewtemplate [git:master +>] $ check-manifest -u
lists of files in version control and sdist do not match!
missing from VCS:
  MANIFEST.in
no MANIFEST.in found
don't know how to come up with rules matching any of the files, sorry!

The last two lines don't really make sense. MANIFEST.in is there, it's just not git added.

Respect exclusions in MANIFEST.in?

I noticed that check-manifest complains even about files explicitly excluded via exclude in MANIFEST.in. Shouldn't these be ignored given that the user is explicitly saying he doesn't want to include these?

check-manifest no longer finds files in sdist but not in VCS

A while ago I changed check-manifest to build a source distribution in a temporary directory, to avoid setuptools plugins from butting in and overriding MANIFEST.in (issue #1). The temporary directory gets a copy of all the source files from the VCS (plus MANIFEST.in, even if it's not in the VCS -- since that's what we're checking).

Unfortunately as a result you can no longer discover that your MANIFEST.in includes files that aren't present in the version control system -- they can't possibly be included during the test since they're not copied to the temporary directory.

I'm afraid this means check-manifest will need to build the sdist twice: once in the temporary directory, and once directly in the source tree.

I'm also toying with an alternative, simpler option, of having check-manifest --inplace skip the copying step.

Warn about leading and trailing slashes in filename patterns

I validated a MANIFEST.in with check-manifest, commited, and then woke up to a failing build because the MANIFEST.in contained a line

purge docs/_build/

with a trailing slash.

The traceback was:

Traceback (most recent call last):
  File "c:\temp\tmpe9f4zn", line 14, in <module>
    exec(compile(f.read(), 'c:\\buildslave\\transaction\\build\\.\\setup.py', 'exec'))
  File "c:\buildslave\transaction\build\.\setup.py", line 73, in <module>
    """
  File "c:\Python26_32\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "c:\Python26_32\lib\distutils\dist.py", line 975, in run_commands
    self.run_command(cmd)
  File "c:\Python26_32\lib\distutils\dist.py", line 995, in run_command
    cmd_obj.run()
  File "build\bdist.win32\egg\setuptools\command\develop.py", line 32, in run
  File "build\bdist.win32\egg\setuptools\command\develop.py", line 113, in install_for_development
  File "c:\Python26_32\lib\distutils\cmd.py", line 333, in run_command
    self.distribution.run_command(command)
  File "c:\Python26_32\lib\distutils\dist.py", line 995, in run_command
    cmd_obj.run()
  File "build\bdist.win32\egg\setuptools\command\egg_info.py", line 180, in run
  File "build\bdist.win32\egg\setuptools\command\egg_info.py", line 205, in find_sources
  File "build\bdist.win32\egg\setuptools\command\egg_info.py", line 291, in run
  File "build\bdist.win32\egg\setuptools\command\sdist.py", line 127, in __read_template_hack
  File "c:\Python26_32\lib\distutils\command\sdist.py", line 336, in read_template
    self.filelist.process_template_line(line)
  File "c:\Python26_32\lib\distutils\filelist.py", line 129, in process_template_line
    (action, patterns, dir, dir_pattern) = self._parse_template_line(line)
  File "c:\Python26_32\lib\distutils\filelist.py", line 112, in _parse_template_line
    dir_pattern = convert_path(words[1])
  File "c:\Python26_32\lib\distutils\util.py", line 201, in convert_path
    raise ValueError, "path '%s' cannot end with '/'" % pathname
ValueError: path 'docs/_build/' cannot end with '/'

I'm unable to reproduce this locally with Python 2.6.9. Which would be because I'm on Linux.

Here's the convert_path() from the current hg tip of Python 3.x:

def convert_path (pathname):
    """Return 'pathname' as a name that will work on the native filesystem,
    i.e. split it on '/' and put it back together again using the current
    directory separator.  Needed because filenames in the setup script are
    always supplied in Unix style, and have to be converted to the local
    convention before we can actually use them in the filesystem.  Raises
    ValueError on non-Unix-ish systems if 'pathname' either starts or
    ends with a slash.
    """
    if os.sep == '/':
        return pathname
    if not pathname:
        return pathname
    if pathname[0] == '/':
        raise ValueError("path '%s' cannot be absolute" % pathname)
    if pathname[-1] == '/':
        raise ValueError("path '%s' cannot end with '/'" % pathname)

    paths = pathname.split('/')
    while '.' in paths:
        paths.remove('.')
    if not paths:
        return os.curdir
    return os.path.join(*paths)

The pathname must not begin or end with a /, but this is verified only on non-Linux platforms.

should probably ignore "empty" directories

  1. git clone https://github.com/zopefoundation/zope.configuration
  2. check-manifest zope.configuration

Expected results:

lists of files in version control and sdist match

Actual results:

lists of files in version control and sdist do not match!
missing from sdist:
  docs/_static

What happens here is that docs/_static/ has a .gitignore inside (which is what makes Git pick it up), but then we filter it out (since #54).

Extra info: zope.configuration was at commit 39ffa68f48bd6787545fb945844af2635a3da9e3 at the time bug was filed.

Warn if manifest has lines that don't do anything

It would be nice if check-manifest also warned you if MANIFEST.in has lines that "don't do anything" (i.e. lines that match no files being included). The presence of such lines means that MANIFEST.in can be simplified, or perhaps that files are missing from source control that should be there.

should ignore .gitignore files in subdirectories

  1. git clone https://github.com/zopefoundation/zope.configuration
  2. check-manifest zope.configuration

Expected results:

lists of files in version control and sdist match

Actual results:

lists of files in version control and sdist do not match!
missing from sdist:
  docs/_static
  docs/_static/.gitignore
suggested MANIFEST.in rules:
  recursive-include docs *.gitignore

Extra info: zope.configuration was at commit 39ffa68f48bd6787545fb945844af2635a3da9e3 at the time bug was filed.

check-manifest doesn't understand cases where VCS contents legitimately differ from sdist

Sometimes you want to put generated files in the sdists, but you don't want to have them under version control. E.g. when you use Cython, you want to generate .c files and include them in sdists so your users don't have to have Cython installed to build your software -- all they'd need is a C compiler.

Currently check-manifest is ignorant of situations like these and warns about those generated files missing from VCS.

I think this is most likely a documentation bug:

  • figure out what's the right way to use check-manifest with a Cython-using package (e.g. put ignore = *.c in a setup.cfg?)
  • document it in the appropriate place
  • (maybe) have check-manifest suggest the ignore = *.c if it sees *.c or cython.dat in the "missing from VCS list
  • (maybe) include cython.dat in the default ignore list?

Some research is needed, e.g. what even is cython.dat and should it be present in sdists?

Windows test failures thanks to non-Unicode filenames

I added new tests in the fix for #23, and these tests broke on Windows.

Here's the new failure:

======================================================================
FAIL: test_get_vcs_files_nonascii_filenames (tests.TestGit)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "c:\buildslave\workspace\check-manifest-on-windows\tests.py", line 796, in test_get_vcs_files_nonascii_filenames
    self.assertEqual(get_vcs_files(), [filename])
AssertionError: Lists differ: [u'\xc3\xa9.txt'] != [u'\xe9.txt']

First differing element 0:
\xc3\xa9.txt
\xe9.txt

- [u'\xc3\xa9.txt']
?      ^^^^^

+ [u'\xe9.txt']
?      ^


----------------------------------------------------------------------

Bazaar and filename encodings on Windows

Currently I have a test failure on my Jenkins:

======================================================================
FAIL: test_get_vcs_files_nonascii_filenames (tests.TestBzr)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "c:\buildslave\workspace\check-manifest-on-windows\tests.py", line 842, in test_get_vcs_files_nonascii_filenames
    self.assertEqual(get_vcs_files(), [filename])
AssertionError: Lists differ: [u'\u201a.txt'] != [u'\xe9.txt']

First differing element 0:
\u201a.txt
\xe9.txt

- [u'\u201a.txt']
+ [u'\xe9.txt']

----------------------------------------------------------------------

Curiously, it showed up on my Jenkins when I fixed it on Appveyor.

Even more curiously, I used to see this when I ran the tests manually after rdesktop'ing into the Windows VM, and when I fixed it on Appveyor, I stopped seeing this error in manual tests.

("Manual" means "running tox from git bash".)

IOError if MANIFEST.in is missing

  1. Get a git repo that has a MANIFEST.in, e.g. check-manifest's own repo
  2. rm MANIFEST.in (but don't git rm)
  3. Run check-manifest

I get

listing source files under version control: 11 files and directories
building an sdist: check-manifest-0.22.dev0.tar.gz: 10 files and directories
copying source files to a temporary directoryTraceback (most recent call last):
  File "/home/mg/.venv/bin/check-manifest", line 11, in <module>
    sys.exit(main())
  File "/home/mg/.venv/local/lib/python2.7/site-packages/check_manifest.py", line 685, in main
    update=args.update, python=args.python):
  File "/home/mg/.venv/local/lib/python2.7/site-packages/check_manifest.py", line 598, in check_manifest
    copy_files(source_files, tempsourcedir)
  File "/home/mg/.venv/local/lib/python2.7/site-packages/check_manifest.py", line 184, in copy_files
    shutil.copy2(filename, destfile)
  File "/usr/lib/python2.7/shutil.py", line 130, in copy2
    copyfile(src, dst)
  File "/usr/lib/python2.7/shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: u'MANIFEST.in'

`svn st -v` parsing is unreliable

Reported by @mauritsvanrees in #17. With his long svn username the output of svn st -v is

                 1        1 mauritsvanrees .
                 1        1 mauritsvanrees b.txt
                 1        1 mauritsvanrees c
                 1        1 mauritsvanrees c/d.txt

and sorted(line[41:] for line in output.splitlines()) gives you [u's .', u's b.txt', u's c', u's c/d.txt'] instead of [u'.', u'b.txt', u'c', u'c/d.txt'].

Clean sdist apparently missing egg-info?

This issue started on a different ticket.

check-manifest 0.21 fails on lvh/jorji:

listing source files under version control: 12 files and directories
building an sdist: jorji-0.1.2.4.g7fded09.tar.gz: 16 files and directories
copying source files to a temporary directory
building a clean sdist
['/usr/local/opt/python/bin/python2.7', 'setup.py', 'sdist', '-d', '/var/folders/dd/lh02zlnn1hg7cgs85w8qq6c00000gn/T/check-manifest-ER_Wa7-sdist'] failed (status 1):
error in setup command: Error parsing /private/var/folders/dd/lh02zlnn1hg7cgs85w8qq6c00000gn/T/check-manifest-sscwne-sources/setup.cfg: Exception: Versioning for this project requires either an sdist tarball, or access to an upstream git repository. Are you sure that git is installed?

This is quite strange, because manually creating an sdist, unpacking it, and then creating and sdist within the unpacked sdist works totally fine:

[jorji] python setup.py sdist && mv dist/jorji-0.1.2.4.g7fded09.tar.gz ~/tmp && cd ~/tmp && tar -xvpzf jorji-0.1.2.4.g7fded09.tar.gz && cd jorji-0.1.2.4.g7fded09             10:03:46  ☁  master ☂ 𝝙 ⚡ ✭
running sdist
[pbr] Writing ChangeLog
[pbr] Generating AUTHORS
running egg_info
writing requirements to jorji.egg-info/requires.txt
writing jorji.egg-info/PKG-INFO
writing top-level names to jorji.egg-info/top_level.txt
writing dependency_links to jorji.egg-info/dependency_links.txt
[pbr] Processing SOURCES.txt
[pbr] In git context, generating filelist from git
warning: no previously-included files found matching '.gitreview'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
reading manifest template 'MANIFEST.in'
warning: no files found matching 'README.md'
writing manifest file 'jorji.egg-info/SOURCES.txt'
running check
warning: check: missing required meta-data: url
creating jorji-0.1.2.4.g7fded09
creating jorji-0.1.2.4.g7fded09/jorji
creating jorji-0.1.2.4.g7fded09/jorji.egg-info
creating jorji-0.1.2.4.g7fded09/jorji/test
making hard links in jorji-0.1.2.4.g7fded09...
hard linking .coveragerc -> jorji-0.1.2.4.g7fded09
hard linking .travis.yml -> jorji-0.1.2.4.g7fded09
hard linking AUTHORS -> jorji-0.1.2.4.g7fded09
hard linking CONTRIBUTING.rst -> jorji-0.1.2.4.g7fded09
hard linking ChangeLog -> jorji-0.1.2.4.g7fded09
hard linking LICENSE -> jorji-0.1.2.4.g7fded09
hard linking MANIFEST.in -> jorji-0.1.2.4.g7fded09
hard linking README.rst -> jorji-0.1.2.4.g7fded09
hard linking requirements.txt -> jorji-0.1.2.4.g7fded09
hard linking setup.cfg -> jorji-0.1.2.4.g7fded09
hard linking setup.py -> jorji-0.1.2.4.g7fded09
hard linking tox.ini -> jorji-0.1.2.4.g7fded09
hard linking jorji/__init__.py -> jorji-0.1.2.4.g7fded09/jorji
hard linking jorji/_keys.py -> jorji-0.1.2.4.g7fded09/jorji
hard linking jorji/certificate.py -> jorji-0.1.2.4.g7fded09/jorji
hard linking jorji/specifications.py -> jorji-0.1.2.4.g7fded09/jorji
hard linking jorji.egg-info/PKG-INFO -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/SOURCES.txt -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/dependency_links.txt -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/not-zip-safe -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/requires.txt -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/top_level.txt -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji/test/__init__.py -> jorji-0.1.2.4.g7fded09/jorji/test
hard linking jorji/test/test_specifications.py -> jorji-0.1.2.4.g7fded09/jorji/test
copying setup.cfg -> jorji-0.1.2.4.g7fded09
Writing jorji-0.1.2.4.g7fded09/setup.cfg
Creating tar archive
removing 'jorji-0.1.2.4.g7fded09' (and everything under it)
x jorji-0.1.2.4.g7fded09/
x jorji-0.1.2.4.g7fded09/.coveragerc
x jorji-0.1.2.4.g7fded09/.travis.yml
x jorji-0.1.2.4.g7fded09/AUTHORS
x jorji-0.1.2.4.g7fded09/ChangeLog
x jorji-0.1.2.4.g7fded09/CONTRIBUTING.rst
x jorji-0.1.2.4.g7fded09/jorji/
x jorji-0.1.2.4.g7fded09/jorji/__init__.py
x jorji-0.1.2.4.g7fded09/jorji/_keys.py
x jorji-0.1.2.4.g7fded09/jorji/certificate.py
x jorji-0.1.2.4.g7fded09/jorji/specifications.py
x jorji-0.1.2.4.g7fded09/jorji/test/
x jorji-0.1.2.4.g7fded09/jorji/test/__init__.py
x jorji-0.1.2.4.g7fded09/jorji/test/test_specifications.py
x jorji-0.1.2.4.g7fded09/jorji.egg-info/
x jorji-0.1.2.4.g7fded09/jorji.egg-info/dependency_links.txt
x jorji-0.1.2.4.g7fded09/jorji.egg-info/not-zip-safe
x jorji-0.1.2.4.g7fded09/jorji.egg-info/PKG-INFO
x jorji-0.1.2.4.g7fded09/jorji.egg-info/requires.txt
x jorji-0.1.2.4.g7fded09/jorji.egg-info/SOURCES.txt
x jorji-0.1.2.4.g7fded09/jorji.egg-info/top_level.txt
x jorji-0.1.2.4.g7fded09/LICENSE
x jorji-0.1.2.4.g7fded09/MANIFEST.in
x jorji-0.1.2.4.g7fded09/PKG-INFO
x jorji-0.1.2.4.g7fded09/README.rst
x jorji-0.1.2.4.g7fded09/requirements.txt
x jorji-0.1.2.4.g7fded09/setup.cfg
x jorji-0.1.2.4.g7fded09/setup.py
x jorji-0.1.2.4.g7fded09/tox.ini

This isn't in a git repository anymore:

[jorji-0.1.2.4.g7fded09] git status                                                                                                                                                               10:03:54
fatal: Not a git repository (or any of the parent directories): .git

Then build a new sdist:

[jorji-0.1.2.4.g7fded09] python setup.py sdist                                                                                                                                                    10:04:01
running sdist
[pbr] Writing ChangeLog
[pbr] Generating AUTHORS
running egg_info
writing requirements to jorji.egg-info/requires.txt
writing jorji.egg-info/PKG-INFO
writing top-level names to jorji.egg-info/top_level.txt
writing dependency_links to jorji.egg-info/dependency_links.txt
[pbr] Processing SOURCES.txt
warning: no previously-included files found matching '.gitignore'
warning: no previously-included files found matching '.gitreview'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
reading manifest template 'MANIFEST.in'
warning: no files found matching 'README.md'
writing manifest file 'jorji.egg-info/SOURCES.txt'
running check
warning: check: missing required meta-data: url

creating jorji-0.1.2.4.g7fded09
creating jorji-0.1.2.4.g7fded09/jorji
creating jorji-0.1.2.4.g7fded09/jorji.egg-info
creating jorji-0.1.2.4.g7fded09/jorji/test
making hard links in jorji-0.1.2.4.g7fded09...
hard linking AUTHORS -> jorji-0.1.2.4.g7fded09
hard linking ChangeLog -> jorji-0.1.2.4.g7fded09
hard linking LICENSE -> jorji-0.1.2.4.g7fded09
hard linking MANIFEST.in -> jorji-0.1.2.4.g7fded09
hard linking README.rst -> jorji-0.1.2.4.g7fded09
hard linking requirements.txt -> jorji-0.1.2.4.g7fded09
hard linking setup.cfg -> jorji-0.1.2.4.g7fded09
hard linking setup.py -> jorji-0.1.2.4.g7fded09
hard linking jorji/__init__.py -> jorji-0.1.2.4.g7fded09/jorji
hard linking jorji/_keys.py -> jorji-0.1.2.4.g7fded09/jorji
hard linking jorji/certificate.py -> jorji-0.1.2.4.g7fded09/jorji
hard linking jorji/specifications.py -> jorji-0.1.2.4.g7fded09/jorji
hard linking jorji.egg-info/PKG-INFO -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/SOURCES.txt -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/dependency_links.txt -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/not-zip-safe -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/requires.txt -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji.egg-info/top_level.txt -> jorji-0.1.2.4.g7fded09/jorji.egg-info
hard linking jorji/test/__init__.py -> jorji-0.1.2.4.g7fded09/jorji/test
hard linking jorji/test/test_specifications.py -> jorji-0.1.2.4.g7fded09/jorji/test
copying setup.cfg -> jorji-0.1.2.4.g7fded09
Writing jorji-0.1.2.4.g7fded09/setup.cfg
creating dist
Creating tar archive
removing 'jorji-0.1.2.4.g7fded09' (and everything under it)

This is most likely related to jorji using pbr. pbr is used by most openstack projects, so hopefully we can get it working for those and put check-manifest in all the builds :)

It grabs the version from version control (something akin to git describe) when creating the original sdist, and grabs it from egg-info when installing from an sdist. I have no idea why it fails when check-manifest does it.

can't open file 'setup.py': [Errno 2] No such file or directory

Hi! Some strange error...

% ls
LICENSE         README.md       docs2confluence examples        setup.cfg       setup.py
% check-manifest -v -c
listing source files under version control: 2 files and directories
building an sdist: docs2confluence-0.1.0.tar.gz: 2 files and directories
copying source files to a temporary directory
building a clean sdist
['/Users/nikitagrishko/.virtualenvs/docs2confluence/bin/python', 'setup.py', 'sdist', '-d', '/var/folders/mb/sg37z54n7b5_yw2ybh32q2hm0000gn/T/check-manifest-iAIILf-sdist'] failed (status 2):
/Users/nikitagrishko/.virtualenvs/docs2confluence/bin/python: can't open file 'setup.py': [Errno 2] No such file or directory

Any ideas?

checking via zest-releaser fails if setuptools is provided by a buildout

my use-case, I have a "tools"-buildout that installs zest.releaser, fabric, and check-manifest,...
this buildout is bootstrapped from a clean python that deliberatetly has no setuptools installed,
(so it can never conflict with a buildout-provided setuptools).

the check_manifest takes sys.executable as default python
see https://github.com/mgedmin/check-manifest/blob/master/check_manifest.py#L572
while this is correct, the executable looses its sys.path,

A similar issue was fixed in zest.releaser, see
zestsoftware/zest.releaser#57
https://github.com/zestsoftware/zest.releaser/pull/58/files

as far as I see, the same solution ban be re-used.

"*.pyc" files reported

I don't think I've seen this in any other repositories before. Is this expected?

$ git clone [email protected]:myint/scspell.git
$ cd scspell/
$ check-manifest
lists of files in version control and sdist match
$ ./scspell.py
$ check-manifest
lists of files in version control and sdist do not match!
missing from VCS:
  scspell/__pycache__
  scspell/__pycache__/__init__.cpython-34.pyc
  scspell/__pycache__/_corpus.cpython-34.pyc
  scspell/__pycache__/_portable.cpython-34.pyc
  scspell/__pycache__/_util.cpython-34.pyc

Thanks

Windows issue: The directory name is invalid when using msys2 (e.g. Git Bash)

I get something like this on Appveyor:

C:\projects\python-hunter>CALL C:\Python27\Scripts\tox   || EXIT 1 
GLOB sdist-make: C:\projects\python-hunter\setup.py 
check create: C:\projects\python-hunter\.tox\check 
check installdeps: docutils, check-manifest, flake8, readme, pygments 
check installed: bleach==1.4.2,check-manifest==0.30,docutils==0.12,flake8==2.5.1,html5lib==0.9999999,mccabe==0.3.1,pep8==1.5.7,pyflakes==1.0.0,Pygments==2.0.2,readme==0.6.0,six==1.10.0,wheel==0.24.0 
check runtests: PYTHONHASHSEED='632'
check runtests: commands[0] | python setup.py check --strict --metadata --restructuredtext
running check
check runtests: commands[1] | check-manifest C:\projects\python-hunter 
could not run ['git', 'ls-files', '-z']: [WinError 267] The directory name is invalid
ERROR: InvocationError: 'C:\\projects\\python-hunter\\.tox\\check\\Scripts\\check-manifest.EXE C:\\projects\\python-hunter' 
___________________________________ summary ___________________________________
ERROR:   check: commands failed
Command exited with code 1

https://ci.appveyor.com/project/ionelmc/python-hunter/build/master-66/job/fd169ykntce3ugva#L81

0.26 is broken on Windows (fails to initialize the random number generator)

When check-manifest 0.26 tries to run python setup.py sdist in a subprocess, it gets this error on Python 2:

WindowsError: [Error -2146893795] Provider DLL failed to initialize correctly

and the equivalent error on Python 3:

Fatal Python error: Failed to initialize Windows random API (CryptoGen)

This is caused by executing the Python subprocess with an empty(ish) environment (commit 396fda8). See http://bugs.python.org/issue20614, https://code.djangoproject.com/ticket/24160 for details.

My Jenkins caught this.

VCS not found message could be friendlier

It would be nice if the a friendlier message was printed when the source code control program is not available, e.g. bzr not found instead of:

[py32] B:\apps\leo
> check-manifest .
listing source files under version controlTraceback (most recent call last):
  File "C:\Python32\Scripts\check-manifest-script.py", line 9, in <module>
    load_entry_point('check-manifest==0.17', 'console_scripts', 'check-manifest')()
  File "C:\Python32\lib\site-packages\check_manifest.py", line 639, in main
    update=args.update, python=args.python):
  File "C:\Python32\lib\site-packages\check_manifest.py", line 554, in check_manifest
    all_source_files = sorted(get_vcs_files())
  File "C:\Python32\lib\site-packages\check_manifest.py", line 311, in get_vcs_files
    return normalize_names(vcs.get_versioned_files())
  File "C:\Python32\lib\site-packages\check_manifest.py", line 279, in get_versioned_files
    output = run(['bzr', 'ls', '-VR'])
  File "C:\Python32\lib\site-packages\check_manifest.py", line 137, in run
    stderr=subprocess.STDOUT)
  File "C:\Python32\lib\subprocess.py", line 741, in __init__
    restore_signals, start_new_session)
  File "C:\Python32\lib\subprocess.py", line 960, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

Relax the *.mo check

Some Zope packages have .mo files in their test directories. Those are fine to include in the sdist.

Currently check-manifest tells you they shouldn't be in the VCS (which is wrong, for that particular use case), and it doesn't warn you if they're not included in the sdist (which is also wrong).

Gets confused by files with non-ASCII characters on MacOS

I am getting this back from check-manifest:

$ bin/check-manifest 
lists of files in version control and sdist do not match!
missing from VCS:
  src/ploneintranet/suite/tests/acceptance/uploads/bärtige_flößer.odt
missing from sdist:
  src/ploneintranet/suite/tests/acceptance/uploads/bärtige_flößer.odt
suggested MANIFEST.in rules:
  recursive-include src *.odt

(The file is just a test file without any interesting contents.)

The end result is that the file actually does get added to the source distribution, which is good.

Strangely, I get the above on my Mac, but someone else tried it on Linux and there it went along just fine without any complaints.

This is in ploneintranet. If you want to try it with that code yourself, please use the branch from this pull request that improves the manifest: ploneintranet/ploneintranet#230

Python3 Support not complete?

I like to use check-manifest for Jasy (http://github.com/sebastian-software/jasy) which actually depending on Python3. During executing "check-manifest" I get the following output suggesting that "check-manifest" is not using the same Python it was installed with and/or the package requires.

I installed check-manifest using this command:
$ pip3 install check-manifest

$ python3 --version
Python 3.3.2

Executing check-manifest results into this output:
$ check-manifest
listing source files under version control: 777 files and directories
copying source files to a temporary directory
building an sdist
['python', 'setup.py', 'sdist', '-d', '/var/folders/3v/n2qhwf_j4hlb83vtz6857ttr0000gn/T/check-manifest-ohx9k0-sdist'] failed (status 1):
Jasy requires Python 3.2 or higher

Complains about auto-generated *.mo files from zest.pocompile or Plone

Useful package, thanks.

When I try it with a git clone of https://github.com/collective/Products.Poi I get some complaints:

$ check-manifest 
listing source files under version control: 184 files and directories
building an sdist: Products.Poi-2.2.1.dev0.tar.gz: 214 files and directories
files in version control do not match the sdist!
missing from VCS:
  .installed.cfg
  .mr.developer.cfg
  Products/Poi/locales/ca/LC_MESSAGES/Poi.mo
  Products/Poi/locales/ca/LC_MESSAGES/plone.mo
  Products/Poi/locales/cs/LC_MESSAGES/Poi.mo
  Products/Poi/locales/cs/LC_MESSAGES/plone.mo
  ...(etc)...

The .installed.cfg and .mr.developer.cfg files are in the .gitignore file. Ah, I should change my MANIFEST.in to not include them. I had the expectation that include * would not include dot files, but that is wrong. Also, that is beside the point for this issue. :-)

But I have zest.pocompile installed, which compiles .po files into .mo files during the release. Plone also generates these files on startup if you have configured your buildout.cfg correctly. So these .mo files are usually there and they should be in the release, but they should not be in VCS. So check-manifest should not complain about them.

Can anything be done about that? Possibly check-manifest could look at the missing files and ignore any that are ignored by the VCS. Note that in my case *.mo is not in the .gitignore of this package, but in the general .gitignore in my home directory. I do not mind adding it to the .gitignore of the package, but currently that does not help.

Honour gitignore files

The check-manifest command doesn't follow the correct gitignore behaviour. It only reads patterns from the first gitignore file it finds, the patterns in my global gitignore file are not honoured.

The gitignore docs state:

Each line in a gitignore file specifies a pattern. Git normally checks gitignore patterns from multiple sources, with the following order of precedence, from highest to lowest (within one level of precedence, the last matching pattern decides the outcome):

  • Patterns read from the command line for those commands that support them.
  • Patterns read from a .gitignore file in the same directory as the path, or in any parent directory, with patterns in the higher level files (up to the toplevel of the work tree) being overridden by those in lower level files down to the directory containing the file. These patterns match relative to the location of the .gitignore file. A project normally includes such .gitignore files in its repository, containing patterns for files generated as part of the project build.
  • Patterns read from $GIT_DIR/info/exclude.
  • Patterns read from the file specified by the configuration variable core.excludesFile.

Which file to place a pattern in depends on how the pattern is meant to be used.

  • Patterns which should be version-controlled and distributed to other repositories via clone (i.e., files that all developers will want to ignore) should go into a .gitignore file.
  • Patterns which are specific to a particular repository but which do not need to be shared with other related repositories (e.g., auxiliary files that live inside the repository but are specific to one user’s workflow) should go into the $GIT_DIR/info/exclude file.
  • Patterns which a user wants Git to ignore in all situations (e.g., backup or temporary files generated by the user’s editor of choice) generally go into a file specified by core.excludesFile in the user’s ~/.gitconfig. Its default value is $XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/ignore is used instead.

Very slow git submodule checking in a Jenkins environment on Windows

When I added git submodule checking, my Jenkins job run time went from 10 minutes up to 1 hour and 45 minutes. Ouch.

It turns out that every invocation of git submodule ... takes 50 seconds -- but only inside Jenkins. I cannot reproduce this from a command shell on the same machine.

I suspect a different %PATH% setting might be the cause. Perhaps Windows systems take a long time not finding executables on a long %PATH%?

(Meanwhile, I implemented a workaround, but that still leaves me a job that takes 30 minutes instead of the old 10 minutes.)

Stale *.egg-info/SOURCES.txt can hide problems with MANIFEST.in

Well, check-manifest did take a lot of pain out of making MANIFEST.in files. Thanks!

However, one pain is still there. I've noticed that when changing MANIFEST.in it doesn't make any difference unless I make sure the .egg-info is updated. I assume it's the SOURCES.txt that is the culprit.

I'm not sure where the bug is that causes that, but check-release doesn't change it. I'd suggest that check-release verifies that if there is a .egg-info/SOURCES.txt is also runs setup.py egg_info to rebuild it , at least if it's timestamp is before the timestamp of MANIFEST.in.

wording of "files in version control do not match the sdist" message

Hi, I think the following error message can be improved, "files in version control do not match the sdist!"

This error makes it look like check-manifest will be listing what files in version control are different from their versions in the sdist (e.g. if the files have uncommitted changes when running check-manifest). But what it is really saying is that the list of files in version control does not match the list in sdist (i.e. the file names don't match, and not necessarily the contents).

check-manifest --python .tox/py26/bin/python fails with ENOFILE

  1. tox -e py26 --notest
  2. check-manifest -p .tox/py26/bin/python

See it fail with

could not run ['.tox/py26/bin/python', 'setup.py', 'sdist', '-d', '/tmp/check-manifest-DO2eJL-sdist']: [Errno 2] No such file or directory

because it does an os.chdir() elsewhere before running the command.

Windows "python.exe stopped working" error

When running check-manifest I'm getting the error "python.exe has stopped working. Windows is checking for a solution to the problem" (http://i.imgur.com/DdlZ2p5.png). There isn't an error in the shell window.

Host is Win7x64,
32bit python v3.2
check-manifest is v0.17
project is https://code.launchpad.net/leo-editor, local working copy at rev6315

The command shell log:

[py32] B:\apps\leo> check-manifest .
listing source files under version control: 2058 files and directories
copying source files to a temporary directory
building an sdist: leo-4.11.1.zip: 1987 files and directories

The error pops up at the "copying source files" stage.

Wrong result when MANIFEST.in is not added to git repo

I just ran 0.10 on a repository where there were no MANIFEST.in.

check-manifest rightly complained for missing files in sdist.

I edited new MANIFEST.in and ran check-manifest again. It kept complaining...

until I explicitely git add the new file.

The most surprising is that if I run python sdist without MANIFEST.in added, the tgz file contains the files according to the manifest.

Reading the code quickly did not help me to understand why sdist built by check-manifest is different.

check-manifest -p pythonX fails when check-manifest is installed on pythonY, and setup.py spawns additional Python subprocesses

This failure on https://github.com/PyWavelets/pywt happens for a quite common way of invoking Cython. Normal python setup.py sdist -d sometmpdir works fine.

$ check-manifest -v
listing source files under version control: 140 files and directories
building an sdist
['/usr/bin/python', 'setup.py', 'sdist', '-d', '/tmp/check-manifest-19mzk0-sdist'] failed (status 1):
expanding template: /home/rgommers/Code/tmp/pywt/util/../pywt/src/wavelets.c.src -> /home/rgommers/Code/tmp/pywt/util/../pywt/src/wavelets.c
'import site' failed; use -v for traceback
Traceback (most recent call last):
  File "/home/rgommers/.local/bin/cython", line 7, in <module>
    from Cython.Compiler.Main import main
  File "/home/rgommers/.local/lib/python2.7/site-packages/Cython/Compiler/Main.py", line 7, in <module>
    import os
  File "/usr/lib/python2.7/os.py", line 398, in <module>
    import UserDict
  File "/usr/lib/python2.7/UserDict.py", line 84, in <module>
    _abcoll.MutableMapping.register(IterableUserDict)
  File "/usr/lib/python2.7/abc.py", line 109, in register
    if issubclass(subclass, cls):
  File "/usr/lib/python2.7/abc.py", line 184, in __subclasscheck__
    cls._abc_negative_cache.add(subclass)
  File "/usr/lib/python2.7/_weakrefset.py", line 86, in add
    self.data.add(ref(item, self._remove))
TypeError: cannot create weak reference to 'classobj' object
[19624 refs]
Processing pywt/src/_pywt.pyx
Traceback (most recent call last):
  File "/home/rgommers/Code/tmp/pywt/util/cythonize.py", line 188, in <module>
    main()
  File "/home/rgommers/Code/tmp/pywt/util/cythonize.py", line 184, in main
    find_process_files(root_dir)
  File "/home/rgommers/Code/tmp/pywt/util/cythonize.py", line 176, in find_process_files
    process(cur_dir, fromfile, tofile, function, hash_db)
  File "/home/rgommers/Code/tmp/pywt/util/cythonize.py", line 153, in process
    processor_function(fromfile, tofile)
  File "/home/rgommers/Code/tmp/pywt/util/cythonize.py", line 71, in process_pyx
    raise Exception('Cython failed')
Exception: Cython failed
Expanding templates
Cythonizing sources
Traceback (most recent call last):
  File "setup.py", line 221, in <module>
    setup_package()
  File "setup.py", line 213, in setup_package
    generate_cython()
  File "setup.py", line 122, in generate_cython
    raise RuntimeError("Running cythonize failed!")
RuntimeError: Running cythonize failed!

No error if MANIFEST.in not present

I'm a new user to this project. When running check-manifest with no arguments in a repo with no MANIFEST.in, I got no error that the manifest file was missing.

Since check-manifest's usage string says, "Check a Python MANIFEST.in file for completeness," I would expect the command to warn me that no MANIFEST.in is present.

Btw, thanks for a cool project!

Don't warn about .travis.yml

While it can be useful to ship a .travis.yml in the sdist, it's not essential, and I think check-manifest shouldn't warn about its absence.

Treat it like a .gitignore.

Fails on subversion project with externals

In my subversion project that uses externals I get an error message:

  File "/usr/local/gltools/python/Python-2.7/lib/python2.7/site-packages/check_manifest.py", line 330, in get_vcs_files
    return normalize_names(vcs.get_versioned_files())
  File "/usr/local/gltools/python/Python-2.7/lib/python2.7/site-packages/check_manifest.py", line 310, in get_versioned_files
    for line in output.splitlines()[1:])
  File "/usr/local/gltools/python/Python-2.7/lib/python2.7/site-packages/check_manifest.py", line 310, in <genexpr>
    for line in output.splitlines()[1:])
IndexError: list index out of range

Changing line 310 to

                      for line in output.splitlines()[1:] if line.strip())

fixes the problem for me.

Kind regards
Berthold Höllmann

DistutilsFileError: The setup.cfg file /private/var/folders/.../setup.cfg does not exist

Hi! Thanks for a great project :-) Ran into some issues with my new project jorji when trying to use pbr for the first time; not sure where the bug is.

Using the latest check-manifest.

[jorji] check-manifest --version                                               15:25:12  ☁  master ☀
check-manifest version 0.20

Running check-manifest fails:

[jorji] check-manifest                                                         15:25:19  ☁  master ☀
listing source files under version control: 11 files and directories
building an sdist: jorji-0.1.1.1.g24f2a72.tar.gz: 11 files and directories
copying source files to a temporary directory
building a clean sdist
['/usr/local/opt/python/bin/python2.7', 'setup.py', 'sdist', '-d', '/var/folders/dd/lh02zlnn1hg7cgs85w8qq6c00000gn/T/check-manifest-_4wA41-sdist'] failed (status 1):
Traceback (most recent call last):
  File "setup.py", line 5, in <module>
    pbr=True)
  File "/usr/local/Cellar/python/2.7.7_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 111, in setup
    _setup_distribution = dist = klass(attrs)
  File "build/bdist.macosx-10.9-x86_64/egg/setuptools/dist.py", line 265, in __init__
  File "/usr/local/Cellar/python/2.7.7_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 287, in __init__
    self.finalize_options()
  File "build/bdist.macosx-10.9-x86_64/egg/setuptools/dist.py", line 299, in finalize_options
  File "/usr/local/lib/python2.7/site-packages/pbr/core.py", line 87, in pbr
    'The setup.cfg file %s does not exist.' % path)
distutils.errors.DistutilsFileError: The setup.cfg file /private/var/folders/dd/lh02zlnn1hg7cgs85w8qq6c00000gn/T/check-manifest-T2zfFY-sources/setup.cfg does not exist.

That directory does in fact not exist, but I can't tell because it didn't at that callsite, or because check-manifest just cleaned it up.

Building a regular sdist works fine:

[jorji] python setup.py sdist                                                15:25:24  ☁  master ☂ ⚡
running sdist
[pbr] Writing ChangeLog
[pbr] Generating AUTHORS
running egg_info
writing requirements to jorji.egg-info/requires.txt
writing jorji.egg-info/PKG-INFO
writing top-level names to jorji.egg-info/top_level.txt
writing dependency_links to jorji.egg-info/dependency_links.txt
[pbr] Processing SOURCES.txt
[pbr] In git context, generating filelist from git
warning: no previously-included files found matching '.gitreview'
warning: no previously-included files matching '*.pyc' found anywhere in distribution
reading manifest template 'MANIFEST.in'
warning: no files found matching 'README.md'
writing manifest file 'jorji.egg-info/SOURCES.txt'
running check
warning: check: missing required meta-data: url

creating jorji-0.1.1.1.g24f2a72
creating jorji-0.1.1.1.g24f2a72/jorji
creating jorji-0.1.1.1.g24f2a72/jorji.egg-info
creating jorji-0.1.1.1.g24f2a72/jorji/test
making hard links in jorji-0.1.1.1.g24f2a72...
hard linking .coveragerc -> jorji-0.1.1.1.g24f2a72
hard linking .travis.yml -> jorji-0.1.1.1.g24f2a72
hard linking AUTHORS -> jorji-0.1.1.1.g24f2a72
hard linking ChangeLog -> jorji-0.1.1.1.g24f2a72
hard linking LICENSE -> jorji-0.1.1.1.g24f2a72
hard linking MANIFEST.in -> jorji-0.1.1.1.g24f2a72
hard linking README.rst -> jorji-0.1.1.1.g24f2a72
hard linking requirements.txt -> jorji-0.1.1.1.g24f2a72
hard linking setup.cfg -> jorji-0.1.1.1.g24f2a72
hard linking setup.py -> jorji-0.1.1.1.g24f2a72
hard linking tox.ini -> jorji-0.1.1.1.g24f2a72
hard linking jorji/__init__.py -> jorji-0.1.1.1.g24f2a72/jorji
hard linking jorji.egg-info/PKG-INFO -> jorji-0.1.1.1.g24f2a72/jorji.egg-info
hard linking jorji.egg-info/SOURCES.txt -> jorji-0.1.1.1.g24f2a72/jorji.egg-info
hard linking jorji.egg-info/dependency_links.txt -> jorji-0.1.1.1.g24f2a72/jorji.egg-info
hard linking jorji.egg-info/not-zip-safe -> jorji-0.1.1.1.g24f2a72/jorji.egg-info
hard linking jorji.egg-info/requires.txt -> jorji-0.1.1.1.g24f2a72/jorji.egg-info
hard linking jorji.egg-info/top_level.txt -> jorji-0.1.1.1.g24f2a72/jorji.egg-info
hard linking jorji/test/__init__.py -> jorji-0.1.1.1.g24f2a72/jorji/test
copying setup.cfg -> jorji-0.1.1.1.g24f2a72
Writing jorji-0.1.1.1.g24f2a72/setup.cfg
Creating tar archive
removing 'jorji-0.1.1.1.g24f2a72' (and everything under it)

Passing an explicit path to the current directory doesn't help:

[jorji] check-manifest .                                                     15:26:21  ☁  master ☂ ⚡
listing source files under version control: 11 files and directories
building an sdist: jorji-0.1.1.1.g24f2a72.tar.gz: 11 files and directories
copying source files to a temporary directory
building a clean sdist
['/usr/local/opt/python/bin/python2.7', 'setup.py', 'sdist', '-d', '/var/folders/dd/lh02zlnn1hg7cgs85w8qq6c00000gn/T/check-manifest-PthpWq-sdist'] failed (status 1):
Traceback (most recent call last):
  File "setup.py", line 5, in <module>
    pbr=True)
  File "/usr/local/Cellar/python/2.7.7_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py", line 111, in setup
    _setup_distribution = dist = klass(attrs)
  File "build/bdist.macosx-10.9-x86_64/egg/setuptools/dist.py", line 265, in __init__
  File "/usr/local/Cellar/python/2.7.7_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py", line 287, in __init__
    self.finalize_options()
  File "build/bdist.macosx-10.9-x86_64/egg/setuptools/dist.py", line 299, in finalize_options
  File "/usr/local/lib/python2.7/site-packages/pbr/core.py", line 87, in pbr
    'The setup.cfg file %s does not exist.' % path)
distutils.errors.DistutilsFileError: The setup.cfg file /private/var/folders/dd/lh02zlnn1hg7cgs85w8qq6c00000gn/T/check-manifest-hBV9yg-sources/setup.cfg does not exist.

I placed setup.cfg in MANIFEST.in, no improvement; I have manually checked that it is in the tarballs produced by python setup.py sdist (it is).

Versions:
CPython: Python 2.7.7 (default, Jun 3 2014, 22:37:14) [GCC 4.2.1 Compatible Apple LLVM 5.1 (clang-503.0.40)] on darwin
PyPy: Python 2.7.6 (32f35069a16d, Jun 06 2014, 20:12:47) [PyPy 2.3.1 with GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.2.79)]
pip 1.5.6
setuptools 4.0.1

Any ideas? Thanks in advance!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.