I can also post this as a GitHub issue if you that's a better place for diagnosis?
Thanks, Bryan On Friday, June 30, 2017 at 7:13:36 PM UTC-5, Bryan Van de ven wrote: > > Hi Komiya, > > Certainly, sorry for the delay it is has been a crushing week. I > appreciated your input . The fill stack trace from the log file is below: > > > # Sphinx version: 1.6.2 > # Python version: 3.6.1 (CPython) > # Docutils version: 0.13.1 release > # Jinja2 version: 2.9.6 > # Last messages: > # copying bokeh-plot files... [ 97%] > bokeh-plot-fbef5a55095a57bd7ec69880b9e491c1.js > # > # copying bokeh-plot files... [ 98%] > bokeh-plot-fbffcff58bf2df95017e1a6470add3f2.js > # > # copying bokeh-plot files... [ 99%] > bokeh-plot-fc686a29565cec5272ecc418812f2401.js > # > # copying bokeh-plot files... [100%] > bokeh-plot-ff7d4e4a58f23d8a18428273c04d26ea.js > # > # > # > # Loaded extensions: > # alabaster (0.7.10) from > /Users/bryan/anaconda/lib/python3.6/site-packages/alabaster/__init__.py > # sphinx.ext.autodoc (1.6.2) from > /Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/ext/autodoc.py > # sphinx.ext.autosummary (1.6.2) from > /Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/ext/autosummary/__init__.py > # sphinx.ext.ifconfig (1.6.2) from > /Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/ext/ifconfig.py > # sphinx.ext.napoleon (1.6.2) from > /Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/ext/napoleon/__init__.py > # sphinx.ext.intersphinx (1.6.2) from > /Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/ext/intersphinx.py > # sphinx.ext.viewcode (1.6.2) from > /Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/ext/viewcode.py > # bokeh.sphinxext.bokeh_autodoc (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_autodoc.py > # bokeh.sphinxext.bokeh_enum (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_enum.py > # bokeh.sphinxext.bokeh_gallery (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_gallery.py > # bokeh.sphinxext.bokeh_github (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_github.py > # bokeh.sphinxext.bokeh_jinja (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_jinja.py > # bokeh.sphinxext.bokeh_index_toctree (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_index_toctree.py > # bokeh.sphinxext.bokeh_model (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_model.py > # bokeh.sphinxext.bokeh_options (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_options.py > # bokeh.sphinxext.bokeh_palette (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_palette.py > # bokeh.sphinxext.bokeh_palette_group (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_palette_group.py > # bokeh.sphinxext.bokeh_plot (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_plot.py > # bokeh.sphinxext.bokeh_prop (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_prop.py > # bokeh.sphinxext.bokeh_sitemap (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/bokeh_sitemap.py > # bokeh.sphinxext.collapsible_code_block (unknown version) from > /Users/bryan/work/bokeh/bokeh/sphinxext/collapsible_code_block.py > Traceback (most recent call last): > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/cmdline.py", > > line 306, in main > app.build(opts.force_all, filenames) > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/application.py", > > line 339, in build > self.builder.build_update() > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/builders/__init__.py", > > line 328, in build_update > 'out of date' % len(to_build)) > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/builders/__init__.py", > > line 341, in build > updated_docnames = set(self.env.update(self.config, self.srcdir, > self.doctreedir)) > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/environment/__init__.py", > > line 584, in update > self._read_serial(docnames, self.app) > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/environment/__init__.py", > > line 603, in _read_serial > self.read_doc(docname, app) > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/environment/__init__.py", > > line 733, in read_doc > app.emit('doctree-read', doctree) > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/application.py", > > line 489, in emit > return self.events.emit(event, self, *args) > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/events.py", > > line 79, in emit > results.append(callback(*args)) > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/environment/collectors/asset.py", > > line 51, in process_doc > docname = app.env.docname > File > "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/environment/__init__.py", > > line 785, in docname > return self.temp_data['docname'] > KeyError: 'docname' > > > Let me know if I can provide any more input or information. > > Thanks, > > Bryan > > > > > > > On Sunday, June 25, 2017 at 6:57:57 AM UTC-5, Komiya Takeshi wrote: >> >> Hi Bryan, >> >> Sphinx sets `env.docname` during reading docs (env.read_doc()). So I >> feel a bit strange your situation. >> Could you share stacktrace of the error? >> >> Thanks, >> Takeshi KOMIYA >> >> 2017-06-24 6:27 GMT+09:00 Bryan Van de ven <bry...@continuum.io>: >> > Hi All, >> > >> > I've developed a "bokeh-gallery" extension to help with automating our >> > project documentation. It is used to generate the gallery below: >> > >> > http://bokeh.pydata.org/en/latest/docs/gallery.html >> > >> > After trying to update from Sphinx 1.5.x to 1.6.x, I get the following >> > exception: >> > >> > Exception occurred: >> > File >> > >> "/Users/bryan/anaconda/lib/python3.6/site-packages/Sphinx-1.6.2-py3.6.egg/sphinx/environment/__init__.py", >> >> >> > line 785, in docname >> > return self.temp_data['docname'] >> > KeyError: 'docname' >> > >> > >> > The full code for the extension is here: >> > >> > >> > >> https://github.com/bokeh/bokeh/blob/master/bokeh/sphinxext/bokeh_gallery.py >> > >> > But i've included the just the "run: code, which seems the be the >> problem >> > below. (It's been updated with a workaround I describe below) The >> extension >> > works by reading a JSON config that lists gallery files, then reading >> doc >> > for all these in a loop. Then it generates some RST txt with ".. image" >> > links to the docs generated in the links, which it passes to >> self._parse. >> > It's this step that fails. Evidently now the value of env.docname is >> erased >> > during the loop that reads docs. When self._parse is called with the >> > generated RST txt, the image collector tries to access env.docname, >> > resulting in the exception above. >> > >> > I can "fix" this by saving the docname before the loop, then setting >> > env.temp_data['docname'] = current_docname as seen below. But this >> seems >> > like a pretty bad workaround. What is the right way to do what I am >> doing, >> > which is basically: >> > >> > * read in a bunch of files and generate docs for them >> > * generate a string of RST text for the current doc >> > * parse that dynamically generated RST text >> > >> > Thanks for any guidance, >> > >> > Bryan >> > >> > class BokehGalleryDirective(BokehDirective): >> > >> > >> > has_content = False >> > required_arguments = 1 >> > >> > >> > def run(self): >> > env = self.state.document.settings.env >> > app = env.app >> > >> > >> > current_docname = env.docname >> > docdir = dirname(env.doc2path(current_docname)) >> > >> > >> > dest_dir = join(docdir, "gallery") >> > ensuredir(dest_dir) >> > >> > >> > specpath = join(docdir, self.arguments[0]) >> > env.note_dependency(specpath) >> > spec = json.load(open(specpath)) >> > details = spec['details'] >> > >> > >> > details_iter = status_iterator(details, >> > 'copying gallery files... ', >> > "brown", >> > len(details), >> > app.verbosity, >> > lambda x: x['name'] + ".py") >> > >> > >> > env.gallery_updated = [] >> > for detail in details_iter: >> > src_path = abspath(join("..", detail['path'])) >> > dest_path = join(dest_dir, detail['name'] + ".py") >> > >> > >> > # sphinx pickled env works only with forward slash >> > docname = join(env.app.config.bokeh_gallery_dir, >> > detail['name']).replace("\\","/") >> > >> > >> > try: >> > copyfile(src_path, dest_path) >> > except OSError as e: >> > raise SphinxError('cannot copy gallery file %r, reason: >> %s' >> > % (src_path, e)) >> > >> > >> > try: >> > env.clear_doc(docname) >> > env.read_doc(docname, app=app) >> > env.gallery_updated.append(docname) >> > except Exception as e: >> > raise SphinxError('failed to read gallery doc %r, >> reason: >> > %s' % (docname, e)) >> > >> > >> > names = [detail['name']for detail in details] >> > rst_text = GALLERY_PAGE.render(names=names) >> > >> > >> > # current docname has been cleared, not sure a better way to >> restore >> > env.temp_data['docname'] = current_docname >> > return self._parse(rst_text, "<bokeh-gallery>") >> > >> > >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups >> > "sphinx-users" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an >> > email to sphinx-users...@googlegroups.com. >> > To post to this group, send email to sphinx...@googlegroups.com. >> > Visit this group at https://groups.google.com/group/sphinx-users. >> > For more options, visit https://groups.google.com/d/optout. >> > -- You received this message because you are subscribed to the Google Groups "sphinx-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to sphinx-users+unsubscr...@googlegroups.com. To post to this group, send email to sphinx-users@googlegroups.com. Visit this group at https://groups.google.com/group/sphinx-users. For more options, visit https://groups.google.com/d/optout.