Merge "Exceptions"
authorLuke Hinds <lhinds@redhat.com>
Thu, 13 Jul 2017 08:54:05 +0000 (08:54 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Thu, 13 Jul 2017 08:54:05 +0000 (08:54 +0000)
MANIFEST.in [new file with mode: 0644]
anteater/src/patch_scan.py
anteater/src/project_scan.py
exceptions/octopus.yaml
requirements.txt
setup.py
tasks.py

diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644 (file)
index 0000000..e043fed
--- /dev/null
@@ -0,0 +1,4 @@
+include LICENSE README.md
+include anteater.conf
+include master_list.yaml
+exclude exceptions/*
index 0a32f3e..1deb68f 100644 (file)
@@ -147,9 +147,9 @@ def licence_check(project, licence_ext,
         # Note: Hardcoded use of 'copyright' & 'spdx' is the result
         # of a decision made at 2017 plugfest to limit searches to
         # just these two strings.
-        if re.search("copyright", content, re.IGNORECASE):
-            logger.info('Contains needed Licence string: %s', patch_file)
-        elif re.search("spdx", content, re.IGNORECASE):
+        patterns = ['copyright', 'spdx',
+                    'http://creativecommons.org/licenses/by/4.0']
+        if any(i in content.lower() for i in patterns):
             logger.info('Contains needed Licence string: %s', patch_file)
         else:
             logger.error('Licence header missing in file: %s', patch_file)
index f33ccca..5ac8b10 100644 (file)
@@ -159,9 +159,9 @@ def licence_check(licence_ext, licence_ignore, project, project_dir):
                     # Note: Hardcoded use of 'copyright' & 'spdx' is the result
                     # of a decision made at 2017 plugfest to limit searches to
                     # just these two strings.
-                    if re.search("copyright", content, re.IGNORECASE):
-                        logger.info('Licence string present: %s', full_path)
-                    elif re.search("spdx", content, re.IGNORECASE):
+                    patterns = ['copyright', 'spdx',
+                                'http://creativecommons.org/licenses/by/4.0']
+                    if any(i in content.lower() for i in patterns):
                         logger.info('Licence string present: %s', full_path)
                     else:
                         logger.error('Licence header missing: %s', full_path)
index dde146d..66dd0bb 100644 (file)
@@ -6,7 +6,8 @@
 # of escaping YAML delimiters too (such as `:`) using double quotes "".
 
 binaries:
-  binary_ignore: [nullvalue]
+  dynamic-flow.png:
+    - d0d7dfc73e0fac09d920ebbdf8cd4e0ef623f15d6246ff20d7a6d12c9a48bf41
 file_audits:
   file_names: [nullvalue]
   file_contents:
index 7a52654..201b07f 100644 (file)
@@ -2,8 +2,10 @@ appdirs==1.4.3
 binaryornot==0.4.3
 chardet==3.0.2
 docopt==0.6.2
+invoke==0.18.0
 packaging==16.8
 pyaml==16.12.2
 pyparsing==2.2.0
 PyYAML==3.12
 six==1.10.0
+twine==1.9.1
index d392231..c791175 100755 (executable)
--- a/setup.py
+++ b/setup.py
@@ -7,6 +7,9 @@ from setuptools import setup, find_packages
 
 REQUIRES = [
     'docopt',
+    'six',
+    'binaryornot',
+    'PyYAML',
 ]
 
 
@@ -71,7 +74,6 @@ setup(
         'Programming Language :: Python :: Implementation :: PyPy'
     ],
     packages=find_packages(),
-    py_modules=["anteater"],
     entry_points={
         'console_scripts': [
             "anteater = anteater.main:main"
index 55ac340..30bef4c 100644 (file)
--- a/tasks.py
+++ b/tasks.py
@@ -11,47 +11,64 @@ build_dir = os.path.join(docs_dir, '_build')
 
 
 @task
-def test():
+def test(ctx):
     run('python setup.py test', pty=True)
 
 
 @task
-def clean():
-    run("rm -rf build")
-    run("rm -rf dist")
-    run("rm -rf anteater.egg-info")
-    clean_docs()
+def clean(ctx):
+    ctx.run("rm -rf build")
+    ctx.run("rm -rf dist")
+    ctx.run("rm -rf anteater.egg-info")
+    clean_docs(ctx)
     print("Cleaned up.")
 
 
 @task
-def clean_docs():
-    run("rm -rf %s" % build_dir)
+def clean_docs(ctx):
+    ctx.run("rm -rf %s" % build_dir)
 
 
 @task
-def browse_docs():
-    run("open %s" % os.path.join(build_dir, 'index.html'))
+def browse_docs(ctx):
+    ctx.run("open %s" % os.path.join(build_dir, 'index.html'))
 
 
 @task
-def build_docs(clean=False, browse=False):
+def build_docs(ctx, clean=False, browse=False):
     if clean:
         clean_docs()
-    run("sphinx-build %s %s" % (docs_dir, build_dir), pty=True)
+    ctx.run("sphinx-build %s %s" % (docs_dir, build_dir), pty=True)
     if browse:
         browse_docs()
 
 
 @task
-def readme(browse=False):
-    run('rst2html.py README.rst > README.html')
+def readme(ctx, browse=False):
+    ctx.run('rst2html.py README.rst > README.html')
 
 
 @task
-def publish(test=False):
-    """Publish to the cheeseshop."""
+def build(ctx):
+    """Build source distribution and wheels."""
+    ctx.run('python setup.py sdist bdist_wheel')
+
+
+@task
+def publish(ctx, test=False):
+    """Publish to the cheeseshop.
+
+    This command follows the Python packaging guidelines:
+    https://packaging.python.org/tutorials/distributing-packages
+
+    Information on configuration required for '--test' can be found
+    here: https://wiki.python.org/moin/TestPyPI
+
+    Before uploading please ensure you've signed the release using:
+
+      gpg --detach-sign -a dist/package-1.0.1.tar.gz
+    """
     if test:
-        run('python setup.py register -r test sdist upload -r test')
+        ctx.run('twine upload -r test dist/*')
     else:
-        run("python setup.py register sdist upload")
+        ctx.run("twine upload dist/*")