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 <[email protected]>:
>> > 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 [email protected].
>> > To post to this group, send email to [email protected].
>> > 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sphinx-users.
For more options, visit https://groups.google.com/d/optout.