Moving from Python 2 to Python 3 and bump to v2.5
Reason for the change
The Python driver is outdated, and lagging behind.
Description
This PR covers the work of moving from Python 2 to Python 3, doing a major refactoring on the code and bumps to it support upcoming RethinkDB 2.5.0 features, shuch as: format.
Although a major refactoring was done as part of this PR, some features are still left to do. Beside lacking temporary features (like supporting dump, export, etc, which should live as a separate tool), this PR is not complete yet.
To see what's left, check the "Checklist" section.
Code examples
Calling the new format command
>>> import rethinkdb as r
>>> conn = r.connect()
>>> r.format(r"Hello {name}, I can count to 1..2..{count}.", {r"name": "Bob", "count": 3, }).run(conn)
'Hello Bob, I can count to 1..2..3.'
Calling rethinkdb management commands
# Calling the dump command
$ rethinkdb-dump
# ... or ...
$ rethinkdb dump
# Calling the export command
$ rethinkdb-export
# ... or ...
$ rethinkdb export
# Calling the import command
$ rethinkdb-import
# ... or ...
$ rethinkdb import
# Calling the index_rebuild command
$ rethinkdb-index_rebuild
# ... or ...
$ rethinkdb index_rebuild
# Calling the repl command
$ rethinkdb-repl
# ... or ...
$ rethinkdb repl
# Calling the restore command
$ rethinkdb-restore
# ... or ...
$ rethinkdb restore
Checklist
- [x] Port
asyncio_net - [x] Port
gevent_net - [x] Port
tornado_net - [x] Port
trio_net - [x] Port
twisted_net - [x] ~Regenerate
docs.py~ - [x] Support
dumpcommands - [x] Support
exportcommands - [x] Support
importcommands - [x] Support
index_rebuildcommands - [x] Support
restorecommands - [x] Revisit the
CHANGELOG.rstand extend it - [x] I have read and agreed to the RethinkDB Contributor License Agreement
References
ReQL Polyglot test results
test/rql_test/test-runner --interpreter py3.8 polyglot -j8
/Users/gabor/Developer/rethinkdb/rethinkdb/test/rql_test/../common/utils.py:63: UserWarning: Supplied JRuby driver path (RUBY_DRIVER) was not valid: /Users/gabor/Developer/rethinkdb/rethinkdb/build/drivers/ruby/lib
warnings.warn('Supplied %s driver path (%s) was not valid: %s' % (name, info['envName'], os.environ[info['envName']]))
Using rethinkdb binary /Users/gabor/Developer/rethinkdb/rethinkdb/build/debug_clang/rethinkdb
Python 3.8 interpreter: /Users/gabor/.pyenv/versions/rethinkdb-python/bin/python, driver: /Users/gabor/Developer/rethinkdb/rethinkdb-python/rethinkdb
== Starting: polyglot/changefeeds/include_states.py3.8 (T+ 1.3 sec)
== Starting: polyglot/aggregation.py3.8 (T+ 1.8 sec)
== Starting: polyglot/changefeeds/point.py3.8 (T+ 2.8 sec)
== Starting: polyglot/arity.py3.8 (T+ 4.7 sec)
== Starting: polyglot/changefeeds/sindex.py3.8 (T+ 6.2 sec)
== Passed: polyglot/changefeeds/include_states.py3.8 in 5.4 sec + 0.0 sec setup (T+ 7.4 sec)
== Starting: polyglot/changefeeds/table.py3.8 (T+ 7.7 sec)
== Starting: polyglot/changefeeds/edge.py3.8 (T+ 8.4 sec)
== Starting: polyglot/changefeeds/idxcopy.py3.8 (T+ 12.4 sec)
== Passed: polyglot/arity.py3.8 in 7.8 sec + 0.3 sec setup (T+ 14.3 sec)
== Starting: polyglot/control.py3.8 (T+ 14.8 sec)
== Passed: polyglot/changefeeds/point.py3.8 in 11.0 sec + 0.2 sec setup (T+ 15.5 sec)
== Starting: polyglot/changefeeds/squash.py3.8 (T+ 15.6 sec)
== Passed: polyglot/changefeeds/sindex.py3.8 in 8.4 sec + 0.3 sec setup (T+ 15.9 sec)
== Starting: polyglot/datum/binary.py3.8 (T+ 16.4 sec)
== Passed: polyglot/datum/binary.py3.8 in 0.8 sec + 0.8 sec setup (T+ 19.4 sec)
== Starting: polyglot/datum/bool.py3.8 (T+ 19.5 sec)
== Starting: polyglot/datum/array.py3.8 (T+ 20.8 sec)
== Passed: polyglot/datum/bool.py3.8 in 0.2 sec + 0.6 sec setup (T+ 21.6 sec)
== Starting: polyglot/datum/null.py3.8 (T+ 21.7 sec)
== Passed: polyglot/datum/array.py3.8 in 0.3 sec + 0.9 sec setup (T+ 22.8 sec)
== Starting: polyglot/datum/number.py3.8 (T+ 22.9 sec)
== Passed: polyglot/datum/null.py3.8 in 0.3 sec + 0.4 sec setup (T+ 23.4 sec)
== Starting: polyglot/datum/object.py3.8 (T+ 23.5 sec)
== Passed: polyglot/datum/number.py3.8 in 0.4 sec + 0.7 sec setup (T+ 24.6 sec)
== Starting: polyglot/datum/string.py3.8 (T+ 24.7 sec)
== Passed: polyglot/datum/object.py3.8 in 0.1 sec + 0.6 sec setup (T+ 24.7 sec)
== Starting: polyglot/datum/typeof.py3.8 (T+ 24.7 sec)
== Passed: polyglot/datum/typeof.py3.8 in 0.5 sec + 0.7 sec setup (T+ 26.9 sec)
== Passed: polyglot/datum/string.py3.8 in 0.2 sec + 1.1 sec setup (T+ 27.0 sec)
== Starting: polyglot/default.py3.8 (T+ 27.0 sec)
== Starting: polyglot/datum/uuid.py3.8 (T+ 27.0 sec)
== Passed: polyglot/changefeeds/squash.py3.8 in 10.4 sec + 0.6 sec setup (T+ 27.9 sec)
== Starting: polyglot/format.py3.8 (T+ 28.2 sec)
== Passed: polyglot/datum/uuid.py3.8 in 0.1 sec + 0.8 sec setup (T+ 28.6 sec)
== Starting: polyglot/geo/constructors.py3.8 (T+ 28.6 sec)
== Passed: polyglot/changefeeds/idxcopy.py3.8 in 15.8 sec + 0.2 sec setup (T+ 29.2 sec)
== Passed: polyglot/format.py3.8 in 0.1 sec + 0.2 sec setup (T+ 29.3 sec)
== Starting: polyglot/geo/indexing.py3.8 (T+ 29.4 sec)
== Starting: polyglot/geo/geojson.py3.8 (T+ 29.5 sec)
== Passed: polyglot/geo/constructors.py3.8 in 0.6 sec + 0.2 sec setup (T+ 30.1 sec)
== Starting: polyglot/geo/intersection_inclusion.py3.8 (T+ 30.2 sec)
== Passed: polyglot/geo/geojson.py3.8 in 0.1 sec + 0.5 sec setup (T+ 31.0 sec)
== Starting: polyglot/geo/operations.py3.8 (T+ 31.0 sec)
== Passed: polyglot/geo/intersection_inclusion.py3.8 in 0.3 sec + 0.4 sec setup (T+ 31.7 sec)
== Starting: polyglot/geo/primitives.py3.8 (T+ 31.7 sec)
== Passed: polyglot/changefeeds/edge.py3.8 in 22.9 sec + 0.3 sec setup (T+ 32.3 sec)
== Passed: polyglot/geo/operations.py3.8 in 0.4 sec + 0.2 sec setup (T+ 32.5 sec)
== Starting: polyglot/json.py3.8 (T+ 32.6 sec)
== Starting: polyglot/joins.py3.8 (T+ 32.6 sec)
== Passed: polyglot/geo/primitives.py3.8 in 0.4 sec + 0.3 sec setup (T+ 33.5 sec)
== Starting: polyglot/limits.py3.8 (T+ 33.5 sec)
== Passed: polyglot/json.py3.8 in 0.4 sec + 0.5 sec setup (T+ 34.2 sec)
== Starting: polyglot/match.py3.8 (T+ 34.2 sec)
== Passed: polyglot/default.py3.8 in 6.5 sec + 1.0 sec setup (T+ 35.1 sec)
== Starting: polyglot/math_logic/add.py3.8 (T+ 35.1 sec)
== Passed: polyglot/math_logic/add.py3.8 in 0.4 sec + 0.9 sec setup (T+ 38.3 sec)
== Starting: polyglot/math_logic/aliases.py3.8 (T+ 38.4 sec)
== Passed: polyglot/math_logic/aliases.py3.8 in 0.2 sec + 1.9 sec setup (T+ 42.4 sec)
== Starting: polyglot/math_logic/bit.py3.8 (T+ 42.4 sec)
== Passed: polyglot/math_logic/bit.py3.8 in 0.2 sec + 0.4 sec setup (T+ 43.4 sec)
== Starting: polyglot/math_logic/comparison.py3.8 (T+ 43.5 sec)
== Passed: polyglot/changefeeds/table.py3.8 in 35.4 sec + 0.4 sec setup (T+ 44.3 sec)
== Starting: polyglot/math_logic/div.py3.8 (T+ 45.0 sec)
== Passed: polyglot/math_logic/comparison.py3.8 in 0.4 sec + 0.2 sec setup (T+ 45.4 sec)
== Starting: polyglot/math_logic/floor_ceil_round.py3.8 (T+ 45.5 sec)
== Passed: polyglot/math_logic/div.py3.8 in 0.4 sec + 0.6 sec setup (T+ 46.8 sec)
== Passed: polyglot/math_logic/floor_ceil_round.py3.8 in 0.4 sec + 0.2 sec setup (T+ 46.8 sec)
== Starting: polyglot/math_logic/logic.py3.8 (T+ 46.8 sec)
== Starting: polyglot/math_logic/math.py3.8 (T+ 46.9 sec)
== Passed: polyglot/match.py3.8 in 12.3 sec + 0.3 sec setup (T+ 47.6 sec)
== Passed: polyglot/math_logic/logic.py3.8 in 0.3 sec + 0.2 sec setup (T+ 47.8 sec)
== Starting: polyglot/math_logic/mul.py3.8 (T+ 47.8 sec)
== Starting: polyglot/math_logic/mod.py3.8 (T+ 47.9 sec)
== Passed: polyglot/math_logic/math.py3.8 in 0.3 sec + 0.4 sec setup (T+ 48.3 sec)
== Starting: polyglot/math_logic/sub.py3.8 (T+ 48.3 sec)
== Passed: polyglot/control.py3.8 in 32.0 sec + 0.7 sec setup (T+ 48.3 sec)
== Passed: polyglot/math_logic/mul.py3.8 in 0.3 sec + 0.4 sec setup (T+ 49.1 sec)
== Starting: polyglot/meta/dbs.py3.8 (T+ 49.2 sec)
== Starting: polyglot/meta/composite.py3.8 (T+ 49.2 sec)
== Passed: polyglot/math_logic/sub.py3.8 in 0.1 sec + 0.2 sec setup (T+ 49.2 sec)
== Starting: polyglot/meta/grant.py3.8 (T+ 49.2 sec)
== Passed: polyglot/math_logic/mod.py3.8 in 0.4 sec + 0.4 sec setup (T+ 49.4 sec)
== Starting: polyglot/meta/table.py3.8 (T+ 49.5 sec)
== Passed: polyglot/geo/indexing.py3.8 in 19.2 sec + 0.3 sec setup (T+ 50.1 sec)
== Passed: polyglot/limits.py3.8 in 15.0 sec + 0.3 sec setup (T+ 50.2 sec)
== Starting: polyglot/mutation/delete.py3.8 (T+ 50.5 sec)
== Starting: polyglot/mutation/atomic_get_set.py3.8 (T+ 50.8 sec)
== Passed: polyglot/meta/dbs.py3.8 in 0.3 sec + 0.7 sec setup (T+ 51.5 sec)
== Starting: polyglot/mutation/insert.py3.8 (T+ 51.5 sec)
== Passed: polyglot/meta/grant.py3.8 in 10.0 sec + 0.8 sec setup (T+ 61.5 sec)
== Starting: polyglot/mutation/replace.py3.8 (T+ 62.2 sec)
== Passed: polyglot/mutation/delete.py3.8 in 11.6 sec + 0.6 sec setup (T+ 63.6 sec)
== Starting: polyglot/mutation/sync.py3.8 (T+ 64.3 sec)
== Passed: polyglot/mutation/atomic_get_set.py3.8 in 19.9 sec + 0.6 sec setup (T+ 73.7 sec)
== Starting: polyglot/mutation/update.py3.8 (T+ 74.5 sec)
== Passed: polyglot/mutation/replace.py3.8 in 15.6 sec + 0.2 sec setup (T+ 80.0 sec)
== Starting: polyglot/mutation/write_hook.py3.8 (T+ 81.0 sec)
== Passed: polyglot/mutation/sync.py3.8 in 33.2 sec + 0.9 sec setup (T+ 100.2 sec)
== Starting: polyglot/polymorphism.py3.8 (T+ 100.3 sec)
== Passed: polyglot/mutation/write_hook.py3.8 in 19.1 sec + 1.7 sec setup (T+ 103.0 sec)
== Starting: polyglot/random.py3.8 (T+ 103.3 sec)
== Passed: polyglot/mutation/update.py3.8 in 27.7 sec + 0.6 sec setup (T+ 104.5 sec)
== Passed: polyglot/random.py3.8 in 0.4 sec + 0.9 sec setup (T+ 105.2 sec)
== Starting: polyglot/regression/1001.py3.8 (T+ 105.2 sec)
== Starting: polyglot/range.py3.8 (T+ 105.2 sec)
== Passed: polyglot/range.py3.8 in 0.2 sec + 0.3 sec setup (T+ 106.4 sec)
== Starting: polyglot/regression/1005.py3.8 (T+ 106.5 sec)
== Passed: polyglot/regression/1005.py3.8 in 0.2 sec + 0.5 sec setup (T+ 108.2 sec)
== Starting: polyglot/regression/1023.py3.8 (T+ 108.3 sec)
== Passed: polyglot/polymorphism.py3.8 in 7.5 sec + 1.3 sec setup (T+ 110.1 sec)
== Starting: polyglot/regression/1081.py3.8 (T+ 110.6 sec)
== Passed: polyglot/regression/1081.py3.8 in 0.1 sec + 0.4 sec setup (T+ 111.8 sec)
== Starting: polyglot/regression/1132.py3.8 (T+ 111.8 sec)
== Passed: polyglot/regression/1132.py3.8 in 0.1 sec + 0.7 sec setup (T+ 113.6 sec)
== Starting: polyglot/regression/1133.py3.8 (T+ 113.6 sec)
== Passed: polyglot/regression/1133.py3.8 in 0.2 sec + 0.2 sec setup (T+ 114.9 sec)
== Starting: polyglot/regression/1155.py3.8 (T+ 114.9 sec)
== Passed: polyglot/regression/1023.py3.8 in 8.4 sec + 0.5 sec setup (T+ 118.4 sec)
== Passed: polyglot/regression/1001.py3.8 in 11.7 sec + 0.3 sec setup (T+ 118.5 sec)
== Starting: polyglot/regression/1179.py3.8 (T+ 118.7 sec)
== Starting: polyglot/regression/1468.py3.8 (T+ 118.9 sec)
== Passed: polyglot/aggregation.py3.8 in 118.4 sec + 0.1 sec setup (T+ 121.0 sec)
== Starting: polyglot/regression/1789.py3.8 (T+ 122.6 sec)
== Passed: polyglot/regression/1155.py3.8 in 7.7 sec + 0.3 sec setup (T+ 124.1 sec)
== Starting: polyglot/regression/2052.py3.8 (T+ 124.4 sec)
== Passed: polyglot/regression/2052.py3.8 in 0.3 sec + 0.7 sec setup (T+ 127.0 sec)
== Starting: polyglot/regression/2696.py3.8 (T+ 127.1 sec)
== Passed: polyglot/regression/1468.py3.8 in 7.6 sec + 0.6 sec setup (T+ 127.8 sec)
== Passed: polyglot/regression/1179.py3.8 in 7.9 sec + 0.5 sec setup (T+ 127.9 sec)
== Starting: polyglot/regression/2709.py3.8 (T+ 128.4 sec)
== Starting: polyglot/regression/2697.py3.8 (T+ 128.5 sec)
== Passed: polyglot/regression/2696.py3.8 in 0.2 sec + 0.2 sec setup (T+ 129.4 sec)
== Starting: polyglot/regression/2710.py3.8 (T+ 129.5 sec)
== Passed: polyglot/regression/2710.py3.8 in 0.3 sec + 0.2 sec setup (T+ 130.8 sec)
== Starting: polyglot/regression/2766.py3.8 (T+ 130.8 sec)
== Passed: polyglot/regression/2766.py3.8 in 0.4 sec + 0.7 sec setup (T+ 133.1 sec)
== Starting: polyglot/regression/2767.py3.8 (T+ 133.1 sec)
== Passed: polyglot/regression/1789.py3.8 in 8.8 sec + 0.6 sec setup (T+ 133.2 sec)
== Passed: polyglot/meta/composite.py3.8 in 82.4 sec + 0.6 sec setup (T+ 133.4 sec)
== Starting: polyglot/regression/2838.py3.8 (T+ 133.4 sec)
== Starting: polyglot/regression/2774.py3.8 (T+ 133.8 sec)
== Passed: polyglot/regression/2697.py3.8 in 11.9 sec + 1.1 sec setup (T+ 142.5 sec)
== Starting: polyglot/regression/2930.py3.8 (T+ 143.1 sec)
== Passed: polyglot/regression/2767.py3.8 in 11.8 sec + 0.8 sec setup (T+ 147.0 sec)
== Starting: polyglot/regression/3057.py3.8 (T+ 147.9 sec)
== Passed: polyglot/regression/3057.py3.8 in 0.4 sec + 1.4 sec setup (T+ 151.0 sec)
== Starting: polyglot/regression/3059.py3.8 (T+ 151.1 sec)
== Passed: polyglot/regression/3059.py3.8 in 0.2 sec + 0.6 sec setup (T+ 152.8 sec)
== Starting: polyglot/regression/309.py3.8 (T+ 152.8 sec)
== Passed: polyglot/regression/2774.py3.8 in 17.4 sec + 0.8 sec setup (T+ 153.3 sec)
== Starting: polyglot/regression/3444.py3.8 (T+ 153.7 sec)
== Passed: polyglot/mutation/insert.py3.8 in 105.4 sec + 0.4 sec setup (T+ 159.0 sec)
== Starting: polyglot/regression/354.py3.8 (T+ 159.7 sec)
== Passed: polyglot/regression/354.py3.8 in 0.2 sec + 0.3 sec setup (T+ 160.9 sec)
== Starting: polyglot/regression/3637.py3.8 (T+ 160.9 sec)
== Passed: polyglot/regression/3444.py3.8 in 7.6 sec + 0.2 sec setup (T+ 162.0 sec)
== Starting: polyglot/regression/370.py3.8 (T+ 162.5 sec)
== Passed: polyglot/regression/309.py3.8 in 8.5 sec + 0.5 sec setup (T+ 162.6 sec)
== Starting: polyglot/regression/3745.py3.8 (T+ 163.1 sec)
== Passed: polyglot/regression/2838.py3.8 in 36.1 sec + 1.2 sec setup (T+ 171.5 sec)
== Starting: polyglot/regression/3759.py3.8 (T+ 172.1 sec)
== Passed: polyglot/regression/3637.py3.8 in 10.8 sec + 0.2 sec setup (T+ 172.5 sec)
== Starting: polyglot/regression/4030.py3.8 (T+ 172.8 sec)
== Passed: polyglot/regression/2709.py3.8 in 43.3 sec + 0.9 sec setup (T+ 173.2 sec)
== Starting: polyglot/regression/4132.py3.8 (T+ 173.5 sec)
== Passed: polyglot/regression/3745.py3.8 in 9.1 sec + 0.6 sec setup (T+ 173.6 sec)
== Starting: polyglot/regression/4146.py3.8 (T+ 174.0 sec)
== Passed: polyglot/regression/370.py3.8 in 11.1 sec + 0.4 sec setup (T+ 174.7 sec)
== Starting: polyglot/regression/4431.py3.8 (T+ 174.7 sec)
== Passed: polyglot/regression/4431.py3.8 in 0.2 sec + 0.3 sec setup (T+ 175.9 sec)
== Starting: polyglot/regression/4462.py3.8 (T+ 176.0 sec)
== Passed: polyglot/regression/3759.py3.8 in 5.8 sec + 0.4 sec setup (T+ 178.7 sec)
== Starting: polyglot/regression/4465.py3.8 (T+ 179.1 sec)
== Passed: polyglot/regression/4030.py3.8 in 7.0 sec + 0.2 sec setup (T+ 180.4 sec)
== Passed: polyglot/regression/4146.py3.8 in 5.9 sec + 0.2 sec setup (T+ 180.6 sec)
== Passed: polyglot/regression/4132.py3.8 in 6.3 sec + 0.4 sec setup (T+ 180.6 sec)
== Starting: polyglot/regression/4501.py3.8 (T+ 180.6 sec)
== Starting: polyglot/regression/453.py3.8 (T+ 180.9 sec)
== Starting: polyglot/regression/4582.py3.8 (T+ 181.0 sec)
== Passed: polyglot/joins.py3.8 in 148.8 sec + 0.5 sec setup (T+ 182.7 sec)
== Passed: polyglot/regression/4462.py3.8 in 6.1 sec + 0.3 sec setup (T+ 183.7 sec)
== Starting: polyglot/regression/46.py3.8 (T+ 184.0 sec)
== Starting: polyglot/regression/4591.py3.8 (T+ 185.7 sec)
== Passed: polyglot/regression/4465.py3.8 in 6.5 sec + 0.6 sec setup (T+ 187.3 sec)
== Starting: polyglot/regression/469.py3.8 (T+ 187.3 sec)
== Passed: polyglot/regression/4591.py3.8 in 0.4 sec + 1.0 sec setup (T+ 188.1 sec)
== Starting: polyglot/regression/4729.py3.8 (T+ 188.1 sec)
== Passed: polyglot/regression/4501.py3.8 in 7.8 sec + 0.4 sec setup (T+ 189.9 sec)
== Starting: polyglot/regression/522.py3.8 (T+ 190.4 sec)
== Passed: polyglot/regression/4582.py3.8 in 8.9 sec + 0.2 sec setup (T+ 191.0 sec)
== Passed: polyglot/regression/453.py3.8 in 9.3 sec + 0.4 sec setup (T+ 191.2 sec)
== Starting: polyglot/regression/5222.py3.8 (T+ 191.3 sec)
== Starting: polyglot/regression/5241.py3.8 (T+ 191.6 sec)
== Passed: polyglot/regression/46.py3.8 in 7.2 sec + 1.1 sec setup (T+ 193.4 sec)
== Starting: polyglot/regression/5438.py3.8 (T+ 193.4 sec)
== Passed: polyglot/regression/4729.py3.8 in 11.2 sec + 0.9 sec setup (T+ 200.9 sec)
== Passed: polyglot/regression/522.py3.8 in 9.6 sec + 0.4 sec setup (T+ 201.1 sec)
== Starting: polyglot/regression/545.py3.8 (T+ 201.2 sec)
== Passed: polyglot/regression/469.py3.8 in 13.0 sec + 0.3 sec setup (T+ 201.3 sec)
== Starting: polyglot/regression/5481.py3.8 (T+ 201.3 sec)
== Starting: polyglot/regression/546.py3.8 (T+ 201.8 sec)
== Passed: polyglot/regression/546.py3.8 in 0.1 sec + 0.4 sec setup (T+ 203.2 sec)
== Starting: polyglot/regression/5542.py3.8 (T+ 203.2 sec)
== Passed: polyglot/regression/5241.py3.8 in 11.8 sec + 0.7 sec setup (T+ 204.9 sec)
== Starting: polyglot/regression/568.py3.8 (T+ 205.2 sec)
== Passed: polyglot/regression/5438.py3.8 in 10.4 sec + 1.0 sec setup (T+ 205.8 sec)
== Starting: polyglot/regression/578.py3.8 (T+ 206.2 sec)
== Passed: polyglot/regression/545.py3.8 in 9.6 sec + 0.9 sec setup (T+ 212.9 sec)
== Starting: polyglot/regression/579.py3.8 (T+ 213.4 sec)
== Passed: polyglot/regression/5542.py3.8 in 10.1 sec + 0.3 sec setup (T+ 214.2 sec)
== Passed: polyglot/regression/5481.py3.8 in 11.5 sec + 0.9 sec setup (T+ 214.3 sec)
== Starting: polyglot/regression/6108.py3.8 (T+ 214.5 sec)
== Starting: polyglot/regression/619.py3.8 (T+ 214.7 sec)
== Passed: polyglot/regression/6108.py3.8 in 0.3 sec + 0.7 sec setup (T+ 216.0 sec)
== Passed: polyglot/regression/619.py3.8 in 0.1 sec + 0.6 sec setup (T+ 216.0 sec)
== Starting: polyglot/regression/6191.py3.8 (T+ 216.0 sec)
== Starting: polyglot/regression/665.py3.8 (T+ 216.0 sec)
== Passed: polyglot/regression/568.py3.8 in 9.6 sec + 1.0 sec setup (T+ 217.3 sec)
== Starting: polyglot/regression/678.py3.8 (T+ 217.7 sec)
== Passed: polyglot/regression/5222.py3.8 in 24.2 sec + 1.1 sec setup (T+ 217.8 sec)
== Passed: polyglot/regression/6191.py3.8 in 0.4 sec + 0.6 sec setup (T+ 217.9 sec)
== Starting: polyglot/regression/730.py3.8 (T+ 217.9 sec)
== Starting: polyglot/regression/718.py3.8 (T+ 218.1 sec)
== Passed: polyglot/regression/578.py3.8 in 11.6 sec + 0.6 sec setup (T+ 219.1 sec)
== Passed: polyglot/regression/730.py3.8 in 0.2 sec + 0.3 sec setup (T+ 219.1 sec)
== Starting: polyglot/regression/767.py3.8 (T+ 219.1 sec)
== Starting: polyglot/regression/757.py3.8 (T+ 220.2 sec)
== Passed: polyglot/regression/767.py3.8 in 0.4 sec + 0.4 sec setup (T+ 221.0 sec)
== Starting: polyglot/regression/831.py3.8 (T+ 221.1 sec)
== Passed: polyglot/regression/579.py3.8 in 6.9 sec + 0.4 sec setup (T+ 221.7 sec)
== Passed: polyglot/regression/757.py3.8 in 0.3 sec + 0.5 sec setup (T+ 222.4 sec)
== Starting: polyglot/sindex/api.py3.8 (T+ 222.4 sec)
== Starting: polyglot/selection.py3.8 (T+ 222.4 sec)
== Passed: polyglot/regression/665.py3.8 in 8.7 sec + 0.9 sec setup (T+ 226.9 sec)
== Starting: polyglot/sindex/nullsinstrings.py3.8 (T+ 227.0 sec)
== Passed: polyglot/meta/table.py3.8 in 176.6 sec + 0.5 sec setup (T+ 227.9 sec)
== Passed: polyglot/regression/678.py3.8 in 8.2 sec + 0.6 sec setup (T+ 227.9 sec)
== Starting: polyglot/sindex/status.py3.8 (T+ 227.9 sec)
== Passed: polyglot/regression/718.py3.8 in 8.1 sec + 0.5 sec setup (T+ 228.1 sec)
== Starting: polyglot/timeout.py3.8 (T+ 228.5 sec)
== Starting: polyglot/times/api.py3.8 (T+ 228.9 sec)
== Passed: polyglot/regression/831.py3.8 in 7.4 sec + 0.8 sec setup (T+ 229.8 sec)
== Passed: polyglot/times/api.py3.8 in 0.2 sec + 0.4 sec setup (T+ 230.0 sec)
== Starting: polyglot/times/index.py3.8 (T+ 230.0 sec)
== Starting: polyglot/times/constructors.py3.8 (T+ 230.1 sec)
== Passed: polyglot/times/constructors.py3.8 in 0.3 sec + 0.4 sec setup (T+ 231.4 sec)
== Starting: polyglot/times/portions.py3.8 (T+ 231.5 sec)
== Passed: polyglot/times/portions.py3.8 in 0.3 sec + 0.3 sec setup (T+ 232.6 sec)
== Starting: polyglot/times/shim.py3.8 (T+ 232.7 sec)
== Passed: polyglot/times/shim.py3.8 in 0.2 sec + 0.3 sec setup (T+ 234.0 sec)
== Starting: polyglot/times/time_arith.py3.8 (T+ 234.1 sec)
== Passed: polyglot/times/time_arith.py3.8 in 0.2 sec + 0.3 sec setup (T+ 235.1 sec)
== Starting: polyglot/times/timezones.py3.8 (T+ 235.1 sec)
== Passed: polyglot/times/timezones.py3.8 in 0.1 sec + 0.4 sec setup (T+ 236.2 sec)
== Starting: polyglot/transform/array.py3.8 (T+ 236.2 sec)
== Passed: polyglot/sindex/nullsinstrings.py3.8 in 8.4 sec + 0.6 sec setup (T+ 236.7 sec)
== Passed: polyglot/transform/array.py3.8 in 0.2 sec + 0.2 sec setup (T+ 237.0 sec)
== Starting: polyglot/transform/map.py3.8 (T+ 237.0 sec)
== Starting: polyglot/transform/fold.py3.8 (T+ 237.1 sec)
== Passed: polyglot/transform/map.py3.8 in 0.2 sec + 0.2 sec setup (T+ 238.1 sec)
== Starting: polyglot/transform/object.py3.8 (T+ 238.1 sec)
== Passed: polyglot/transform/object.py3.8 in 0.2 sec + 0.2 sec setup (T+ 238.9 sec)
== Starting: polyglot/transform/table.py3.8 (T+ 238.9 sec)
== Passed: polyglot/times/index.py3.8 in 11.6 sec + 0.4 sec setup (T+ 242.6 sec)
== Starting: polyglot/transform/unordered_map.py3.8 (T+ 242.9 sec)
== Passed: polyglot/transform/table.py3.8 in 4.4 sec + 0.2 sec setup (T+ 244.0 sec)
== Starting: polyglot/transformation.py3.8 (T+ 244.3 sec)
== Passed: polyglot/selection.py3.8 in 24.2 sec + 0.8 sec setup (T+ 248.1 sec)
== Passed: polyglot/transform/fold.py3.8 in 13.7 sec + 0.2 sec setup (T+ 251.3 sec)
== Passed: polyglot/regression/2930.py3.8 in 112.2 sec + 0.7 sec setup (T+ 256.6 sec)
== Passed: polyglot/timeout.py3.8 in 29.6 sec + 0.8 sec setup (T+ 259.2 sec)
== Passed: polyglot/transform/unordered_map.py3.8 in 16.2 sec + 0.3 sec setup (T+ 259.8 sec)
== Passed: polyglot/transformation.py3.8 in 20.3 sec + 0.3 sec setup (T+ 265.2 sec)
== Passed: polyglot/sindex/api.py3.8 in 51.2 sec + 1.5 sec setup (T+ 275.4 sec)
== Passed: polyglot/sindex/status.py3.8 in 160.8 sec + 0.5 sec setup (T+ 389.4 sec)
== Successfully passed all 138 tests in 389.75 seconds!
Do you want to help?
Great! Fix an issue, add unit tests, add more docs, help with integration tests, help porting a net module or a command[^1] and open a PR against this branch, so we can keep the effort focused.
[^1]: ~moving the commands has some prerequisite that will be implemented by @gabor-boros.~ -- resolved by https://github.com/rethinkdb/rethinkdb-python/pull/279
cc: @lsabi @Inveracity
Code Climate has analyzed commit abbefd7e and detected 4 issues on this pull request.
Here's the issue category breakdown:
| Category | Count |
|---|---|
| Complexity | 4 |
The test coverage on the diff in this pull request is 73.0% (70% is the threshold).
This pull request will bring the total coverage in the repository to 69.4%.
View more on Code Climate.
@Inveracity @lsabi FYI: the base for management commands are done, so it could be possible to migrate the commands (though those will need a somewhat big refactor when porting)
@gabor-boros The basis is good, but dumb question: should we merge it already without the commands and then port the commands or shall we port all commands before releasing?
The basis is good, but dumb question: should we merge it already without the commands and then port the commands or shall we port all commands before releasing?
@lsabi I would say let's port the rest before merging. The reason is that I'm pretty sure that there are some people who use the driver's master branch instead of a git commit hash or tagged version. Yes, when we merge this PR we will break some integrations for them, but at least they will be able to upgrade to use the new driver which is functioning.
Especially that we would need some folks who can check the driver before merging.
It might be obvious, but I would like to remember that restore/dump/import, etc., all the CLI commands are used by everyone, not only Python driver users.
I agree with the initial comment that those tools should live somewhere else. I would go as far as to say that it ideally should be part of the main binary installation and have no Python dependency, if possible.
And, yes, I realize this is likely abandoned... oh well, I'm commenting anyway, just in case someone picks up where it was left...
@irae unfortunately, we're very busy with our lives and find almost no time to work on this project.
Back when we started porting the code to the latest python version, we also started implementing the cli commands. I'm no good at cli programs, so I got stuck at a certain point. Also, the export/import/... commands still need to be refactored and improved.
If you have some knowledge about python and cli commands, feel free to contribute. Otherwise I'll try as soon as I find some time to learn the cli library.