<commit_before>Things to do before 0.9.0 
========================= 



py/bin
-----------

* review py/bin scripts abit
  py.test 
  py.rest 
  py.lookup  
  py.cleanup  
  py.countloc  

review all py lib documentation
-------------------------------------

* (hpk, in-progress) rename py/documentation to py/doc
  (check web page and pypy usage of it)

streamline exported API 
-------------------------------------

* (hpk, should be done) move not-to-be-exported Gateway() methods to _ - methods. 
* docstrings  for all exported API

* remove: 
  test.compat.TestCAse 

* check and likely remove already deprecated API
 
* remove from public namespace: 
  XXX consider py.magic. invoke/revoke/patch/revert 
 
* make "_" namespace:  
  py.path.extpy -> py.path._extpy
  py.log -> py._log (pypy!) 

* review py.io and write py.io.dupfile docstring

  (guido - added docstring, and code looks okay (what was the reason for the
  review? anything specific?)

* re-consider what to do with read and write methods of py.path classes (since
  there are places that check for file-ness by doing hasattr(... 'write'))

packaging
-------------------------------------

* debian and TAR/zip packages for py lib, 
  particularly look into C module issues (greenlet most importantly) 

* do something about c-extensions both on unix-ish 
  versus win32 systems 

* ensure compatibility with Python 2.3 - 2.5, 
  see what is missing for 2.2 

* optional: support setuptools (eggs?) installs, and instally
  from pypi (and register pylib there) 

* see if things work on Win32 (partially done) 

* refine and implement `releasescheme`_ 

.. _releasescheme: releasescheme.html

APIGEN / source viewer
-------------------------------------

* (DONE) make py.test --apigen=PATH_TO_SCRIPT 
  collect tracing information and call the apigen 
  script to produce api and source code documentation

* deploy the above "py.test --apigen" run on codespeak 
  regularly, determine directory locations and URL namespace design. 

* (DONE, XXX functions/methods?) integrate rest directive into 
  py/documentation/conftest.py 
  with help code from py.__.rest.directive.... 
  make sure that the txt files in py/documentation/ use it

testing
-----------

* windows tests (rev 36514 passes without errors, many skips)

  (guido tested again, and fixed newly broken tests, all work again now)

* these should all work on 0.9 and on the py lib and pypy:
    - running "py.test -s" 
    - running "py.test --pdb" 
    - running "py.test --looponfailing" 
    - running "py.test" distributed on some hosts

  (guido tested all on win32, everything works except --dist (requires
  os.fork to work))

* see why startcapture() does not use FD-based 
  "py.io.OutErrCapture" to isolate standard output. 
  use that check if all py and PyPy tests pass
  as good as they do without. 

* make --box run on the trunk. This requires having some sort of
  is_boxed() function, while having it on config object seems
  to be not that smart idea.

* (DONE more or less) try to be as 2.2 compatible as possible 
  (use e.g. py.builtin.enumerate instead of "enumerate" directly) 

* (DONE for rsession) have all sessions check their options via
  Session.fixoptions() and have session-particular tests and checks
  accordingly. 

distributed testing / RSession
------------------------------------

* (DONE, except apigen) cleanup initialisation of config / get rid of pkgdir
* unify option names (dist_*) 
* (optional) see if more of py/test/session.py's Session can be reused 
* have dist_rsyncroots be relative to the conftest.py file
  so that projects can define it for themselves, e.g. 
  pypy/conftest.py would contain::
  
      dist_rsyncroots = ['../pypy', '../py']

  for this there probably needs to be a::

     config.getvalue_and_conftestpath()

  method with tests and documentation, and with providing
  the right example. 

code quality
-----------------

* no function implementation longer than 30 lines 

* no lines longer than 80 characters 

* review the pylib issue tracker
  (cfbolz: done: what has a 0.8.0 or a 0.9.0 tag should be looked at again)


py.test
-------

* (needs review) adjust py.test documentation to reflect new
  collector/session architecture 

* (in-progress) document py.test's conftest.py approach

* (postponed, likely) py.test fails to parse strangely formatted code after assertion failure

Missing docstrings
------------------

::

    code.Traceback.recursionindex misses a docstring<commit_msg>[svn r37535] update on that<commit_after>Things to do before 0.9.0 
========================= 



py/bin
-----------

* review py/bin scripts abit
  py.test 
  py.rest 
  py.lookup  
  py.cleanup  
  py.countloc  

review all py lib documentation
-------------------------------------

* (hpk, in-progress) rename py/documentation to py/doc
  (check web page and pypy usage of it)

streamline exported API 
-------------------------------------

* (hpk, should be done) move not-to-be-exported Gateway() methods to _ - methods. 
* docstrings  for all exported API

* remove: 
  test.compat.TestCAse 

* check and likely remove already deprecated API
 
* remove from public namespace: 
  XXX consider py.magic. invoke/revoke/patch/revert 
 
* make "_" namespace:  
  py.path.extpy -> py.path._extpy
  py.log -> py._log (pypy!) 

* review py.io and write py.io.dupfile docstring

  (guido - added docstring, and code looks okay (what was the reason for the
  review? anything specific?)

* re-consider what to do with read and write methods of py.path classes (since
  there are places that check for file-ness by doing hasattr(... 'write'))

packaging
-------------------------------------

* debian and TAR/zip packages for py lib, 
  particularly look into C module issues (greenlet most importantly) 

* do something about c-extensions both on unix-ish 
  versus win32 systems 

* ensure compatibility with Python 2.3 - 2.5, 
  see what is missing for 2.2 

* optional: support setuptools (eggs?) installs, and instally
  from pypi (and register pylib there) 

* see if things work on Win32 (partially done) 

* refine and implement `releasescheme`_ 

.. _releasescheme: releasescheme.html

APIGEN / source viewer
-------------------------------------

* (DONE) make py.test --apigen=PATH_TO_SCRIPT 
  collect tracing information and call the apigen 
  script to produce api and source code documentation

* deploy the above "py.test --apigen" run on codespeak 
  regularly, determine directory locations and URL namespace design. 

* (DONE, XXX functions/methods?) integrate rest directive into 
  py/documentation/conftest.py 
  with help code from py.__.rest.directive.... 
  make sure that the txt files in py/documentation/ use it

testing
-----------

* windows tests (rev 36514 passes without errors, many skips)

  (guido tested again, and fixed newly broken tests, all work again now)

* these should all work on 0.9 and on the py lib and pypy:
    - running "py.test -s" 
    - running "py.test --pdb" 
    - running "py.test --looponfailing" 
    - running "py.test" distributed on some hosts

  (guido tested all on win32, everything works except --dist (requires
  os.fork to work))

* see why startcapture() does not use FD-based 
  "py.io.OutErrCapture" to isolate standard output. 
  use that check if all py and PyPy tests pass
  as good as they do without. 

* make --box run on the trunk. This requires having some sort of
  is_boxed() function, while having it on config object seems
  to be not that smart idea.

* (DONE more or less) try to be as 2.2 compatible as possible 
  (use e.g. py.builtin.enumerate instead of "enumerate" directly) 

* (DONE for rsession) have all sessions check their options via
  Session.fixoptions() and have session-particular tests and checks
  accordingly. 

distributed testing / RSession
------------------------------------

* (DONE, except apigen) cleanup initialisation of config / get rid of pkgdir
* unify option names (dist_*) 
* (optional) see if more of py/test/session.py's Session can be reused 
* (DONE, but slightly different way)
  have dist_rsyncroots be relative to the conftest.py file
  so that projects can define it for themselves, e.g. 
  pypy/conftest.py would contain::
  
      dist_rsyncroots = ['../pypy', '../py']

  for this there probably needs to be a::

     config.getvalue_and_conftestpath()

  method with tests and documentation, and with providing
  the right example. 

  way it's done:

  dist_rsyncroots refer *only* to a directory where it's placed.
  This avoids tons of confusion, like what to do if different conftests
  point to the same place. So by now pypy rootdir should contain
  conftest.py with::

    dist_rsyncroots = ['pypy', 'pylib', 'lib-python']

code quality
-----------------

* no function implementation longer than 30 lines 

* no lines longer than 80 characters 

* review the pylib issue tracker
  (cfbolz: done: what has a 0.8.0 or a 0.9.0 tag should be looked at again)


py.test
-------

* (needs review) adjust py.test documentation to reflect new
  collector/session architecture 

* (in-progress) document py.test's conftest.py approach

* (postponed, likely) py.test fails to parse strangely formatted code after assertion failure

Missing docstrings
------------------

::

    code.Traceback.recursionindex misses a docstring
{'fraction_non_alphanumeric': 0.1277231952157198, 'fraction_numerical': 0.0077958137548056385, 'mean_word_length': 2.7370311252992816, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1303742', 'n_tokens_mistral': 2862, 'n_tokens_neox': 2634, 'n_words': 1138}