Skip to content

DOC: docs don't build with new Sphinx version 1.2 #5899

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jorisvandenbossche opened this issue Jan 10, 2014 · 31 comments · Fixed by #5921
Closed

DOC: docs don't build with new Sphinx version 1.2 #5899

jorisvandenbossche opened this issue Jan 10, 2014 · 31 comments · Fixed by #5921
Labels

Comments

@jorisvandenbossche
Copy link
Member

I always build the docs with Sphinx 1.1.3, but recently (in december) a new Sphinx version was released: 1.2.

And it seems that the docs won't build with this new version (also mentioned in #5530 and #5701 (comment)). You get the following error:

  File "C:\Users\vdbosscj\Scipy\pandas-joris\doc\source\_templates\autosummary/class.rst", line 1, in top-level template code
    {% extends "!autosummary/class.rst" %}
  File "C:\Anaconda\envs\devel2\lib\site-packages\jinja2\utils.py", line 339, in get
    return self[key]
  File "C:\Anaconda\envs\devel2\lib\site-packages\jinja2\utils.py", line 389, in __getitem__
    if self._queue[-1] != key:
RuntimeError: maximum recursion depth exceeded in cmp

This has something to do with the class.rst template for autosummary (which we extend in doc/source/_templates/autosummary/class.rst)

If you remove the template class.rst, the docs will build (you only will get a bunch of warnings because of links to non-existing documents, because not all docstring pages are built (that was the reason for the template)).

@jorisvandenbossche
Copy link
Member Author

@pv Do you know if you also have this issue with numpy? (Because I copied the approach of the class.rst template from the numpy docs)

@jorisvandenbossche
Copy link
Member Author

OK, this was a regression in Sphinx 1.2, and already solved in development version of Sphinx: https://bitbucket.org/birkenfeld/sphinx/issue/1335/numpy-docs-fail-to-build-with-sphinx-12

It seems they don't have concrete plans yet for a bugfix release: https://groups.google.com/forum/#!topic/sphinx-dev/QZe79WrWFnk

@jorisvandenbossche
Copy link
Member Author

@y-p And it seems this can be marked as solved soon! https://groups.google.com/forum/?fromgroups#!topic/sphinx-dev/QZe79WrWFnk

@ghost
Copy link

ghost commented Jan 19, 2014

Good show. Now we need to figure out why autosummary is so painfully slow
and send them a PR.

@jorisvandenbossche
Copy link
Member Author

http://sphinx-doc.org/changes.html Sphinx 1.2.1 is released and up on pypi. I will just mention it in #5996 and then this can be closed.

@ghost
Copy link

ghost commented Jan 20, 2014

1.2.1 throws a bunch of errors during build that neither 1.1.3 nor 1.3a0 raise it seems.

@jorisvandenbossche
Copy link
Member Author

@y-p What kind of errors? I tried and didn't see any (apart from some document isn't included in any toctree warnings, what these were already present with sphinx 1.1.3 (and for those, not yet clear for me where these come from))

But with looking more closely now at the resulting api.html, I see a big difference in the output of autosummary. The determination of the summary lines seems to have changed (and not working well for pandas), as now for some functions multiple lines (even with the parameter explanations) are included in the autosummary tables. I think this has something to do with the first sentence that had to end with a ..

@ghost
Copy link

ghost commented Jan 20, 2014

~/src/pandas/doc/ λ ./make.py clean; time ./make.py
Running Sphinx v1.2.1         
loading pickled environment... not yet created
[autosummary] generating autosummary for: 10min.rst, api.rst, basics.rst, comparison_with_r.rst, comparison_with_sql.rst, computation.rst, cookbook.rst, dsintro.rst, ecosystem.rst, enhancingperf.rst, ..., r_interface.rst, release.rst, remote_data.rst, reshaping.rst, rplot.rst, sparse.rst, timeseries.rst, tutorials.rst, visualization.rst, whatsnew.rst
WARNING: [autosummary] failed to import 'pandas.Panel.dtypes': no module named pandas.Panel.dtypes
WARNING: [autosummary] failed to import 'pandas.Panel.ftypes': no module named pandas.Panel.ftypes
WARNING: [autosummary] failed to import 'pandas.Panel4D.dtypes': no module named pandas.Panel4D.dtypes
WARNING: [autosummary] failed to import 'pandas.Panel4D.ftypes': no module named pandas.Panel4D.ftypes
[autosummary] generating autosummary for: /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.T.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.__iter__.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.abs.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.add.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.add_prefix.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.add_suffix.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.align.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.any.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.append.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.apply.rst, ..., /home/user1/src/pandas/doc/source/generated/pandas.stats.moments.rolling_skew.rst, /home/user1/src/pandas/doc/source/generated/pandas.stats.moments.rolling_std.rst, /home/user1/src/pandas/doc/source/generated/pandas.stats.moments.rolling_sum.rst, /home/user1/src/pandas/doc/source/generated/pandas.stats.moments.rolling_var.rst, /home/user1/src/pandas/doc/source/generated/pandas.to_datetime.rst, /home/user1/src/pandas/doc/source/generated/pandas.to_timedelta.rst, /home/user1/src/pandas/doc/source/generated/pandas.tools.merge.concat.rst, /home/user1/src/pandas/doc/source/generated/pandas.tools.merge.merge.rst, /home/user1/src/pandas/doc/source/generated/pandas.tools.pivot.pivot_table.rst, /home/user1/src/pandas/doc/source/generated/pandas.tseries.tools.to_datetime.rst
[autosummary] generating autosummary for: /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.all.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.as_blocks.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.at_time.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.between_time.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.bfill.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.blocks.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.bool.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.compound.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.consolidate.rst, /home/user1/src/pandas/doc/source/generated/pandas.DataFrame.divide.rst, ..., /home/user1/src/pandas/doc/source/generated/pandas.Series.to_msgpack.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.to_period.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.to_timestamp.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.tolist.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.transpose.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.tshift.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.valid.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.view.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.where.rst, /home/user1/src/pandas/doc/source/generated/pandas.Series.xs.rst
loading intersphinx inventory from http://statsmodels.sourceforge.net/devel/objects.inv...
loading intersphinx inventory from http://docs.python.org/objects.inv...
building [html]: targets for 30 source files that are out of date
updating environment: 1160 added, 0 changed, 0 removed
/usr/lib64/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['monospace'] not found. Falling back to Bitstream Vera Sans
  (prop.get_family(), self.defaultFamily[fontext]))
---------------------------------------------------------------------------                             
ValueError                                Traceback (most recent call last)
<ipython-input-127-359604fa4ed3> in <module>()
----> 1 panel.apply(lambda x: x.dtype, axis='items')

/usr/lib64/python2.7/site-packages/pandas/core/panel.pyc in apply(self, func, axis)
    879         i = self._get_axis_number(axis)
    880         result = np.apply_along_axis(func, i, self.values)
--> 881         return self._wrap_result(result, axis=axis)
    882 
    883     def _reduce(self, op, axis=0, skipna=True, numeric_only=None,

/usr/lib64/python2.7/site-packages/pandas/core/panel.pyc in _wrap_result(self, result, axis)
    919             result = result.T
    920 
--> 921         return self._construct_return_type(result, axes)
    922 
    923     @Appender(_shared_docs['reindex'] % _shared_doc_kwargs)

/usr/lib64/python2.7/site-packages/pandas/core/panel.pyc in _construct_return_type(self, result, axes, **kwargs)
    902             if axes is None:
    903                 return self._constructor(result)
--> 904             return self._constructor(result, **self._construct_axes_dict())
    905 
    906         elif self.ndim == ndim + 1:

/usr/lib64/python2.7/site-packages/pandas/core/panel.pyc in __init__(self, data, items, major_axis, minor_axis, copy, dtype)
    130                  copy=False, dtype=None):
    131         self._init_data(data=data, items=items, major_axis=major_axis,
--> 132                         minor_axis=minor_axis, copy=copy, dtype=dtype)
    133 
    134     def _init_data(self, data, copy, dtype, **kwargs):

/usr/lib64/python2.7/site-packages/pandas/core/panel.pyc in _init_data(self, data, copy, dtype, **kwargs)
    154             dtype = None
    155         elif isinstance(data, (np.ndarray, list)):
--> 156             mgr = self._init_matrix(data, passed_axes, dtype=dtype, copy=copy)
    157             copy = False
    158             dtype = None

/usr/lib64/python2.7/site-packages/pandas/core/panel.pyc in _init_matrix(self, data, axes, dtype, copy)
    287             fixed_axes.append(ax)
    288 
--> 289         return create_block_manager_from_blocks([values], fixed_axes)
    290 
    291     #----------------------------------------------------------------------

/usr/lib64/python2.7/site-packages/pandas/core/internals.pyc in create_block_manager_from_blocks(blocks, axes)
   3582         blocks = [getattr(b, 'values', b) for b in blocks]
   3583         tot_items = sum(b.shape[0] for b in blocks)
-> 3584         construction_error(tot_items, blocks[0].shape[1:], axes, e)
   3585 
   3586 

/usr/lib64/python2.7/site-packages/pandas/core/internals.pyc in construction_error(tot_items, block_shape, axes, e)
   3564         raise e
   3565     raise ValueError("Shape of passed values is {0}, indices imply {1}".format(
-> 3566         passed,implied))
   3567 
   3568 def create_block_manager_from_blocks(blocks, axes):

ValueError: Shape of passed values is (0, 5, 4), indices imply (3, 5, 4)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-134-b16ed64774ba> in <module>()
----> 1 result = panel.apply(f, axis = ['items','major_axis'])

/usr/lib64/python2.7/site-packages/pandas/core/panel.pyc in apply(self, func, axis)
    877         result : DataFrame or Panel
    878         """
--> 879         i = self._get_axis_number(axis)
    880         result = np.apply_along_axis(func, i, self.values)
    881         return self._wrap_result(result, axis=axis)

/usr/lib64/python2.7/site-packages/pandas/core/generic.pyc in _get_axis_number(self, axis)
    281 
    282     def _get_axis_number(self, axis):
--> 283         axis = self._AXIS_ALIASES.get(axis, axis)
    284         if com.is_integer(axis):
    285             if axis in self._AXIS_NAMES:

TypeError: unhashable type: 'list'
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-136-0ba7caf3fe2e> in <module>()
----> 1 result.loc[:,:,'ItemA']

/usr/lib64/python2.7/site-packages/pandas/core/indexing.pyc in __getitem__(self, key)
   1016     def __getitem__(self, key):
   1017         if type(key) is tuple:
-> 1018             return self._getitem_tuple(key)
   1019         else:
   1020             return self._getitem_axis(key, axis=0)

/usr/lib64/python2.7/site-packages/pandas/core/indexing.pyc in _getitem_tuple(self, tup)
    588     def _getitem_tuple(self, tup):
    589         try:
--> 590             return self._getitem_lowerdim(tup)
    591         except IndexingError:
    592             pass

/usr/lib64/python2.7/site-packages/pandas/core/indexing.pyc in _getitem_lowerdim(self, tup)
    695         for i, key in enumerate(tup):
    696             if _is_label_like(key) or isinstance(key, tuple):
--> 697                 section = self._getitem_axis(key, axis=i)
    698 
    699                 # we have yielded a scalar ?

/usr/lib64/python2.7/site-packages/pandas/core/indexing.pyc in _getitem_axis(self, key, axis)
   1142             return self._getitem_iterable(key, axis=axis)
   1143         else:
-> 1144             self._has_valid_type(key, axis)
   1145             return self._get_label(key, axis=axis)
   1146 

/usr/lib64/python2.7/site-packages/pandas/core/indexing.pyc in _has_valid_type(self, key, axis)
   1122                 raise
   1123             except:
-> 1124                 error()
   1125 
   1126         return True

/usr/lib64/python2.7/site-packages/pandas/core/indexing.pyc in error()
   1109                         "cannot use label indexing with a null key")
   1110                 raise KeyError("the label [%s] is not in the [%s]" %
-> 1111                                (key, self.obj._get_axis_name(axis)))
   1112 
   1113             try:

KeyError: 'the label [ItemA] is not in the [minor_axis]'
/usr/lib64/python2.7/site-packages/pandas/core/frame.py:2918: FutureWarning: TimeSeries broadcasting along DataFrame index by default is deprecated. Please use DataFrame.<op> to explicitly broadcast arithmetic operations along the index
  FutureWarning)

I don't see these with 1.3.0 or 1.1.3, but maybe I forgot a step when checking.

In recent work on docs I've noticed that our docstrings, @appender and co yield quite
messy doctsrings:

In [5]: print df.interpolate.__doc__

        Interpolate values according to different methods.

        Parameters
        ----------
        method : {'linear', 'time', 'values', 'index' 'nearest', 'zero',
                  'slinear', 'quadratic', 'cubic', 'barycentric', 'krogh',
                  'polynomial', 'spline' 'piecewise_polynomial', 'pchip'}

            * 'linear': ignore the index and treat the values as equally
               spaced. default
            * 'time': interpolation works on daily and higher resolution
                data to interpolate given length of interval
            * 'index': use the actual numerical values of the index
            * 'nearest', 'zero', 'slinear', 'quadratic', 'cubic',
              'barycentric', 'polynomial' is passed to
              `scipy.interpolate.interp1d` with the order given both
              'polynomial' and 'spline' requre that you also specify and order
              (int) e.g. df.interpolate(method='polynomial', order=4)
            * 'krogh', 'piecewise_polynomial', 'spline', and 'pchip' are all
               wrappers around the scipy interpolation methods of similar
               names. See the scipy documentation for more on their behavior:
               http://docs.scipy.org/doc/scipy/reference/interpolate.html#univariate-interpolation
               http://docs.scipy.org/doc/scipy/reference/tutorial/interpolate.html

        axis : {0, 1}, default 0
            * 0: fill column-by-column
            * 1: fill row-by-row
        limit : int, default None.
            Maximum number of consecutive NaNs to fill.
        inplace : bool, default False
            Update the NDFrame in place if possible.
        downcast : optional, 'infer' or None, defaults to 'infer'
            Downcast dtypes if possible.

        Returns
        -------
        Series or DataFrame of same shape interpolated at the NaNs

        See Also
        --------
        reindex, replace, fillna

        Examples
        --------

        # Filling in NaNs:
        >>> s = pd.Series([0, 1, np.nan, 3])
        >>> s.interpolate()
        0    0
        1    1
        2    2
        3    3
        dtype: float64



In [6]: print df.min.__doc__



This method returns the minimum of the values in the object. If you
want the *index* of the minimum, use ``idxmin``. This is the
equivalent of the ``numpy.ndarray`` method ``argmin``.

Parameters
----------
axis : {index (0), columns (1)}
skipna : boolean, default True
    Exclude NA/null values. If an entire row/column is NA, the result
    will be NA
level : int, default None
        If the axis is a MultiIndex (hierarchical), count along a
        particular level, collapsing into a Series
numeric_only : boolean, default None
    Include only float, int, boolean data. If None, will attempt to use
    everything, then use only numeric data

Returns
-------
min : Series or DataFrame (if level specified)

PEP 257 defines some rules for docstring handling tools that cleans up
indentation, but many of our docstrings have a newline as the first "subject" line, usually because of pep8 constraints, and that may break some things. just a hunch. One way to fix it would be to put .lstrip() on every docstring. It's noisy though.

@ghost
Copy link

ghost commented Jan 20, 2014

Now that I think of it, I wonder how much of the time it takes to import pandas is spent
on constructing the doctrings with all those decorators. You've probably noticed that little pause.

@ghost
Copy link

ghost commented Jan 20, 2014

Cool. TIL slow function decorators impose a cost at import-time:

a.py

def foo(f):
    import time
    time.sleep(5)
    return f


@foo
def f():
    return 1
/tmp/a/ λ time python -c 'import a' 
python -c 'import a'  

0.01s user 0.01s system 0% cpu 5.023 total

It's obvious once you think of it, but I never did before.

I guess that's similar to why js jockies precompile their templates.

Update: dosn't make much of a difference for pandas though, I guess the work is elsewhere.

@jorisvandenbossche
Copy link
Member Author

@y-p The errors you see, I would think they have to do with your pandas itself, and not sphinx, as the tracebacks all lead to pandas. E.g. this one:

ValueError                                Traceback (most recent call last)
<ipython-input-127-359604fa4ed3> in <module>()
----> 1 panel.apply(lambda x: x.dtype, axis='items')

is an error that occured when running the code in the example in basic.html at input prompt 127. This runs fine on my computer, but you seem to get an error. But due to pandas, not sphinx (as sphinx has in se nothing to do with the running of our code examples in the docs). So they seem not related to sphinx 1.2.1/1.1.3 version issues?

@jreback
Copy link
Contributor

jreback commented Jan 20, 2014

@jorisvandenbossche this is a new function in 0.13.1 (didn't exist in 0.13). I think that sphinx is not picking up the new version function (I have to basically force it using an explicity path in: pandas/doc/source/conf.py, where I put my pandas path at the top, e.g. sys.path.insert('/home/jreback/pandas')

not sure how you guys get around this problem

@jorisvandenbossche
Copy link
Member Author

@jreback I am just working in a conda environment with pandas master, and when running Sphinx it picks up that version when importing pandas as should be. E.g. you can put import pandas; print pandas.__version__ in conf.py and then see what you get.

In every case, reopening, as there is certainly an issue with autosummary of sphinx 1.2.

@ghost
Copy link

ghost commented Jan 21, 2014

@jreback if I understand what you describe correctly, that's what setup.py develop is for -
to have the installed version be a link to the development directory.

@jreback
Copy link
Contributor

jreback commented Jan 21, 2014

hmm will try develop
I usually just make

@jorisvandenbossche
Copy link
Member Author

strange, strange, now I am seeing the same issue. Never had this before.

@y-p @jreback The issue you both reported with the doc building (y-p: failed to import 'pandas.Panel.dtypes': no module named pandas.Panel.dtypes, jrebacl: explicitely setting pandas version with sys.path.insert('/home/jreback/pandas') in conf.py) are both due to, indeed, sphinx not picking 0.13dev development version but 0.13 released version (Panel dtypes were added after 0.13 release).

I never had problems with this (just always used python setup.py develop in a conda env, and also build the docs in that env), but now, for some reason I also have that issue. But I have it with sphinx 1.1.3, so I don't think it has something to do with sphinxx 1.1.3 vs 1.2 issues

Any thoughts?

@jreback
Copy link
Contributor

jreback commented Jan 21, 2014

how does sphinx know where to pick up pandas? e.g. you normally go to a sub-dir doc to build the docs,s o you are not in the directly where the libraries reside

@jorisvandenbossche
Copy link
Member Author

@jreback isn't it just the pandas you get if you would run python in that directory and import pandas?

@jreback
Copy link
Contributor

jreback commented Jan 21, 2014

@jorisvandenbossche

I do this:

main pandas repo

cd /home/jreback/pandas

to build

make (or python setup.py build_ext --inplace)

to make docs

edit doc/source/conf.py to point to /home/jreback/pandas
cd docs
python make.py html

so I am NOT in the same dir when I build the docs

@jorisvandenbossche
Copy link
Member Author

And what I normally do:

I have a conda environment for development with all latest version, which is activated (comparable to virtualenv I think), then in main repo of pandas (vdbosscj/Scipy/pandas-joris):

python setup.py develop (normally only first time) / python setup.py build_ext --inplace

Because of the develop argument, the pandas version used in that env should be linked to my local repo at vdbosscj/Scipy/pandas-joris, so when I import pandas in this env, it is the development version and not the default version that was installed by Anaconda in the env.

For building the docs, I just do:

cd docs
python make.py html

I never modified conf.py (this shouldn't be necessary, as the linked pandas version by develop argument is the pandas in my local repo) and this worked for the last year, untill this afternoon ..

@jreback
Copy link
Contributor

jreback commented Jan 21, 2014

so must be some change in develop then?

@ghost
Copy link

ghost commented Jan 21, 2014

I don't have a venv, I just ran develop once and make keeps pandas updated.
Rebuilt the docs just now and yesterday with 1.1.3, no issues, so at least for me
it's working. Less likely that a bad commit made it in (though possible).

Try

sudo pip uninstall pandas sphinx # repeat until no more old versions exist
sudo pip install sphinx==1.1.3
cd pandas
python setup.py clean
python setup.py develop
cd docs
./make.py

Do you still get issues?

@jorisvandenbossche
Copy link
Member Author

no, ok, solved it.

In every case, now it works again. Why it failed I not fully sure, but I think it has something to do with that I installed the new version of Sphinx 1.2.1 with pip, and installed back again 1.1.3, but the sphinx-build-script.py was not updated, and for some reason, because of that it was picking a wrong version of pandas.
But in every case, not pandas fault.

@jorisvandenbossche
Copy link
Member Author

But @jreback, if you use develop you should not have to patch conf.py when you build the docs locally.

@jorisvandenbossche
Copy link
Member Author

@y-p Do you still see the issues you reported above? #5899 (comment)

@jreback
Copy link
Contributor

jreback commented Jan 21, 2014

@jorisvandenbossche yep...will give develop a try

@ghost
Copy link

ghost commented Jan 21, 2014

Nope, it works here now.

@jorisvandenbossche
Copy link
Member Author

OK, good to hear. So then there is only an issue with autosummary in the new Sphinx version 1.2.1.
The building of the docs itself is all fine.

@jorisvandenbossche
Copy link
Member Author

@y-p @jreback Something else, recently I am getting the following warning when building the docs DataFrame.is_copy.rst:: WARNING: document isn't included in any toctree (== this warning normally means that the attribute is not added to the list of attributes at the class page eg here http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.html#pandas.DataFrame)

I get this for:

pandas.DataFrame.is_copy
pandas.DatetimeIndex.name
pandas.DatetimeIndex.offset
pandas.Index.asi8
pandas.Index.name
pandas.Panel.is_copy
pandas.Panel4D.is_copy
pandas.Series.is_copy

which are all attributes that are initialised as None (so getattr(pd.Index, "asi8") returns None and not "attribute of / property at").
The strange thing is I am only getting this since last week or so, while the attributes (apart from is_copy) are not new I think.
Also, as this does not seem to manifestate on the dev doc builds on the website (see link above, there DataFrame.is_copy is just in the list), this is probably not an issue with pandas.

Any of you seen this?

@jorisvandenbossche
Copy link
Member Author

And back to the original issue, for clarity I will leave this closed (as the original issue reported is solved with the release of 1.2.1) and open a new issue for the autosummary issue of the new sphinx.

@jreback
Copy link
Contributor

jreback commented Jan 21, 2014

none of those attributes are new as u said

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants