Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 02 Oct 2018 16:04:52 +0200] rev 12352
[doc] Do not rely on lgc's sphinx_ext
This module is broken (getting an ImportError) and I don't want to fix
it. The only usage we make of it is for the "autodocstring" directive,
and I don't know what it does.
Based on the context, replacing autodocstring with either automodule or
autoclass and removing sphinx_ext from required Sphinx extensions.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 06 Sep 2018 13:44:06 +0200] rev 12351
Added tag 3.26.7 for changeset ee4ad63c91e5
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 06 Sep 2018 13:43:56 +0200] rev 12350
[pkg] Version 3.26.7
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 24 Aug 2018 17:19:02 +0200] rev 12349
Fix possible double import of cubes
For a new-style cube, if we import "cubicweb_<name>" and then import
"cubes.<name>", the cube will be imported twice. cubes.<name> and then
cubicweb_name is ok though...
When using pyramid, we try to find which cube define a "includeme" by importing
them with the name "cubes.<name>", so we (possibly ?) double import all new-style cube.
This case may also occur in tests with PyramidCWTest.
Touching the import loader to fix this scares me, so let's fix this by testing
"cubicweb_<name>" *before* "cubes.name" (for old style cubes, importing
cubicweb_<name> raise ImportError).
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Aug 2018 16:04:39 +0200] rev 12348
[autoform] Make RelationField.fromcardinality a class method factory
Instead of having the "RelationField" class hard-coded in this factory
method (thus preventing any subclass to properly use it), we make that
method a classmethod and instantiate the actual class instead of the
base one.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 22 Aug 2018 16:02:30 +0200] rev 12347
[autoform] Use fieldclass from kwargs in guess_field for non-final relations
This follows up on af969080e7e6 in which a "fieldclass" kwarg has been
added in EntityFieldsForm.field_by_name() before calling guess_field().
In this changeset, this value was only used for final relation but the
way non-final relation actually also changed since we also use
guess_field from these relation (previously, the field class specified
through uicfg was instantiated directly in
EntityFieldsForm.field_by_name()). So in the non-final case in
guess_field() we simply try to retrieve "fieldclass" from kwargs and
fall back to RelationField.
Samuel Trégouët <samuel.tregouet@logilab.fr> [Thu, 16 Aug 2018 12:31:44 +0200] rev 12346
[py37] `async` is now a reserved keyword
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 18 Jul 2018 13:53:00 +0200] rev 12345
Merge 3.26
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 18 Jul 2018 13:48:13 +0200] rev 12344
Added tag 3.26.6, debian/3.26.6-1 for changeset 8362503a9248
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 18 Jul 2018 13:47:45 +0200] rev 12343
[pkg] version 3.26.6
Olivier Giorgis <olivier.giorgis@logilab.fr> [Wed, 18 Jul 2018 11:27:05 +0200] rev 12342
[py3] Replace unicode keyword which is unknown in python3
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 11 Jul 2018 09:18:57 +0200] rev 12341
[skeleton] Use "py3" as tox environment instead of "py34"
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 18:19:08 +0200] rev 12340
Added tag 3.26.5 for changeset 76d7b0aa94d2
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 18:18:33 +0200] rev 12339
[pkg] Version 3.26.5
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Jun 2018 16:49:57 +0200] rev 12338
Merge with 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 12:19:16 +0200] rev 12337
[py3] Use "utf-8" as input encoding for docutils in rest extension
Docutils says that "unicode" is an unknown encoding on Python3. Not sure
where "unicode" as an encoding comes (it's there since showtime) but
"utf-8" seems more appropriate.
From now on, rendering of CubicWeb's rst directive (e.g. ..winclude)
works on Python 3. Accordingly, we extend wdoc's test to demonstrate
this. For this we need to install docutils in tox's web environment.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 11:19:14 +0200] rev 12336
[py3] Avoid setting attribute on Element instance in wdoc view
This change is needed to make "wdoc" view work on Python 3. Indeed,
before this patch, we used to set a "parent" attribute on Element
instances, which is not permitted since Python 3.3 as
xml.etree.ElementTree uses the C implementation by default.
To get rid of this "parent" attribute, we rework the XML nodes
processing logic to return and retrieve a node along with its parent in
several place of the code. Namely, build_toc_index() now accepts the
"parent" value for "node" and inserts it in the "index" dict (thus avoid
`node.parent = <value>`). Respectively, every query to the "index" dict
is updated to also retrieve the "parent" (thus avoiding `<value> =
node.parent`). Later in InlineHelpView class, the "index" dict is bound
to "tocindex" attribute so we adjust how it is queried in respective
methods.
Tests cubicweb/web/test/unittest_views_wdoc.py now pass on Python 3.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 10:07:20 +0200] rev 12335
[test] Add a trivial test for "wdoc" view
We just make sure it gets rendered without errors (which wasn't the case
before the previous patch).
It does not work on Python 3; this will be fixed in next changeset.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 10:06:26 +0200] rev 12334
[py3] Open rst file in text mode in wdoc view
Otherwise, UStringIO complains that it receives bytes.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 11:11:10 +0200] rev 12333
[ext/rest] Drop "handle_io_errors" argument to docutils' FileInput
This argument is deprecated and ignore in docutils since version 0.10.
Besides, its default value is None which is the same as we passed.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 10:38:04 +0200] rev 12332
[wdoc] Remove fallback about xml.etree module
Module xml.etree exists since python 2.5.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 10:15:33 +0200] rev 12331
[wdoc] Avoid usage of deprecated xlm elementree getchildren() method
Use list(node) as suggested by the deprecation warning.
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 09:43:23 +0200] rev 12330
[style] Make cubicweb/web/views/wdoc.py flake8-clean
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 28 Jun 2018 09:38:38 +0200] rev 12329
[py3] Use six.text_type instead of unicode in wdoc views
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 28 Jun 2018 10:17:15 +0200] rev 12328
[views/startup] drop a duplicate rql query in manage view
Counting entities in `nb` is already done above this code, regression introduced by a85db6fa
Denis Laxalde <denis.laxalde@logilab.fr> [Tue, 19 Jun 2018 09:13:40 +0200] rev 12327
Merge with 3.26
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 18 Jun 2018 10:04:08 +0200] rev 12326
Added tag 3.26.4, debian/3.26.4-1 for changeset e1c1af68db86
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 18 Jun 2018 08:58:47 +0200] rev 12325
[pkg] Version 3.26.4
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Jun 2018 17:45:26 +0200] rev 12324
[py3] ensure AjaxController return bytes
publish() must return bytes, when the @ajaxfunc decorated method return None, this raised:
TypeError: You cannot set Response.body to a text object (use Response.text)
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Jun 2018 11:09:17 +0200] rev 12323
[py3] Let InstanceCommand.run_arg() always return an int
The caller of this method (which is method "run_args") does `max(status,
self.run_arg(appid))` and run_arg might return None if the underlying
<cmdname>_instance method returns None. On python3 max(1, None) breaks
with "TypeError: unorderable types: int() > NoneType()". So we enforce
run_arg() method to return an integer even if the underlying method
returns None.
This fixes call of "cubicweb-ctl i18ninstance" with Python3.
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 18 Jun 2018 08:47:03 +0200] rev 12322
[test] Use cubicweb-file < 2.0.0
From version 2.0.0, cubicweb-file moved to new-style layout (Python
package) but we still expect it to be an old-style cube in CubicWeb's
tests (WebconfigTC in web/test/unittest_webconfig.py).
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 06 Jun 2018 11:56:15 +0200] rev 12321
[py3] Decode subprocess stdout in toolsutils.show_diffs()
On Python 3, subprocess' pipes are bytes stream so we must decode them
before printing. Without this change, diff of configuration files (e.g.
all-in-one.conf as displayed upon instance upgrade) will rendered as a
single line on Python 3.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 03 May 2018 16:47:51 +0200] rev 12320
[python3] make sure staticcontroller returns a bytes instance
The ``publish()`` method of controller is supposed to return a
bytes intsance. Returning a text_type instance will crash later
on in the Pyramid response handler when assigning content to
``response.body`` (at least in Python3)::
>>> from pyramid.response import Response
>>> r = Response()
>>> r.body = ''
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/adim/.virtualenvs/…/response.py", line 562, in _body__set
raise TypeError(msg)
TypeError: You cannot set Response.body to a text object (use Response.text)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 03 May 2018 14:05:26 +0200] rev 12319
[python3] use inspect.getfullargspec instead of inspect.getargspec
The latter is now deprecated
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Jun 2018 17:45:26 +0200] rev 12318
[py3] ensure AjaxController return bytes
publish() must return bytes, when the @ajaxfunc decorated method return None, this raised:
TypeError: You cannot set Response.body to a text object (use Response.text)
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 13 Jun 2018 11:09:17 +0200] rev 12317
[py3] Let InstanceCommand.run_arg() always return an int
The caller of this method (which is method "run_args") does `max(status,
self.run_arg(appid))` and run_arg might return None if the underlying
<cmdname>_instance method returns None. On python3 max(1, None) breaks
with "TypeError: unorderable types: int() > NoneType()". So we enforce
run_arg() method to return an integer even if the underlying method
returns None.
This fixes call of "cubicweb-ctl i18ninstance" with Python3.
Philippe Pepiot <philippe.pepiot@logilab.fr> [Fri, 15 Jun 2018 17:42:50 +0200] rev 12316
Depend on cubicweb-file >= 2.0.0
I applied V1 of the patch, but V2 contained this extra hunk...
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 11 Jun 2018 16:50:38 +0200] rev 12315
[test] Update webconfig's tests accounting for cubicweb-file being now a package
WebconfigTC.test_locate_all_files and WebconfigTC.test_locate_resource
assumed that cubicweb-file was installed in <share>/cubes/file whereas,
from the latest release, it is now a standard Python package thus
installed in site-packages as cubicweb_file. We simply update base
directory of these two tests.
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 06 Jun 2018 18:54:24 +0200] rev 12314
[widgets.js] fix obvious bug detected by sonar
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 06 Jun 2018 18:37:16 +0200] rev 12313
[views/uicfg] obvious bug detected by sonar
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 06 Jun 2018 14:20:16 +0200] rev 12312
[style] Make toolsutils.py flake8-clean
Run `autopep8 --max-line-length 100 -i cubicweb/toolsutils.py` and fixed
unused imports.
Denis Laxalde <denis.laxalde@logilab.fr> [Wed, 06 Jun 2018 11:56:15 +0200] rev 12311
[py3] Decode subprocess stdout in toolsutils.show_diffs()
On Python 3, subprocess' pipes are bytes stream so we must decode them
before printing. Without this change, diff of configuration files (e.g.
all-in-one.conf as displayed upon instance upgrade) will rendered as a
single line on Python 3.
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 03 May 2018 16:47:51 +0200] rev 12310
[python3] make sure staticcontroller returns a bytes instance
The ``publish()`` method of controller is supposed to return a
bytes intsance. Returning a text_type instance will crash later
on in the Pyramid response handler when assigning content to
``response.body`` (at least in Python3)::
>>> from pyramid.response import Response
>>> r = Response()
>>> r.body = ''
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/adim/.virtualenvs/…/response.py", line 562, in _body__set
raise TypeError(msg)
TypeError: You cannot set Response.body to a text object (use Response.text)
Adrien Di Mascio <Adrien.DiMascio@logilab.fr> [Thu, 03 May 2018 14:05:26 +0200] rev 12309
[python3] use inspect.getfullargspec instead of inspect.getargspec
The latter is now deprecated
Laurent Wouters <lwouters@cenotelie.fr> [Wed, 25 Apr 2018 15:29:25 +0200] rev 12308
[utils] Fixes compatiblity of QueryCache with expected dict interface
QueryCache is expected to mimick the interface of the dict built-in. The current
__iter__ implementation breaks this expectation by iterating over key, value
pairs instead of only the keys.
This changeset fixes this issue by changing the __iter__ implementation to
iterate over the keys in the cache and providing an implementation of the items
method with a contract identical to the dict build-in (return a copy of the key-
value pairs within the dictionary as a list).
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 15:21:18 +0200] rev 12307
[test/statsd] add tests for cubicweb.statsd_logger
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 17:16:44 +0200] rev 12306
[utils] Implements __iter__ on QueryCache
In order to be able to iterate over the currently cached queries (so that they
may be inspected and invalidated), this changeset implementes __iter__ on
QueryCache.
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 17:30:43 +0200] rev 12305
[utils] Added new get method to QueryCache
The new get method enables the retrieval an item in the cache by specifying a
default value so that in the absence of an item for the key, the default value
is returned.
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 15:21:38 +0200] rev 12304
[test/rset] typo
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 11:22:17 +0200] rev 12303
[utils] Fixed issue in clearing QueryCache
When trying to add an item in a full QueryCache, the cache tries to make room.
It tries to list and remove non-permanent items with a transient counter (number
of times it has been requested). However, there is a pathological case where
items could be non-permanent but still not have a transient counter because they
were added, but never requested. In some cases, the full cache could be flushed,
including the permanent items.
This changeset attempts to fix this issue by only dropping the non-permanent
items that did not hav a transient counter.
David Douard <david.douard@logilab.fr> [Mon, 13 Nov 2017 16:08:58 +0100] rev 12302
[statsd] add a statsd_timethis context manager
This context manager allows to report to statsd the execution time of any
piece of code, without the need for it to be a function or a method, like::
def some_function():
do_stuff()
with statsd_timethis('some context message'):
do_that()
ensure_this()
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 14:16:14 +0200] rev 12301
[test/rset] add tests for ResultSet.first() and .last() methods
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 14:04:43 +0200] rev 12300
[test/rset] flake8
David Douard <david.douard@logilab.fr> [Tue, 24 Apr 2018 13:55:20 +0200] rev 12299
[rset] update copyright
David Douard <david.douard@logilab.fr> [Thu, 21 Sep 2017 16:29:26 +0200] rev 12298
[rset] add convenient first() and last() methods on ResultSet
These make life easier for the heavy user of the CW shell.
Also aliases entities() with all(); so we end with a pretty consistant set:
- .one()
- .first()
- .last()
- .all()
Laurent Wouters <lwouters@cenotelie.fr> [Tue, 24 Apr 2018 10:19:42 +0200] rev 12297
[server] Fixed issue with the adapters cache of a cloned EditedEntity
The adapters' cache of the entity within an EditedEntity used to be copied along
the entity itself during a cloning operation of the EditedEntity. This raises
an issue when the adapters' cache is not empty and contains cached values
linking to transaction-specific data (or the transaction itself). This prevents
the clone EditedEntity being used in a transaction outside the one that created
it.
This change resets the adapters' cache of the new copy so that no cached value
remain. The new copy can then be used in a new transaction afterwards.