Changes between Version 26 and Version 27 of Python3


Ignore:
Timestamp:
2020-10-06T10:38:41Z (4 years ago)
Author:
chadwhitacre
Comment:

Start better organizing who is doing what

Legend:

Unmodified
Added
Removed
Modified
  • Python3

    v26 v27  
    17175. `deactivate` the virtualenv (or switch shells) and run `tox -e py36` to exercise the whole suite.
    1818
    19 == How to choose a module to port ==
     19== Who is doing what ==
    2020
    21 * We started by porting `allmydata.util`, since it's necessary for other packages. That's mostly done.
    22 * Itamar is currently porting `allmydata.storage`.
     21|| `allmydata.storage` || Itamar ||
     22|| `allmydata.node` || Ross ||
     23|| `allmydata.immutable`† || Chad ||
     24|| `allmydata.mutable`† || ? ||
    2325
    24 Some things you can take on:
    25 
    26 * `allmydata.node` is pretty standalone.
    27 * Start the more complex process (see below re spaghetti dependencies) on `allmydata.mutable`. That is, pick a test module, and port just the test module, but making necessary changes elsewhere to make the tests pass. Repeat until all tests modules for `allmydata.immutable` are ported.
    28 
     26† Expect spaghetti (see below).
    2927
    3028== The porting process, big picture ==
     
    44428. Submit for code review.
    45439. Check coverage report. If there are uncovered lines, see if you can add tests, or at least file a separate ticket for adding coverage.
     44
     45=== When ports get harder due to spaghetti dependencies ===
     46
     47As the port progresses, the simple "port module + its test module" gets difficult, since everything ends up depending on everything else. Here's one way to approach this:
     48
     491. Port ''only'' the test module. This involves many Python 3 fixes to lots of other modules, but they are not officially ported, they're just inched along just enough to make the tests pass. Since the test module is officially ported, regressions to the Python 3 port still are prevented.
     502. Then, port the corresponding module.
    4651
    4752=== Porting a specific Python file ===
     
    100105Leaking Future objects (newints, new dicts, new bytes) in module API can break existing code on Python 2. So need to be careful not to do that. For that reason int isn't in the suggested `from builtins import ...` list above.
    101106
    102 == When ports get harder due to spaghetti dependencies ==
    103 
    104 As the port progresses, the simple "port module + its test module" gets difficult, since everything ends up depending on everything else.
    105 Here's one way to approach this:
    106 
    107 1. Port ''only'' the test module. This involves many Python 3 fixes to lots of other modules, but they are not officially ported, they're just inched along just enough to make the tests pass. Since the test module is officially ported, regressions to the Python 3 port still are prevented.
    108 2. Then, port the corresponding module.
    109 
    110107== Other notes ==
    111108