From c380d0226fdc5ade67f10dadc1adabdc6e50cb70 Mon Sep 17 00:00:00 2001 From: Eric Atkin Date: Fri, 15 Feb 2019 15:59:13 -0700 Subject: Add ignore_files to pserve configuration section --- CONTRIBUTORS.txt | 2 ++ setup.py | 2 +- src/pyramid/scripts/pserve.py | 24 +++++++++++++++++++++--- tests/test_scripts/test_pserve.py | 32 ++++++++++++++++++++++++++++++-- 4 files changed, 54 insertions(+), 6 deletions(-) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 3c92d1d91..96ddcefc7 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -337,4 +337,6 @@ Contributors - Alexandre Yukio Harano, 2018/10/05 +- Eric Atkin, 2019/02/15 + - Arijit Basu, 2019/02/19 diff --git a/setup.py b/setup.py index afddbda35..0f097cac4 100644 --- a/setup.py +++ b/setup.py @@ -26,7 +26,7 @@ CHANGES = readfile('CHANGES.rst') VERSION = '2.0.dev0' install_requires = [ - 'hupper', + 'hupper >= 1.5', # ignore_files support 'plaster', 'plaster_pastedeploy', 'setuptools', diff --git a/src/pyramid/scripts/pserve.py b/src/pyramid/scripts/pserve.py index bf5662a19..350ab4d6d 100644 --- a/src/pyramid/scripts/pserve.py +++ b/src/pyramid/scripts/pserve.py @@ -25,8 +25,10 @@ from pyramid.path import AssetResolver from pyramid.settings import aslist -def main(argv=sys.argv, quiet=False): - command = PServeCommand(argv, quiet=quiet) +def main(argv=sys.argv, quiet=False, original_ignore_files=None): + command = PServeCommand( + argv, quiet=quiet, original_ignore_files=original_ignore_files + ) return command.run() @@ -131,13 +133,15 @@ class PServeCommand(object): _scheme_re = re.compile(r'^[a-z][a-z]+:', re.I) - def __init__(self, argv, quiet=False): + def __init__(self, argv, quiet=False, original_ignore_files=None): self.args = self.parser.parse_args(argv[1:]) if quiet: self.args.verbose = 0 if self.args.reload: self.worker_kwargs = {'argv': argv, "quiet": quiet} self.watch_files = set() + self.ignore_files = set() + self.original_ignore_files = original_ignore_files def out(self, msg): # pragma: no cover if self.args.verbose > 0: @@ -151,6 +155,9 @@ class PServeCommand(object): config_path = self.get_config_path(loader) here = os.path.dirname(config_path) watch_files = aslist(settings.get('watch_files', ''), flatten=False) + self.ignore_files = set( + aslist(settings.get('ignore_files', ''), flatten=False) + ) # track file paths relative to the ini file resolver = AssetResolver(package=None) @@ -232,11 +239,13 @@ class PServeCommand(object): if self.args.reload and not hupper.is_active(): if self.args.verbose > 1: self.out('Running reloading file monitor') + self.worker_kwargs['original_ignore_files'] = self.ignore_files hupper.start_reloader( 'pyramid.scripts.pserve.main', reload_interval=int(self.args.reload_interval), verbose=self.args.verbose, worker_kwargs=self.worker_kwargs, + ignore_files=self.ignore_files, ) return 0 @@ -250,6 +259,15 @@ class PServeCommand(object): reloader = hupper.get_reloader() reloader.watch_files(list(self.watch_files)) + if ( + self.original_ignore_files is not None + and self.original_ignore_files != self.ignore_files + ): + self.out( + 'A change to "ignore_files" was detected but it will not take' + ' effect until pserve is restarted.' + ) + server = server_loader.get_wsgi_server(server_name, config_vars) app = loader.get_wsgi_app(app_name, config_vars) diff --git a/tests/test_scripts/test_pserve.py b/tests/test_scripts/test_pserve.py index a573f2e5b..f19ba81df 100644 --- a/tests/test_scripts/test_pserve.py +++ b/tests/test_scripts/test_pserve.py @@ -19,10 +19,10 @@ class TestPServeCommand(unittest.TestCase): return PServeCommand - def _makeOne(self, *args): + def _makeOne(self, *args, **kwargs): effargs = ['pserve'] effargs.extend(args) - cmd = self._getTargetClass()(effargs) + cmd = self._getTargetClass()(effargs, **kwargs) cmd.out = self.out self.loader = dummy.DummyLoader() cmd._get_config_loader = self.loader @@ -49,6 +49,32 @@ class TestPServeCommand(unittest.TestCase): inst.run() self.assertEqual(app.global_conf, {'a': '1', 'b': '2'}) + def test_original_ignore_files(self): + msg = 'A change to "ignore_files" was detected' + + def get_app(name, global_conf): + app.name = name + app.global_conf = global_conf + return app + + inst = self._makeOne('development.ini') + app = dummy.DummyApp() + self.loader.get_wsgi_app = get_app + self.loader.server = lambda x: x + self.loader.settings = {'pserve': {'ignore_files': '*.txt'}} + inst.run() + self.assertNotIn(msg, self.out_.getvalue()) + + inst = self._makeOne( + 'development.ini', original_ignore_files={'*.txt'} + ) + app = dummy.DummyApp() + self.loader.get_wsgi_app = get_app + self.loader.server = lambda x: x + self.loader.settings = {'pserve': {'ignore_files': 'foo/*.txt'}} + inst.run() + self.assertIn(msg, self.out_.getvalue()) + def test_parse_vars_bad(self): inst = self._makeOne('development.ini', 'a') self.assertRaises(ValueError, inst.run) @@ -122,7 +148,9 @@ class TestPServeCommand(unittest.TestCase): 'worker_kwargs': { 'argv': ['pserve', '--reload', 'development.ini'], 'quiet': False, + 'original_ignore_files': set(), }, + 'ignore_files': set(), }, ) -- cgit v1.2.3 From 7250de67bdebc05e9b2c4e9db0491b06bb214f34 Mon Sep 17 00:00:00 2001 From: Theron Luhn Date: Sat, 30 Mar 2019 11:39:06 -0700 Subject: Fix docs build on Sphinx 2.0.0 Sphinx 2.0.0 was released, which triggered some warnings when building the docs and caused the build to fail. --- docs/conf.py | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index a6d37a176..8fdebf53d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -28,6 +28,7 @@ from sphinx.writers.latex import LaTeXTranslator from docutils import nodes from docutils import utils +from docutils.parsers.rst import Directive def raw(*arg): @@ -326,7 +327,6 @@ _PREAMBLE = r""" latex_elements = { 'preamble': _PREAMBLE, - 'date': '', 'releasename': 'Version', 'title': r'The Pyramid Web Framework', # 'pointsize':'12pt', # uncomment for 12pt version @@ -345,25 +345,25 @@ latex_elements = { #subparagraph 5 -def frontmatter(name, arguments, options, content, lineno, - content_offset, block_text, state, state_machine): - return [nodes.raw( - '', - format='latex')] +class FrontMatter(Directive): + def run(self): + return [nodes.raw( + '', + format='latex')] -def mainmatter(name, arguments, options, content, lineno, - content_offset, block_text, state, state_machine): - return [nodes.raw( - '', - format='latex')] +class MainMatter(Directive): + def run(self): + return [nodes.raw( + '', + format='latex')] -def backmatter(name, arguments, options, content, lineno, - content_offset, block_text, state, state_machine): - return [nodes.raw( - '', - format='latex')] +class BackMatter(Directive): + def run(self): + return [nodes.raw( + '', + format='latex')] def app_role(role, rawtext, text, lineno, inliner, options={}, content=[]): @@ -378,9 +378,9 @@ def app_role(role, rawtext, text, lineno, inliner, options={}, content=[]): def setup(app): app.add_role('app', app_role) - app.add_directive('frontmatter', frontmatter, 1, (0, 0, 0)) - app.add_directive('mainmatter', mainmatter, 1, (0, 0, 0)) - app.add_directive('backmatter', backmatter, 1, (0, 0, 0)) + app.add_directive('frontmatter', FrontMatter, 1, (0, 0, 0)) + app.add_directive('mainmatter', MainMatter, 1, (0, 0, 0)) + app.add_directive('backmatter', BackMatter, 1, (0, 0, 0)) app.connect('autodoc-process-signature', resig) -- cgit v1.2.3 From e08c895bdb98398a7679eadd159a99337d38983a Mon Sep 17 00:00:00 2001 From: Theron Luhn Date: Sat, 30 Mar 2019 11:46:35 -0700 Subject: Sign CONTRIBUTORS.txt --- CONTRIBUTORS.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index 3c92d1d91..b6eb5b550 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -338,3 +338,5 @@ Contributors - Alexandre Yukio Harano, 2018/10/05 - Arijit Basu, 2019/02/19 + +- Theron Luhn, 2019/03/30 -- cgit v1.2.3 From 362584435e03a3316d5ac5696f72b02975b1950d Mon Sep 17 00:00:00 2001 From: Theron Luhn Date: Sat, 30 Mar 2019 12:47:34 -0700 Subject: Fix epub build. --- docs/index.rst | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index a1a81872c..4b413c16d 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -152,11 +152,9 @@ Comprehensive reference material for every public API exposed by :app:`Pyramid`: .. toctree:: - :maxdepth: 1 - :glob: + :maxdepth: 2 api/index - api/* ``p*`` Scripts Documentation @@ -165,11 +163,9 @@ Comprehensive reference material for every public API exposed by ``p*`` scripts included with :app:`Pyramid`. .. toctree:: - :maxdepth: 1 - :glob: + :maxdepth: 2 pscripts/index - pscripts/* Change History -- cgit v1.2.3 From 4f9b54116c8867505e7b4de526795fc222909983 Mon Sep 17 00:00:00 2001 From: Theron Luhn Date: Sat, 30 Mar 2019 13:07:05 -0700 Subject: Pin Sphinx to Read the Docs version. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index afddbda35..758a2259b 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,7 @@ tests_require = [ docs_extras = [ - 'Sphinx >= 1.8.1', # Unicode characters in tree diagrams + 'Sphinx == 1.8.5', # Current version for Read the Docs 'docutils', 'pylons-sphinx-themes >= 1.0.8', # Ethical Ads 'pylons_sphinx_latesturl', -- cgit v1.2.3 From cd12850675fc827589d9f841e22010ffb7ab80e2 Mon Sep 17 00:00:00 2001 From: Theron Luhn Date: Sat, 30 Mar 2019 13:26:09 -0700 Subject: Revert "Pin Sphinx to Read the Docs version." This reverts commit 4f9b54116c8867505e7b4de526795fc222909983. --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 758a2259b..afddbda35 100644 --- a/setup.py +++ b/setup.py @@ -44,7 +44,7 @@ tests_require = [ docs_extras = [ - 'Sphinx == 1.8.5', # Current version for Read the Docs + 'Sphinx >= 1.8.1', # Unicode characters in tree diagrams 'docutils', 'pylons-sphinx-themes >= 1.0.8', # Ethical Ads 'pylons_sphinx_latesturl', -- cgit v1.2.3 From 9f6e6822fe541bfca399f3aa56c5b3c6a67e3a92 Mon Sep 17 00:00:00 2001 From: Theron Luhn Date: Sat, 30 Mar 2019 13:43:29 -0700 Subject: Changelog entry. --- CHANGES.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index d8a4f45a6..afac078b0 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -93,3 +93,6 @@ Documentation Changes - Restore build of PDF on Read The Docs. See https://github.com/Pylons/pyramid/issues/3290 + +- Fix docs build for Sphinx 2.0. + See https://github.com/Pylons/pyramid/pull/3480 -- cgit v1.2.3