annotate setup.py @ 1145:e94737572542

serve: Fix an issue where false positive matches were rendered as the requested page. Now we try to render the page, but also try to detect for the most common "empty" pages.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 05 Jun 2018 22:08:51 -0700
parents 8af2ea1f5c34
children 0d699f04968c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
1 #!/usr/bin/env python
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4 import os
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 import os.path
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6 import sys
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
7 import time
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
8 import subprocess
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
9 from setuptools import setup, find_packages, Command
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
10 from setuptools.command.test import test
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
11
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
12
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
13 def read(fname):
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 with open(os.path.join(os.path.dirname(__file__), fname)) as fp:
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15 return fp.read()
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
16
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17
685
77cec2fa0e83 cm: Fix a packaging bug, update package metadata.
Ludovic Chabant <ludovic@chabant.com>
parents: 678
diff changeset
18 def readlines(fname):
737
8b3dfd91cbf6 cm: Fix `setup.py` script.
Ludovic Chabant <ludovic@chabant.com>
parents: 685
diff changeset
19 return [l.strip() for l in read(fname).strip().splitlines()]
685
77cec2fa0e83 cm: Fix a packaging bug, update package metadata.
Ludovic Chabant <ludovic@chabant.com>
parents: 678
diff changeset
20
77cec2fa0e83 cm: Fix a packaging bug, update package metadata.
Ludovic Chabant <ludovic@chabant.com>
parents: 678
diff changeset
21
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
22 def runcmd(cmd):
373
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
23 with subprocess.Popen(
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
24 cmd, stdout=subprocess.PIPE,
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
25 stderr=subprocess.PIPE) as p:
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 out, err = p.communicate()
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27 return out, err
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
28
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
29
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 class PyTest(test):
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31 def finalize_options(self):
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
32 super(PyTest, self).finalize_options()
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
33 self.test_args = ['tests']
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 self.test_suite = True
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
36 def run_tests(self):
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
37 import pytest
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
38 errno = pytest.main(self.test_args)
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
39 sys.exit(errno)
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
40
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
41
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
42 class GenerateVersionCommand(Command):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
43 description = 'generates a version file'
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
44 user_options = [
884
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
45 ('force=', 'f', 'force a specific version number')]
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
46
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
47 def initialize_options(self):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
48 self.force = None
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
49
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
50 def finalize_options(self):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
51 pass
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
52
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
53 def run(self):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
54 v = self.force or generate_version()
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
55 write_version(v)
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
56 print("Generated version %s" % v)
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
57 return 0
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
58
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
59
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
60 def generate_version():
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
61 """ Generate a version file from the source control information.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
62 (this is loosely based on what Mercurial does)"""
82
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
63 if os.path.isdir(os.path.join(os.path.dirname(__file__), '.hg')):
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
64 return generate_version_from_mercurial()
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
65 elif os.path.isdir(os.path.join(os.path.dirname(__file__), '.git')):
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
66 return generate_version_from_git()
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
67 else:
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
68 raise Exception("Can't generate version number: this is not a "
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
69 "Mercurial repository.")
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
70
179
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
71
82
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
72 def generate_version_from_mercurial():
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
73 try:
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
74 # Get the version we're currently on. Also see if we have local
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
75 # changes.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
76 cmd = ['hg', 'id', '-i']
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
77 hgid, err = runcmd(cmd)
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
78 hgid = hgid.decode('utf8').strip()
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
79 has_local_changes = hgid.endswith('+')
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
80 hgid = hgid.rstrip('+')
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
81
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
82 # Get the tags on the current version.
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
83 cmd = ['hg', 'log', '-r', '.', '--template', '{tags}\n']
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
84 tags, err = runcmd(cmd)
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
85 versions = [t for t in tags.decode('utf8').split() if t[0].isdigit()]
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
86
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
87 if versions:
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
88 # Use the tag found at the current revision.
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
89 version = versions[-1]
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
90 else:
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
91 # Use the latest tag, but add info about how many revisions
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
92 # there have been since then.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
93 cmd = ['hg', 'parents', '--template',
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
94 '{latesttag}+{latesttagdistance}']
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
95 version, err = runcmd(cmd)
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
96 tag, dist = version.decode('utf8').split('+')
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
97 if dist == '1':
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
98 # We're on the commit that created the tag in the first place.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
99 # Let's just do as if we were on the tag.
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
100 version = tag
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
101 else:
179
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
102 version = '%s+%s.%s' % (tag, dist, hgid)
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
104 if has_local_changes:
179
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
105 if '+' in version:
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
106 version += '.'
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
107 else:
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
108 version += '+'
acc718ab56da setup: Make version generation compatible with PEP440.
Ludovic Chabant <ludovic@chabant.com>
parents: 124
diff changeset
109 version += time.strftime('%Y%m%d')
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
110
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
111 return version
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
112 except OSError:
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
113 raise Exception("Can't generate version number: Mercurial isn't "
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
114 "installed, or in the PATH.")
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
115 except Exception as ex:
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
116 raise Exception("Can't generate version number: %s" % ex)
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
118
82
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
119 def generate_version_from_git():
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
120 try:
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
121 cmd = ['git', 'describe', '--tags', '--dirty=+']
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
122 version, err = runcmd(cmd)
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
123 version = version.decode('utf8').strip()
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
124 if version.endswith('+'):
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
125 version += time.strftime('%Y%m%d')
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
126 return version
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
127 except OSError:
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
128 raise Exception("Can't generate version number: Git isn't installed, "
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
129 "or in the PATH.")
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
130 except Exception as ex:
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
131 raise Exception("Can't generate version number: %s" % ex)
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
132
ae90caf26224 Support for installing from Git.
Ludovic Chabant <ludovic@chabant.com>
parents: 76
diff changeset
133
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
134 def write_version(version):
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
135 if not version:
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
136 raise Exception("No version to write!")
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
137
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
138 f = open("piecrust/__version__.py", "w")
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
139 f.write('# this file is autogenerated by setup.py\n')
69
cb1ed436642c Always use version generated by `setup.py`. Better version generation.
Ludovic Chabant <ludovic@chabant.com>
parents: 66
diff changeset
140 f.write('APP_VERSION = "%s"\n' % version)
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
141 f.close()
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
142
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
143
72
ecee3e8f35e5 Fix `setuptools` install.
Ludovic Chabant <ludovic@chabant.com>
parents: 69
diff changeset
144 try:
676
a04288f199a5 cm: Don't always generation the version when running `setuptools`.
Ludovic Chabant <ludovic@chabant.com>
parents: 588
diff changeset
145 from piecrust.__version__ import APP_VERSION
a04288f199a5 cm: Don't always generation the version when running `setuptools`.
Ludovic Chabant <ludovic@chabant.com>
parents: 588
diff changeset
146 version = APP_VERSION
a04288f199a5 cm: Don't always generation the version when running `setuptools`.
Ludovic Chabant <ludovic@chabant.com>
parents: 588
diff changeset
147 except ImportError:
678
551d06cc640c cm: Don't raise an exception when no version file exists.
Ludovic Chabant <ludovic@chabant.com>
parents: 676
diff changeset
148 print(
884
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
149 "WARNING: Can't get version from version file. "
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
150 "Will use version `0.0`.")
678
551d06cc640c cm: Don't raise an exception when no version file exists.
Ludovic Chabant <ludovic@chabant.com>
parents: 676
diff changeset
151 version = '0.0'
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
152
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
153
1039
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
154 install_requires = [
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
155 'colorama>=0.3.3',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
156 'compressinja>=0.0.2',
1114
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1063
diff changeset
157 'beautifulsoup4>=4.6.0',
1039
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
158 'Flask>=0.10.1',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
159 'Flask-IndieAuth>=0.0.3.2',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
160 'Flask-Login>=0.3.2',
1063
21834ab8fd9b cm: Bump Inukshuk to `0.1.2`, regenerate `requirements.txt`.
Ludovic Chabant <ludovic@chabant.com>
parents: 1062
diff changeset
161 'Inukshuk>=0.1.2',
1062
7f7f91275578 cm: Upgrade Jinja2 to `2.10`, remove `dev-requirements.txt`.
Ludovic Chabant <ludovic@chabant.com>
parents: 1061
diff changeset
162 'Jinja2>=2.10',
1039
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
163 'Markdown>=2.6.2',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
164 'MarkupSafe>=1.0',
1114
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1063
diff changeset
165 'mf2py>=1.0.5',
1039
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
166 'paramiko>=2.0.0',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
167 'Pillow>=4.3.0',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
168 'Pygments>=2.0.2',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
169 'pystache>=0.5.4',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
170 'python-dateutil>=2.4.2',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
171 'PyYAML>=3.11',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
172 'repoze.lru>=0.6',
1114
8af2ea1f5c34 tasks: Add new `tasks` command and infrastructure, with `mention` task.
Ludovic Chabant <ludovic@chabant.com>
parents: 1063
diff changeset
173 'requests>=2.18.0',
1039
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
174 'smartypants>=1.8.6',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
175 'strict-rfc3339>=0.5',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
176 'textile>=2.2.2',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
177 'Unidecode>=0.4.18',
1043
54eb8ad9e809 serve: Use `watchdog` for a more efficient monitoring of assets files.
Ludovic Chabant <ludovic@chabant.com>
parents: 1039
diff changeset
178 'watchdog>=0.8.3',
1039
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
179 'Werkzeug>=0.12.2'
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
180 ]
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
181 tests_require = [
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
182 'invoke>=0.21.0',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
183 'pytest>=2.8.7',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
184 'pytest-cov>=2.2.1',
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
185 'pytest-mock>=0.10.1'
3133ddc3cb73 cm: Separate `requirements` from what `setup.py` wants.
Ludovic Chabant <ludovic@chabant.com>
parents: 884
diff changeset
186 ]
373
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
187
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
188
9fb7c4921d75 setup: Keep the requirements in sync between `setuptools` and `pip`.
Ludovic Chabant <ludovic@chabant.com>
parents: 179
diff changeset
189 setup(
884
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
190 name="PieCrust",
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
191 version=version,
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
192 description="A powerful static website generator and lightweight CMS.",
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
193 long_description=read('README.rst') + '\n\n' + read('CHANGELOG.rst'),
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
194 author="Ludovic Chabant",
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
195 author_email="ludovic@chabant.com",
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
196 license="Apache License 2.0",
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
197 url="http://bolt80.com/piecrust",
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
198 keywords=' '.join([
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
199 'python',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
200 'website',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
201 'generator',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
202 'blog',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
203 'portfolio',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
204 'gallery',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
205 'cms'
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
206 ]),
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
207 packages=find_packages(exclude=['garcon', 'tests']),
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
208 include_package_data=True,
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
209 zip_safe=False,
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
210 install_requires=install_requires,
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
211 tests_require=tests_require,
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
212 cmdclass={
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
213 'test': PyTest,
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
214 'version': GenerateVersionCommand
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
215 },
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
216 classifiers=[
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
217 'Development Status :: 4 - Beta',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
218 'License :: OSI Approved :: Apache Software License',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
219 'Environment :: Console',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
220 'Intended Audience :: Developers',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
221 'Intended Audience :: System Administrators',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
222 'Natural Language :: English',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
223 'Operating System :: MacOS :: MacOS X',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
224 'Operating System :: POSIX :: Linux',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
225 'Operating System :: Microsoft :: Windows',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
226 'Programming Language :: Python :: 3 :: Only',
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
227 'Topic :: Internet :: WWW/HTTP :: Site Management'
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
228 ],
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
229 entry_points={'console_scripts': [
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
230 'chef = piecrust.main:main'
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
231 ]}
18b3e2acd069 pep8: Fix indenting.
Ludovic Chabant <ludovic@chabant.com>
parents: 780
diff changeset
232 )
9
8f7ba2c95025 Add packaging and related files.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
233