Tue, 31 Mar 2020 18:22:05 +0200 [server] Make connection pooler configurable and set better default values draft default tip
Philippe Pepiot <ph@itsalwaysdns.eu> [Tue, 31 Mar 2020 18:22:05 +0200] rev 12966
[server] Make connection pooler configurable and set better default values Drop the configuration connections-pool-size and add new configurations options: * connections-pool-min-size. Set to 0 by default so we open connections only when needed. This avoid opening min-size*processes connections at startup, which is, it think, a good default. * connections-pool-max-size. Set to 0 (unlimited) by default, so we move the bottleneck to postgresql. * connections-idle-timeout. Set to 10 minutes. I don't have arguments about this except that this is the default in pgbouncer.
Tue, 31 Mar 2020 18:12:20 +0200 [server] Enhance connections-pooler-enabled documentation draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Tue, 31 Mar 2020 18:12:20 +0200] rev 12965
[server] Enhance connections-pooler-enabled documentation
Tue, 31 Mar 2020 16:17:14 +0200 [server] move connection pooler initialization logic to get_cnxset() draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Tue, 31 Mar 2020 16:17:14 +0200] rev 12964
[server] move connection pooler initialization logic to get_cnxset() This avoid complex logic in Repository initialization.
Mon, 30 Mar 2020 15:46:12 +0200 [server] dynamically close idle database connections draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Mon, 30 Mar 2020 15:46:12 +0200] rev 12963
[server] dynamically close idle database connections When pool hasn't been empty for `idle_timeout` time, start closing connections.
Mon, 30 Mar 2020 15:45:40 +0200 [server] implement dynamic database pooler draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Mon, 30 Mar 2020 15:45:40 +0200] rev 12962
[server] implement dynamic database pooler Opening too much database connection has a cost at startup and also PostgreSQL as a maximum number of connection (100 by default). This get worse when starting multiple wsgi processes, since each process has its own database pool. Instead of opening `connections-pool-size` connections to the database at startup, just open one and open more only when needed.
Mon, 30 Mar 2020 15:30:02 +0200 [server] use a LifoQueue in _CnxSetPool draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Mon, 30 Mar 2020 15:30:02 +0200] rev 12961
[server] use a LifoQueue in _CnxSetPool In postgresql, some cache is attached to the connection. Using a LifoQueue (last-in, first-out) makes a few connections to get the most load which give best performance.
Mon, 30 Mar 2020 15:23:56 +0200 [server] extract creating a new cnxset in a _new_cnxset() helper draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Mon, 30 Mar 2020 15:23:56 +0200] rev 12960
[server] extract creating a new cnxset in a _new_cnxset() helper So we can move logic specific to _CnxSetPool here.
Mon, 30 Mar 2020 15:19:23 +0200 [server] avoid a possible race condition on _CnxSetPool.close() draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Mon, 30 Mar 2020 15:19:23 +0200] rev 12959
[server] avoid a possible race condition on _CnxSetPool.close() The pool could become empty between time to check and time to use.
Mon, 30 Mar 2020 15:17:10 +0200 [server] extract "no pooler" CnxSet class to a _BaseCnxSet class draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Mon, 30 Mar 2020 15:17:10 +0200] rev 12958
[server] extract "no pooler" CnxSet class to a _BaseCnxSet class So we get rid of "if self._queue is None" in each method of _CnxSetPool Also add helper get_cnxset(source, size) to instantiate the correct pooler class.
Tue, 31 Mar 2020 19:15:03 +0200 [server] prevent returning closed cursor to the database pool draft
Philippe Pepiot <ph@itsalwaysdns.eu> [Tue, 31 Mar 2020 19:15:03 +0200] rev 12957
[server] prevent returning closed cursor to the database pool In since c8c6ad8 init_repository use repo.internal_cnx() instead of repo.system_source.get_connection() so it use the pool and we should not close cursors from the pool before returning it back. Otherwise we may have "connection already closed" error. This bug only trigger when connection-pool-size = 1. Since we are moving to use a dynamic pooler we need to get this fixed. This does not occur with sqlite since the connection wrapper instantiate new cursor everytime, but this occur with other databases.
Fri, 20 Mar 2020 14:34:07 +0100 [rql] Store selected variables for RQL select queries in ResultSet (#17218476)
Laurent Wouters <lwouters@cenotelie.fr> [Fri, 20 Mar 2020 14:34:07 +0100] rev 12931
[rql] Store selected variables for RQL select queries in ResultSet (#17218476) By storing the name of the selected variables for RQL select queries in the ResultSet (within the "variables" attribute), the information can be passed down to specific protocols, e.g. rqlio that may wish to pass is down further to clients. In turn, clients can then choose to present the results of RQL select queries as symbolic bindings using the names used in the query's projection, instead of ordinal arrays.
Thu, 12 Mar 2020 15:38:51 +0100 [debugtoolbar] Make SQL and RQL tables sortable
Simon Chabot <simon.chabot@logilab.fr> [Thu, 12 Mar 2020 15:38:51 +0100] rev 12930
[debugtoolbar] Make SQL and RQL tables sortable It's usefull to sort query by duration for instance.
Thu, 12 Mar 2020 15:37:59 +0100 [debugtoolbar] Do not render CW controller panel when no controller got collected
Simon Chabot <simon.chabot@logilab.fr> [Thu, 12 Mar 2020 15:37:59 +0100] rev 12929
[debugtoolbar] Do not render CW controller panel when no controller got collected This can happen on pure pyramid applications for instance.
Wed, 18 Mar 2020 11:30:05 +0100 [doc] Fix bugs in code examples
Elodie Thieblin <ethieblin@logilab.fr> [Wed, 18 Mar 2020 11:30:05 +0100] rev 12928
[doc] Fix bugs in code examples
Wed, 18 Mar 2020 11:29:30 +0100 [doc] Remove zone cube which causes to crash on install
Elodie Thieblin <ethieblin@logilab.fr> [Wed, 18 Mar 2020 11:29:30 +0100] rev 12927
[doc] Remove zone cube which causes to crash on install The zone cube is not compatible with python3.
Wed, 18 Mar 2020 11:45:35 +0100 [doc] Precise which component to modify in gallery tutorial
Elodie Thieblin <ethieblin@logilab.fr> [Wed, 18 Mar 2020 11:45:35 +0100] rev 12926
[doc] Precise which component to modify in gallery tutorial
Wed, 18 Mar 2020 10:20:29 +0100 [doc] Fix example about Community view customization
Elodie Thieblin <ethieblin@logilab.fr> [Wed, 18 Mar 2020 10:20:29 +0100] rev 12925
[doc] Fix example about Community view customization
Wed, 18 Mar 2020 09:58:05 +0100 [doc] Add command pip install of new cube
Elodie Thieblin <ethieblin@logilab.fr> [Wed, 18 Mar 2020 09:58:05 +0100] rev 12924
[doc] Add command pip install of new cube
Wed, 18 Mar 2020 09:57:48 +0100 [doc] update cubicweb version
Elodie Thieblin <ethieblin@logilab.fr> [Wed, 18 Mar 2020 09:57:48 +0100] rev 12923
[doc] update cubicweb version
Wed, 18 Mar 2020 09:24:02 +0100 [doc, blog tutorial] Remove cubicweb-dev from pip dependencies
Elodie Thieblin <ethieblin@logilab.fr> [Wed, 18 Mar 2020 09:24:02 +0100] rev 12922
[doc, blog tutorial] Remove cubicweb-dev from pip dependencies This pip package does not exist
Wed, 18 Mar 2020 09:22:45 +0100 [doc] Add requirement for gettext and graphviz
Elodie Thieblin <ethieblin@logilab.fr> [Wed, 18 Mar 2020 09:22:45 +0100] rev 12921
[doc] Add requirement for gettext and graphviz When running the tutorial from scratch, I had errors because these two packages were not installed.
Wed, 18 Mar 2020 13:18:21 +0100 Added tag 3.27.3, debian/3.27.3-1 for changeset 85284f028266 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 18 Mar 2020 13:18:21 +0100] rev 12920
Added tag 3.27.3, debian/3.27.3-1 for changeset 85284f028266
Wed, 18 Mar 2020 13:18:04 +0100 [pkg] version 3.27.3 3.27 3.27.3 debian/3.27.3-1
Philippe Pepiot <philippe.pepiot@logilab.fr> [Wed, 18 Mar 2020 13:18:04 +0100] rev 12919
[pkg] version 3.27.3
Tue, 17 Mar 2020 13:36:27 +0100 [pkg] require python >= 3.6 in debian packaging
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 17 Mar 2020 13:36:27 +0100] rev 12918
[pkg] require python >= 3.6 in debian packaging
Tue, 17 Mar 2020 13:34:54 +0100 [pkg] merge 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 17 Mar 2020 13:34:54 +0100] rev 12917
[pkg] merge 3.27 Require python >= 3.6 since recent typing notations require >= 3.6
Tue, 17 Mar 2020 13:31:50 +0100 [pkg] add python3 only pypi specifiers 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 17 Mar 2020 13:31:50 +0100] rev 12916
[pkg] add python3 only pypi specifiers This is only for pypi statistics purposes. Also add 'Programming Language :: Python', looks obvious but seems to be sane to have this as well.
Tue, 17 Mar 2020 13:30:50 +0100 [pkg] the wheel is no longer universal 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 17 Mar 2020 13:30:50 +0100] rev 12915
[pkg] the wheel is no longer universal Since we're only py3 compatible. In practice this changes nothing since we don't upload cubicweb wheels to pypi.
Tue, 17 Mar 2020 13:29:08 +0100 [pkg] require python >= 3.4 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 17 Mar 2020 13:29:08 +0100] rev 12914
[pkg] require python >= 3.4 This avoid pip pulling a version that does not run on python2 when using a python2 environment. Since we already released some 3.27 releases in pypi, I think we should release 3.27.3 and remove releases 3.27.2, 3.27.1 and 3.27.0 from pypi.
Wed, 11 Mar 2020 11:18:40 +0100 merge public heads
Fabien Amarger <fabien.amarger@logilab.fr> [Wed, 11 Mar 2020 11:18:40 +0100] rev 12913
merge public heads
Tue, 10 Mar 2020 17:37:43 +0100 [web.views] add Link alternate in HTTP response header in HTML view
Fabien Amarger <fabien.amarger@logilab.fr> [Tue, 10 Mar 2020 17:37:43 +0100] rev 12912
[web.views] add Link alternate in HTTP response header in HTML view Team: famarger, schabot, nchauvat, fferry, ethieblin
Tue, 10 Mar 2020 23:47:50 +0100 [pyramid] add routes /{eid} and /{etype}/{eid} to return RDF when rdf mimetype in Accept HTTP headers
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Tue, 10 Mar 2020 23:47:50 +0100] rev 12911
[pyramid] add routes /{eid} and /{etype}/{eid} to return RDF when rdf mimetype in Accept HTTP headers * simplify pyramid/resources.py by making the classmethod that returns a closure a simple function and removing the EntityResource and ETYpeResource classes that are barely used * replace predicate MatchIsETypePredicate with MatchIsETypeAndEIDPredicate Team: famarger, schabot, nchauvat, fferry, ethieblin
Tue, 10 Mar 2020 23:44:45 +0100 [entities] simplify rdf generation and add a generic rdf adapter
Elodie Thieblin <ethieblin@logilab.fr> [Tue, 10 Mar 2020 23:44:45 +0100] rev 12910
[entities] simplify rdf generation and add a generic rdf adapter Team: famarger, schabot, nchauvat, fferry, ethieblin
Thu, 05 Mar 2020 17:50:00 +0100 Added tag 3.26.17, debian/3.26.17-1 for changeset 5c6d242069b6 3.26
Simon Chabot <simon.chabot@logilab.fr> [Thu, 05 Mar 2020 17:50:00 +0100] rev 12909
Added tag 3.26.17, debian/3.26.17-1 for changeset 5c6d242069b6
Thu, 05 Mar 2020 17:49:34 +0100 [pkg] version 3.26.17 3.26 3.26.17 debian/3.26.17-1
Simon Chabot <simon.chabot@logilab.fr> [Thu, 05 Mar 2020 17:49:34 +0100] rev 12908
[pkg] version 3.26.17
Thu, 05 Mar 2020 16:03:26 +0100 [fix, calendar] Ensure that the buffer is a string 3.26
Simon Chabot <simon.chabot@logilab.fr> [Thu, 05 Mar 2020 16:03:26 +0100] rev 12907
[fix, calendar] Ensure that the buffer is a string 'unicode' is not defined in python3
Thu, 05 Mar 2020 10:41:30 +0100 Added tag 3.26.16, debian/3.26.16-1 for changeset fb6aecd654a3 3.26
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 05 Mar 2020 10:41:30 +0100] rev 12906
Added tag 3.26.16, debian/3.26.16-1 for changeset fb6aecd654a3
Thu, 05 Mar 2020 10:41:14 +0100 [pkg] version 3.26.16 3.26 3.26.16 debian/3.26.16-1
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 05 Mar 2020 10:41:14 +0100] rev 12905
[pkg] version 3.26.16
Tue, 25 Feb 2020 23:31:30 +0100 [ldapfeed] add option to enable starttls on ldap servers 3.26
Julien Tayon <julien.tayon@logilab.fr> [Tue, 25 Feb 2020 23:31:30 +0100] rev 12904
[ldapfeed] add option to enable starttls on ldap servers Modern ldap servers connection often use, or even require starttls.
Tue, 25 Feb 2020 23:30:32 +0100 [ldapfeed] re-enable ldap tests for python 3.7 3.26
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 25 Feb 2020 23:30:32 +0100] rev 12903
[ldapfeed] re-enable ldap tests for python 3.7 This was disabled because ldap3<2 wasn't compatible with python 3.7 While I'm here, drop unseless newline.
Tue, 25 Feb 2020 23:22:58 +0100 [ldapfeed] make code compatible with ldap3>=2 3.26
Julien Tayon <julien.tayon@logilab.fr> [Tue, 25 Feb 2020 23:22:58 +0100] rev 12902
[ldapfeed] make code compatible with ldap3>=2 * Some constants have been renamed. * Directly bind when data-cnx-dn/data-cnx-password are provided, some servers, including ours require this. * Use raise_exceptions=True to avoid ignored ldap errors * raise in case of failed anonymous bind * do not search for "dn" attribute because this raise an "invalid attribute" with new ldap3 versions * Password is now returned as bytes, so no longer need to encode them before crypt. * modification_date is now returned as a datetime object Co-Authored-By: Philippe Pepiot <philippe.pepiot@logilab.fr> Closes #16073071
Tue, 25 Feb 2020 22:45:42 +0100 [ldapfeed] use LDAP_SCOPES to find user-scope 3.26
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 25 Feb 2020 22:45:42 +0100] rev 12901
[ldapfeed] use LDAP_SCOPES to find user-scope We already have LDAP_SCOPES dict defining possible scopes, this avoid possible code injection from config... Thus we can drop global variables already defined in LDAP_SCOPES since they are not used directly anymore.
Thu, 05 Mar 2020 10:15:38 +0100 Merge 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 05 Mar 2020 10:15:38 +0100] rev 12900
Merge 3.27
Thu, 05 Mar 2020 09:54:49 +0100 Added tag 3.27.2, debian/3.27.2-1 for changeset e731c31eaed0 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 05 Mar 2020 09:54:49 +0100] rev 12899
Added tag 3.27.2, debian/3.27.2-1 for changeset e731c31eaed0
Thu, 05 Mar 2020 09:54:35 +0100 [pkg] version 3.27.2 3.27 3.27.2 debian/3.27.2-1
Philippe Pepiot <philippe.pepiot@logilab.fr> [Thu, 05 Mar 2020 09:54:35 +0100] rev 12898
[pkg] version 3.27.2
Tue, 25 Feb 2020 23:31:30 +0100 [ldapfeed] add option to enable starttls on ldap servers 3.27
Julien Tayon <julien.tayon@logilab.fr> [Tue, 25 Feb 2020 23:31:30 +0100] rev 12897
[ldapfeed] add option to enable starttls on ldap servers Modern ldap servers connection often use, or even require starttls.
Tue, 25 Feb 2020 23:30:32 +0100 [ldapfeed] re-enable ldap tests for python 3.7 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 25 Feb 2020 23:30:32 +0100] rev 12896
[ldapfeed] re-enable ldap tests for python 3.7 This was disabled because ldap3<2 wasn't compatible with python 3.7 While I'm here, drop unseless newline.
Tue, 25 Feb 2020 23:22:58 +0100 [ldapfeed] make code compatible with ldap3>=2 3.27
Julien Tayon <julien.tayon@logilab.fr> [Tue, 25 Feb 2020 23:22:58 +0100] rev 12895
[ldapfeed] make code compatible with ldap3>=2 * Some constants have been renamed. * Directly bind when data-cnx-dn/data-cnx-password are provided, some servers, including ours require this. * Use raise_exceptions=True to avoid ignored ldap errors * raise in case of failed anonymous bind * do not search for "dn" attribute because this raise an "invalid attribute" with new ldap3 versions * Password is now returned as bytes, so no longer need to encode them before crypt. * modification_date is now returned as a datetime object Co-Authored-By: Philippe Pepiot <philippe.pepiot@logilab.fr> Closes #16073071
Tue, 25 Feb 2020 22:45:42 +0100 [ldapfeed] use LDAP_SCOPES to find user-scope 3.27
Philippe Pepiot <philippe.pepiot@logilab.fr> [Tue, 25 Feb 2020 22:45:42 +0100] rev 12894
[ldapfeed] use LDAP_SCOPES to find user-scope We already have LDAP_SCOPES dict defining possible scopes, this avoid possible code injection from config... Thus we can drop global variables already defined in LDAP_SCOPES since they are not used directly anymore.
Tue, 25 Feb 2020 22:18:15 +0100 [ldapfeed] drop now useless import from __future__ 3.27
Julien Tayon <julien.tayon@logilab.fr> [Tue, 25 Feb 2020 22:18:15 +0100] rev 12893
[ldapfeed] drop now useless import from __future__
Fri, 28 Feb 2020 17:11:01 +0100 [rdf] Add a basic foaf adapter for CWUser
Simon Chabot <simon.chabot@logilab.fr> [Fri, 28 Feb 2020 17:11:01 +0100] rev 12892
[rdf] Add a basic foaf adapter for CWUser By the way, use RDFLib namespaces
Fri, 14 Feb 2020 18:15:55 +0100 [rdf] add functions and tools to generate rdf graph
Simon Chabot <simon.chabot@logilab.fr> [Fri, 14 Feb 2020 18:15:55 +0100] rev 12891
[rdf] add functions and tools to generate rdf graph
Wed, 12 Feb 2020 13:58:17 +0100 [pyramid, predicate] Add a predicate that matches if the pattern is an eid in the DB
Simon Chabot <simon.chabot@logilab.fr> [Wed, 12 Feb 2020 13:58:17 +0100] rev 12890
[pyramid, predicate] Add a predicate that matches if the pattern is an eid in the DB
Wed, 13 Mar 2019 11:06:46 +0100 [server.querier] construct ExecutionPlan from schema since querier is not needed
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 13 Mar 2019 11:06:46 +0100] rev 12889
[server.querier] construct ExecutionPlan from schema since querier is not needed
Wed, 19 Feb 2020 19:49:01 +0100 [server.querier] remove useless attribute Querier._planner
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 19 Feb 2020 19:49:01 +0100] rev 12888
[server.querier] remove useless attribute Querier._planner
Wed, 13 Mar 2019 11:02:39 +0100 [server.querier] remove useless indirection Querier.rqlannotator
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 13 Mar 2019 11:02:39 +0100] rev 12887
[server.querier] remove useless indirection Querier.rqlannotator
Wed, 13 Mar 2019 10:40:05 +0100 [server.querier] remove useless indirections ExecutionPlan.{syssource,rqlhelper,schema}
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 13 Mar 2019 10:40:05 +0100] rev 12886
[server.querier] remove useless indirections ExecutionPlan.{syssource,rqlhelper,schema} Simpler is better.
Wed, 13 Mar 2019 10:26:15 +0100 [server.rqlannotation] rename SQLGenAnnotator to RQLAnnotator
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 13 Mar 2019 10:26:15 +0100] rev 12885
[server.rqlannotation] rename SQLGenAnnotator to RQLAnnotator This class is in charge of annotating the RQL syntax tree with various bits of information, like (in)variance, use of full-text-index, etc. It is a needed step before the generation of SQL, but does not touch SQL directly. Hence RQLAnnotator seems a better name.
Fri, 15 Mar 2019 21:35:59 +0100 [server] drop system_source_cnx for a simpler internal API
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Fri, 15 Mar 2019 21:35:59 +0100] rev 12884
[server] drop system_source_cnx for a simpler internal API system_source_cnx() can be replaced with source_cnx(). If system_source_cnx() is called with dbms_system_base=False, it is strictly equivalent to calling source_cnx() with the same source, privileges and interactivity. If system_source_cnx() is called with dbms_system_base=True, it is equivalent to calling source_cnx() with the system database and the same source, privileges and interactivity. No use of the default value for 'special_privs' was found in the code.
Wed, 13 Mar 2019 00:01:35 +0100 [server/sources/native] refactor to remove useless injection
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 13 Mar 2019 00:01:35 +0100] rev 12883
[server/sources/native] refactor to remove useless injection
Wed, 13 Mar 2019 00:15:48 +0100 [cwvreg] rename CWRegistryStore.solutions to compute_var_types
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Wed, 13 Mar 2019 00:15:48 +0100] rev 12882
[cwvreg] rename CWRegistryStore.solutions to compute_var_types solutions() seems an obscure name to me. Since this method computes the types of the variables of the RQL query string, let us rename it to compute_var_types.
Sun, 02 Feb 2020 22:15:38 +0100 [doc] replace python with python3 in shell commands
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Sun, 02 Feb 2020 22:15:38 +0100] rev 12881
[doc] replace python with python3 in shell commands
Sat, 08 Feb 2020 22:57:59 +0100 [adapters] move class EntityAdapter from cubicweb.view to cubicweb.entity
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Sat, 08 Feb 2020 22:57:59 +0100] rev 12880
[adapters] move class EntityAdapter from cubicweb.view to cubicweb.entity The adapter mechanism is not specific to the use of views. Moving the class the cubicweb.entity makes this clearer.
Sat, 15 Feb 2020 17:08:15 +0100 [doc] replace tabs with spaces (and make linter happy)
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Sat, 15 Feb 2020 17:08:15 +0100] rev 12879
[doc] replace tabs with spaces (and make linter happy)
Sat, 08 Feb 2020 22:20:45 +0100 [setup] add rdflib-jsonld to dependencies for cubicweb[rdf]
Nicolas Chauvat <nicolas.chauvat@logilab.fr> [Sat, 08 Feb 2020 22:20:45 +0100] rev 12878
[setup] add rdflib-jsonld to dependencies for cubicweb[rdf]
(0) -10000 -3000 -1000 -300 -100 -64 tip