Differences between revisions 3 and 8 (spanning 5 versions)
Revision 3 as of 2005-02-14 01:39:35
Size: 2311
Comment:
Revision 8 as of 2005-02-14 01:54:01
Size: 2687
Comment:
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
Since these modules are implemented in C, it would be nice to have a Java implementation for Jython. A pure python implementation of datetime can be find at http://cvs.sf.net/viewcvs.py/python/python/nondist/sandbox/datetime/ .  I plan on using this implementation extensively as the Java version is developed. If it turns out that a Java implementation is infeasible or will take too long, we could always fall back on using this module directly. Since this module is implemented in C, it would be nice to have a Java implementation for Jython. A pure Python implementation of datetime can be found at
 *
http://cvs.sf.net/viewcvs.py/python/python/nondist/sandbox/datetime/ .
I plan on using this implementation extensively as the Java version is developed. If it turns out that a Java implementation is infeasible or will take too long, we could always fall back on using this module directly.
Line 10: Line 12:
My original plan was to write the entire module in Java, using mxDateTime for guidance http://cvs.sourceforge.net/viewcvs.py/zxpy/zxDateTime/ .  However, after reading this addition to JythonModulesInJava by BrianZimmer: My original plan was to write the entire module in Java, using mxDateTime for guidance
 *
http://cvs.sourceforge.net/viewcvs.py/zxpy/zxDateTime/ .

However, after reading this addition by BrianZimmer to JythonModulesInJava:
Line 21: Line 26:
I've re-thought that approach, and I now plan to start with the pure python datetime and replace the date related code with java.util.Calendar code. And after discussing it with Brian, I've re-thought that approach, and I now plan to start with the pure python datetime and replace the date related code with java.util.Calendar code.
Line 24: Line 29:
||'''Jython Class'''||'''Strategy'''|| ||'''Python Class (from pure Python implementation)'''||'''Strategy'''||
Line 34: Line 39:
For the short term I plan to use the Python unittests as the definition of the datetime class, and will not try to go beyond the CPython implementation. This may change once Jython starts to catch up with the leading edge of CPython development. FrankWierzbicki 2005-02-13

For the short term I plan to use the Python unit tests as the absolute definition of the datetime module, and will not try to go beyond the CPython implementation. This means (for example) that dates will be limited to 1-9999AD, because that is what the CPython unit tests expect. Even though java.util.Calendar does not have this limitation, I will enforce it. This may change once Jython starts to catch up with the leading edge of CPython development and we can productively review the unit tests themselves.

FrankWierzbicki is leading the implementation of the datetime module.

Background

Python 2.3 introduced a new module datetime.

Since this module is implemented in C, it would be nice to have a Java implementation for Jython. A pure Python implementation of datetime can be found at

I plan on using this implementation extensively as the Java version is developed. If it turns out that a Java implementation is infeasible or will take too long, we could always fall back on using this module directly.

My original plan was to write the entire module in Java, using mxDateTime for guidance

However, after reading this addition by BrianZimmer to JythonModulesInJava:

  My new approach is borrowed slightly from CPython where it's very
common to write a C library, a straight wrapper and then a Pythonic
wrapper. In Jython, the first two steps are really one so the
development effort is significantly simplified. Writing a wrapper in
Python offers the dual benefits of being easy to maintain and refactor
as well as requiring less development time.

And after discussing it with Brian, I've re-thought that approach, and I now plan to start with the pure python datetime and replace the date related code with java.util.Calendar code.

Design

Python Class (from pure Python implementation)

Strategy

timexxx

I think this is just a placeholder for something in C...

timedelta

For now I plan to leave this alone, though this may be a place where a Java reimplementation may give a performance boost.

date

Replace most logic with java.util.Catalog code.

tzinfo

This needs more study, but I may be able to replace some logic with TimeZone from Java

time

Leave as is for now, but review later

datetime

Replace most logic with java.util.Catalog code.

Discussion

FrankWierzbicki 2005-02-13

For the short term I plan to use the Python unit tests as the absolute definition of the datetime module, and will not try to go beyond the CPython implementation. This means (for example) that dates will be limited to 1-9999AD, because that is what the CPython unit tests expect. Even though java.util.Calendar does not have this limitation, I will enforce it. This may change once Jython starts to catch up with the leading edge of CPython development and we can productively review the unit tests themselves.

DateTimeModule (last edited 2008-11-15 09:15:59 by localhost)