sqlobject-cvs Mailing List for SQLObject (Page 23)
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
(9) |
Apr
(74) |
May
(29) |
Jun
(16) |
Jul
(28) |
Aug
(10) |
Sep
(57) |
Oct
(9) |
Nov
(29) |
Dec
(12) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(7) |
Feb
(14) |
Mar
(6) |
Apr
(3) |
May
(12) |
Jun
(34) |
Jul
(9) |
Aug
(29) |
Sep
(22) |
Oct
(2) |
Nov
(15) |
Dec
(52) |
2005 |
Jan
(47) |
Feb
(78) |
Mar
(14) |
Apr
(35) |
May
(33) |
Jun
(16) |
Jul
(26) |
Aug
(63) |
Sep
(40) |
Oct
(96) |
Nov
(96) |
Dec
(123) |
2006 |
Jan
(159) |
Feb
(144) |
Mar
(64) |
Apr
(31) |
May
(88) |
Jun
(48) |
Jul
(16) |
Aug
(64) |
Sep
(87) |
Oct
(92) |
Nov
(56) |
Dec
(76) |
2007 |
Jan
(94) |
Feb
(103) |
Mar
(126) |
Apr
(123) |
May
(85) |
Jun
(11) |
Jul
(130) |
Aug
(47) |
Sep
(65) |
Oct
(70) |
Nov
(12) |
Dec
(11) |
2008 |
Jan
(30) |
Feb
(55) |
Mar
(88) |
Apr
(20) |
May
(50) |
Jun
|
Jul
(38) |
Aug
(1) |
Sep
(9) |
Oct
(5) |
Nov
(6) |
Dec
(39) |
2009 |
Jan
(8) |
Feb
(16) |
Mar
(3) |
Apr
(33) |
May
(44) |
Jun
(1) |
Jul
(10) |
Aug
(33) |
Sep
(74) |
Oct
(22) |
Nov
|
Dec
(15) |
2010 |
Jan
(28) |
Feb
(22) |
Mar
(46) |
Apr
(29) |
May
(1) |
Jun
(1) |
Jul
(27) |
Aug
(8) |
Sep
(5) |
Oct
(33) |
Nov
(24) |
Dec
(41) |
2011 |
Jan
(4) |
Feb
(12) |
Mar
(35) |
Apr
(29) |
May
(19) |
Jun
(16) |
Jul
(32) |
Aug
(25) |
Sep
(5) |
Oct
(11) |
Nov
(21) |
Dec
(12) |
2012 |
Jan
(3) |
Feb
(4) |
Mar
(20) |
Apr
(4) |
May
(25) |
Jun
(13) |
Jul
|
Aug
|
Sep
(2) |
Oct
(25) |
Nov
(9) |
Dec
(1) |
2013 |
Jan
(6) |
Feb
(8) |
Mar
|
Apr
(10) |
May
(31) |
Jun
(7) |
Jul
(18) |
Aug
(33) |
Sep
(4) |
Oct
(16) |
Nov
|
Dec
(27) |
2014 |
Jan
(2) |
Feb
|
Mar
|
Apr
(11) |
May
(39) |
Jun
(8) |
Jul
(11) |
Aug
(4) |
Sep
|
Oct
(27) |
Nov
|
Dec
(71) |
2015 |
Jan
(17) |
Feb
(47) |
Mar
(33) |
Apr
|
May
|
Jun
(9) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(8) |
2016 |
Jan
(4) |
Feb
(4) |
Mar
|
Apr
|
May
(12) |
Jun
(7) |
Jul
(9) |
Aug
(31) |
Sep
(8) |
Oct
(3) |
Nov
(15) |
Dec
(1) |
2017 |
Jan
(13) |
Feb
(7) |
Mar
(14) |
Apr
(8) |
May
(10) |
Jun
(4) |
Jul
(2) |
Aug
(1) |
Sep
|
Oct
(8) |
Nov
(4) |
Dec
(5) |
2018 |
Jan
(2) |
Feb
(8) |
Mar
|
Apr
(4) |
May
|
Jun
(6) |
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
(1) |
Dec
|
2019 |
Jan
(1) |
Feb
(16) |
Mar
(1) |
Apr
(3) |
May
(5) |
Jun
(1) |
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
(1) |
Dec
(3) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
(2) |
Nov
|
Dec
(2) |
2021 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(6) |
Oct
(1) |
Nov
(1) |
Dec
(4) |
2023 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(3) |
Sep
(2) |
Oct
(2) |
Nov
(4) |
Dec
|
2024 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
(9) |
2025 |
Jan
|
Feb
(4) |
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <sub...@co...> - 2014-04-13 11:55:46
|
Author: phd Date: Sun Apr 13 05:55:39 2014 New Revision: 4709 Log: SQLObject 1.6.0b1 and 1.5.2 were released 13 Apr 2014 Modified: SQLObject/trunk/docs/News.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Sun Apr 13 05:54:56 2014 (r4708) +++ SQLObject/trunk/docs/News.txt Sun Apr 13 05:55:39 2014 (r4709) @@ -34,6 +34,8 @@ SQLObject 1.5.2 =============== +Released 13 Apr 2014. + * Adapt duplicate error message strings for SQLite 3.8. SQLObject 1.5.1 |
From: <sub...@co...> - 2014-04-13 11:55:03
|
Author: phd Date: Sun Apr 13 05:54:56 2014 New Revision: 4708 Log: SQLObject 1.6.0b1 and 1.5.2 were released 13 Apr 2014 Modified: SQLObject/branches/1.6/docs/News.txt Modified: SQLObject/branches/1.6/docs/News.txt ============================================================================== --- SQLObject/branches/1.6/docs/News.txt Sun Apr 13 05:53:24 2014 (r4707) +++ SQLObject/branches/1.6/docs/News.txt Sun Apr 13 05:54:56 2014 (r4708) @@ -31,6 +31,8 @@ SQLObject 1.5.2 =============== +Released 13 Apr 2014. + * Adapt duplicate error message strings for SQLite 3.8. SQLObject 1.5.1 |
From: <sub...@co...> - 2014-04-13 11:53:32
|
Author: phd Date: Sun Apr 13 05:53:24 2014 New Revision: 4707 Log: SQLObject 1.5.2 was released 13 Apr 2014 Modified: SQLObject/branches/1.5/docs/News.txt Modified: SQLObject/branches/1.5/docs/News.txt ============================================================================== --- SQLObject/branches/1.5/docs/News.txt Sat Apr 12 14:49:47 2014 (r4706) +++ SQLObject/branches/1.5/docs/News.txt Sun Apr 13 05:53:24 2014 (r4707) @@ -10,6 +10,8 @@ SQLObject 1.5.2 =============== +Released 13 Apr 2014. + * Adapt duplicate error message strings for SQLite 3.8. SQLObject 1.5.1 |
From: <sub...@co...> - 2014-04-12 21:19:52
|
Author: phd Date: Sat Apr 12 14:43:56 2014 New Revision: 4704 Log: Merge revision 4703 from branch 1.5 Adapt duplicate error message strings for SQLite 3.8. Modified: SQLObject/branches/1.6/docs/News.txt SQLObject/branches/1.6/sqlobject/sqlite/sqliteconnection.py Modified: SQLObject/branches/1.6/docs/News.txt ============================================================================== --- SQLObject/branches/1.6/docs/News.txt Sat Apr 12 14:38:07 2014 (r4703) +++ SQLObject/branches/1.6/docs/News.txt Sat Apr 12 14:43:56 2014 (r4704) @@ -26,6 +26,11 @@ * Upgrade ez_setup to 1.4.2. +SQLObject 1.5.2 +=============== + +* Adapt duplicate error message strings for SQLite 3.8. + SQLObject 1.5.1 =============== Modified: SQLObject/branches/1.6/sqlobject/sqlite/sqliteconnection.py ============================================================================== --- SQLObject/branches/1.6/sqlobject/sqlite/sqliteconnection.py Sat Apr 12 14:38:07 2014 (r4703) +++ SQLObject/branches/1.6/sqlobject/sqlite/sqliteconnection.py Sat Apr 12 14:43:56 2014 (r4704) @@ -210,7 +210,8 @@ raise OperationalError(ErrorMessage(e)) except self.module.IntegrityError, e: msg = ErrorMessage(e) - if msg.startswith('column') and msg.endswith('not unique'): + if msg.startswith('column') and msg.endswith('not unique') \ + or msg.startswith('UNIQUE constraint failed:'): raise DuplicateEntryError(msg) else: raise IntegrityError(msg) |
From: <sub...@co...> - 2014-04-12 21:19:46
|
Author: phd Date: Sat Apr 12 14:47:05 2014 New Revision: 4705 Log: Document that it was ported from SQLObject 1.5.2 Modified: SQLObject/branches/1.6/docs/News.txt Modified: SQLObject/branches/1.6/docs/News.txt ============================================================================== --- SQLObject/branches/1.6/docs/News.txt Sat Apr 12 14:43:56 2014 (r4704) +++ SQLObject/branches/1.6/docs/News.txt Sat Apr 12 14:47:05 2014 (r4705) @@ -26,6 +26,8 @@ * Upgrade ez_setup to 1.4.2. +* A bugfix was ported from `SQLObject 1.5.2`_. + SQLObject 1.5.2 =============== |
From: <sub...@co...> - 2014-04-12 21:19:39
|
Author: phd Date: Sat Apr 12 14:38:07 2014 New Revision: 4703 Log: Adapt duplicate error message strings for SQLite 3.8 Modified: SQLObject/branches/1.5/docs/News.txt SQLObject/branches/1.5/sqlobject/sqlite/sqliteconnection.py Modified: SQLObject/branches/1.5/docs/News.txt ============================================================================== --- SQLObject/branches/1.5/docs/News.txt Thu Jan 23 10:10:04 2014 (r4702) +++ SQLObject/branches/1.5/docs/News.txt Sat Apr 12 14:38:07 2014 (r4703) @@ -7,6 +7,11 @@ .. _start: +SQLObject 1.5.2 +=============== + +* Adapt duplicate error message strings for SQLite 3.8. + SQLObject 1.5.1 =============== Modified: SQLObject/branches/1.5/sqlobject/sqlite/sqliteconnection.py ============================================================================== --- SQLObject/branches/1.5/sqlobject/sqlite/sqliteconnection.py Thu Jan 23 10:10:04 2014 (r4702) +++ SQLObject/branches/1.5/sqlobject/sqlite/sqliteconnection.py Sat Apr 12 14:38:07 2014 (r4703) @@ -210,7 +210,8 @@ raise OperationalError(ErrorMessage(e)) except self.module.IntegrityError, e: msg = ErrorMessage(e) - if msg.startswith('column') and msg.endswith('not unique'): + if msg.startswith('column') and msg.endswith('not unique') \ + or msg.startswith('UNIQUE constraint failed:'): raise DuplicateEntryError(msg) else: raise IntegrityError(msg) |
From: <sub...@co...> - 2014-04-12 21:19:32
|
Author: phd Date: Sat Apr 12 14:49:47 2014 New Revision: 4706 Log: Merge revisions 4704, 4705 from branch 1.6 Adapt duplicate error message strings for SQLite 3.8. Modified: SQLObject/trunk/docs/News.txt SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Sat Apr 12 14:47:05 2014 (r4705) +++ SQLObject/trunk/docs/News.txt Sat Apr 12 14:49:47 2014 (r4706) @@ -29,6 +29,13 @@ * Upgrade ez_setup to 1.4.2. +* A bugfix was ported from `SQLObject 1.5.2`_. + +SQLObject 1.5.2 +=============== + +* Adapt duplicate error message strings for SQLite 3.8. + SQLObject 1.5.1 =============== Modified: SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py ============================================================================== --- SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Sat Apr 12 14:47:05 2014 (r4705) +++ SQLObject/trunk/sqlobject/sqlite/sqliteconnection.py Sat Apr 12 14:49:47 2014 (r4706) @@ -210,7 +210,8 @@ raise OperationalError(ErrorMessage(e)) except self.module.IntegrityError, e: msg = ErrorMessage(e) - if msg.startswith('column') and msg.endswith('not unique'): + if msg.startswith('column') and msg.endswith('not unique') \ + or msg.startswith('UNIQUE constraint failed:'): raise DuplicateEntryError(msg) else: raise IntegrityError(msg) |
From: <sub...@co...> - 2014-01-23 17:10:15
|
Author: phd Date: Thu Jan 23 10:10:04 2014 New Revision: 4702 Log: Preserve the URL in the TODO For an attempt to port FormEncode to py3k see https://bitbucket.org/fetchinson/formencode-py3k Modified: SQLObject/trunk/docs/TODO.txt Modified: SQLObject/trunk/docs/TODO.txt ============================================================================== --- SQLObject/trunk/docs/TODO.txt Tue Jan 7 20:58:09 2014 (r4701) +++ SQLObject/trunk/docs/TODO.txt Thu Jan 23 10:10:04 2014 (r4702) @@ -81,7 +81,8 @@ * Deprecate, then remove connectionForOldURI. -* Python 3.0+. +* Python 3.0+. For an attempt to port FormEncode to py3k see + https://bitbucket.org/fetchinson/formencode-py3k * Switch from setuptools to distribute. |
From: <sub...@co...> - 2014-01-08 03:58:18
|
Author: phd Date: Tue Jan 7 20:58:09 2014 New Revision: 4701 Log: TODO: PyMySQL Modified: SQLObject/trunk/docs/TODO.txt Modified: SQLObject/trunk/docs/TODO.txt ============================================================================== --- SQLObject/trunk/docs/TODO.txt Wed Dec 25 08:40:32 2013 (r4700) +++ SQLObject/trunk/docs/TODO.txt Tue Jan 7 20:58:09 2014 (r4701) @@ -91,6 +91,8 @@ * Pure Python Mysql Interface: https://github.com/nasi/MyPy +* PyMySQL: https://github.com/PyMySQL/PyMySQL + * pg8000 driver: http://code.google.com/p/pg8000/ * py-postgresql driver: http://python.projects.postgresql.org/ |
From: <sub...@co...> - 2013-12-25 15:40:41
|
Author: phd Date: Wed Dec 25 08:40:32 2013 New Revision: 4700 Log: Going to release version 1.6.0a1 Modified: SQLObject/tags/1.6.0a1/README.txt SQLObject/tags/1.6.0a1/setup.py SQLObject/tags/1.6.0a1/sqlobject/__version__.py Modified: SQLObject/tags/1.6.0a1/README.txt ============================================================================== --- SQLObject/tags/1.6.0a1/README.txt Wed Dec 25 08:30:00 2013 (r4699) +++ SQLObject/tags/1.6.0a1/README.txt Wed Dec 25 08:40:32 2013 (r4700) @@ -1,5 +1,5 @@ -SQLObject 1.6 -============= +SQLObject 1.6.0a1 +================= Thanks for looking at SQLObject. SQLObject is an object-relational mapper, i.e., a library that will wrap your database tables in Python Modified: SQLObject/tags/1.6.0a1/setup.py ============================================================================== --- SQLObject/tags/1.6.0a1/setup.py Wed Dec 25 08:30:00 2013 (r4699) +++ SQLObject/tags/1.6.0a1/setup.py Wed Dec 25 08:40:32 2013 (r4700) @@ -68,7 +68,7 @@ maintainer="Oleg Broytman", maintainer_email="ph...@ph...", url="http://sqlobject.org/", - download_url="https://pypi.python.org/pypi/SQLObject/%s" % version, + download_url="https://pypi.python.org/pypi/SQLObject/1.6.0a1dev-r4700", license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin", "scripts/sqlobject-convertOldURI"], Modified: SQLObject/tags/1.6.0a1/sqlobject/__version__.py ============================================================================== --- SQLObject/tags/1.6.0a1/sqlobject/__version__.py Wed Dec 25 08:30:00 2013 (r4699) +++ SQLObject/tags/1.6.0a1/sqlobject/__version__.py Wed Dec 25 08:40:32 2013 (r4700) @@ -1,8 +1,8 @@ -version = '1.6' +version = '1.6.0a1' major = 1 minor = 6 micro = 0 -release_level = 'branch' -serial = 0 +release_level = 'alpha' +serial = 1 version_info = (major, minor, micro, release_level, serial) |
From: <sub...@co...> - 2013-12-25 15:30:07
|
Author: phd Date: Wed Dec 25 08:30:00 2013 New Revision: 4699 Log: Tagging 1.6.0a1 Added: SQLObject/tags/1.6.0a1/ - copied from r4698, SQLObject/branches/1.6/ |
From: <sub...@co...> - 2013-12-25 15:27:16
|
Author: phd Date: Wed Dec 25 08:27:09 2013 New Revision: 4698 Log: Next version will be 1.7 Modified: SQLObject/trunk/README.txt SQLObject/trunk/sqlobject/__version__.py Modified: SQLObject/trunk/README.txt ============================================================================== --- SQLObject/trunk/README.txt Wed Dec 25 08:26:01 2013 (r4697) +++ SQLObject/trunk/README.txt Wed Dec 25 08:27:09 2013 (r4698) @@ -1,4 +1,4 @@ -SQLObject 1.6 +SQLObject 1.7 ============= Thanks for looking at SQLObject. SQLObject is an object-relational Modified: SQLObject/trunk/sqlobject/__version__.py ============================================================================== --- SQLObject/trunk/sqlobject/__version__.py Wed Dec 25 08:26:01 2013 (r4697) +++ SQLObject/trunk/sqlobject/__version__.py Wed Dec 25 08:27:09 2013 (r4698) @@ -1,7 +1,7 @@ -version = '1.6' +version = '1.7' major = 1 -minor = 6 +minor = 7 micro = 0 release_level = 'trunk' serial = 0 |
From: <sub...@co...> - 2013-12-25 15:26:08
|
Author: phd Date: Wed Dec 25 08:26:01 2013 New Revision: 4697 Log: This is a branch, not the trunk Modified: SQLObject/branches/1.6/docs/News.txt Modified: SQLObject/branches/1.6/docs/News.txt ============================================================================== --- SQLObject/branches/1.6/docs/News.txt Wed Dec 25 08:24:16 2013 (r4696) +++ SQLObject/branches/1.6/docs/News.txt Wed Dec 25 08:26:01 2013 (r4697) @@ -7,9 +7,6 @@ .. _start: -SQLObject (trunk) -================= - SQLObject 1.6.0 =============== |
From: <sub...@co...> - 2013-12-25 15:24:24
|
Author: phd Date: Wed Dec 25 08:24:16 2013 New Revision: 4696 Log: Merge revision 4695 from branch 1.6: minor optimization Modified: SQLObject/trunk/sqlobject/col.py Modified: SQLObject/trunk/sqlobject/col.py ============================================================================== --- SQLObject/trunk/sqlobject/col.py Wed Dec 25 08:19:53 2013 (r4695) +++ SQLObject/trunk/sqlobject/col.py Wed Dec 25 08:24:16 2013 (r4696) @@ -1107,7 +1107,7 @@ _l = len(microseconds) if _l < 6: _value[-1] = '%06d' % int(microseconds) - if _l > 6: + elif _l > 6: _value[-1] = microseconds[:6] if _l != 6: value = '.'.join(_value) @@ -1154,7 +1154,7 @@ _l = len(microseconds) if _l < 6: _value[-1] = '%06d' % int(microseconds) - if _l > 6: + elif _l > 6: _value[-1] = microseconds[:6] if _l != 6: value = '.'.join(_value) |
From: <sub...@co...> - 2013-12-25 15:20:02
|
Author: phd Date: Wed Dec 25 08:19:53 2013 New Revision: 4695 Log: Minor optimization Modified: SQLObject/branches/1.6/sqlobject/col.py Modified: SQLObject/branches/1.6/sqlobject/col.py ============================================================================== --- SQLObject/branches/1.6/sqlobject/col.py Tue Dec 24 06:19:58 2013 (r4694) +++ SQLObject/branches/1.6/sqlobject/col.py Wed Dec 25 08:19:53 2013 (r4695) @@ -1107,7 +1107,7 @@ _l = len(microseconds) if _l < 6: _value[-1] = '%06d' % int(microseconds) - if _l > 6: + elif _l > 6: _value[-1] = microseconds[:6] if _l != 6: value = '.'.join(_value) @@ -1154,7 +1154,7 @@ _l = len(microseconds) if _l < 6: _value[-1] = '%06d' % int(microseconds) - if _l > 6: + elif _l > 6: _value[-1] = microseconds[:6] if _l != 6: value = '.'.join(_value) |
From: <sub...@co...> - 2013-12-24 13:20:05
|
Author: phd Date: Tue Dec 24 06:19:58 2013 New Revision: 4694 Log: Branch 1.6 Modified: SQLObject/branches/1.6/setup.cfg SQLObject/branches/1.6/setup.py SQLObject/branches/1.6/sqlobject/__version__.py Modified: SQLObject/branches/1.6/setup.cfg ============================================================================== --- SQLObject/branches/1.6/setup.cfg Tue Dec 24 06:18:20 2013 (r4693) +++ SQLObject/branches/1.6/setup.cfg Tue Dec 24 06:19:58 2013 (r4694) @@ -40,6 +40,6 @@ make-dirs = 1 ## For live documentation: -# doc-dest = scp://web.sourceforge.net:/home/project-web/sqlobject/ +doc-dest = scp://web.sourceforge.net:/home/project-web/sqlobject/ ## For in-development documentation: -doc-dest = scp://web.sourceforge.net:/home/project-web/sqlobject/devel/ +# doc-dest = scp://web.sourceforge.net:/home/project-web/sqlobject/devel/ Modified: SQLObject/branches/1.6/setup.py ============================================================================== --- SQLObject/branches/1.6/setup.py Tue Dec 24 06:18:20 2013 (r4693) +++ SQLObject/branches/1.6/setup.py Tue Dec 24 06:19:58 2013 (r4694) @@ -67,7 +67,7 @@ author_email="ia...@co...", maintainer="Oleg Broytman", maintainer_email="ph...@ph...", - url="http://sqlobject.org/devel/", + url="http://sqlobject.org/", download_url="https://pypi.python.org/pypi/SQLObject/%s" % version, license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], Modified: SQLObject/branches/1.6/sqlobject/__version__.py ============================================================================== --- SQLObject/branches/1.6/sqlobject/__version__.py Tue Dec 24 06:18:20 2013 (r4693) +++ SQLObject/branches/1.6/sqlobject/__version__.py Tue Dec 24 06:19:58 2013 (r4694) @@ -3,6 +3,6 @@ major = 1 minor = 6 micro = 0 -release_level = 'trunk' +release_level = 'branch' serial = 0 version_info = (major, minor, micro, release_level, serial) |
From: <sub...@co...> - 2013-12-24 13:18:27
|
Author: phd Date: Tue Dec 24 06:18:20 2013 New Revision: 4693 Log: Branch 1.6 Added: SQLObject/branches/1.6/ - copied from r4692, SQLObject/trunk/ |
From: <sub...@co...> - 2013-12-24 13:17:14
|
Author: phd Date: Tue Dec 24 06:17:07 2013 New Revision: 4692 Log: Going to create branch 1.6 Modified: SQLObject/trunk/docs/News.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Tue Dec 24 05:31:56 2013 (r4691) +++ SQLObject/trunk/docs/News.txt Tue Dec 24 06:17:07 2013 (r4692) @@ -10,6 +10,9 @@ SQLObject (trunk) ================= +SQLObject 1.6.0 +=============== + Features & Interface -------------------- |
From: <sub...@co...> - 2013-12-24 12:32:04
|
Author: phd Date: Tue Dec 24 05:31:56 2013 New Revision: 4691 Log: Fixed a bug: zero-pad microseconds at the left to exactly 6 chars Modified: SQLObject/trunk/sqlobject/col.py Modified: SQLObject/trunk/sqlobject/col.py ============================================================================== --- SQLObject/trunk/sqlobject/col.py Fri Dec 20 06:45:19 2013 (r4690) +++ SQLObject/trunk/sqlobject/col.py Tue Dec 24 05:31:56 2013 (r4691) @@ -1104,8 +1104,12 @@ if '.' in value: _value = value.split('.') microseconds = _value[-1] - if len(microseconds) > 6: + _l = len(microseconds) + if _l < 6: + _value[-1] = '%06d' % int(microseconds) + if _l > 6: _value[-1] = microseconds[:6] + if _l != 6: value = '.'.join(_value) else: value += '.0' @@ -1147,8 +1151,12 @@ if '.' in value: _value = value.split('.') microseconds = _value[-1] - if len(microseconds) > 6: + _l = len(microseconds) + if _l < 6: + _value[-1] = '%06d' % int(microseconds) + if _l > 6: _value[-1] = microseconds[:6] + if _l != 6: value = '.'.join(_value) else: value += '.0' |
From: <sub...@co...> - 2013-12-20 13:45:27
|
Author: phd Date: Fri Dec 20 06:45:19 2013 New Revision: 4690 Log: Add Oleg Broytman as the maintainer maintainer_email="ph...@ph..." Modified: SQLObject/trunk/setup.py Modified: SQLObject/trunk/setup.py ============================================================================== --- SQLObject/trunk/setup.py Fri Dec 20 06:39:42 2013 (r4689) +++ SQLObject/trunk/setup.py Fri Dec 20 06:45:19 2013 (r4690) @@ -65,6 +65,8 @@ ], author="Ian Bicking", author_email="ia...@co...", + maintainer="Oleg Broytman", + maintainer_email="ph...@ph...", url="http://sqlobject.org/devel/", download_url="https://pypi.python.org/pypi/SQLObject/%s" % version, license="LGPL", |
From: <sub...@co...> - 2013-12-20 13:39:51
|
Author: phd Date: Fri Dec 20 06:39:42 2013 New Revision: 4689 Log: Upgrade ez_setup to 1.4.2 Added: SQLObject/trunk/ez_setup.py Modified: SQLObject/trunk/ (props changed) SQLObject/trunk/docs/News.txt SQLObject/trunk/docs/TODO.txt SQLObject/trunk/setup.py Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Fri Dec 20 06:08:43 2013 (r4688) +++ SQLObject/trunk/docs/News.txt Fri Dec 20 06:39:42 2013 (r4689) @@ -24,6 +24,8 @@ with microseconds cannot be read back with older versions of SQLObject. +* Upgrade ez_setup to 1.4.2. + SQLObject 1.5.1 =============== Modified: SQLObject/trunk/docs/TODO.txt ============================================================================== --- SQLObject/trunk/docs/TODO.txt Fri Dec 20 06:08:43 2013 (r4688) +++ SQLObject/trunk/docs/TODO.txt Fri Dec 20 06:39:42 2013 (r4689) @@ -1,8 +1,6 @@ TODO ---- -* Upgrade ez_setup to 1.4.2. - * RelatedJoin.hasOther(otherObject[.id]) * createParamsPre/Post:: Added: SQLObject/trunk/ez_setup.py ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ SQLObject/trunk/ez_setup.py Fri Dec 20 06:39:42 2013 (r4689) @@ -0,0 +1,382 @@ +#!python +"""Bootstrap setuptools installation + +If you want to use setuptools in your package's setup.py, just include this +file in the same directory with it, and add this to the top of your setup.py:: + + from ez_setup import use_setuptools + use_setuptools() + +If you want to require a specific version of setuptools, set a download +mirror, or use an alternate download directory, you can do so by supplying +the appropriate options to ``use_setuptools()``. + +This file can also be run as a script to install or upgrade setuptools. +""" +import os +import shutil +import sys +import tempfile +import tarfile +import optparse +import subprocess +import platform + +from distutils import log + +try: + from site import USER_SITE +except ImportError: + USER_SITE = None + +DEFAULT_VERSION = "1.4.2" +DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/" + +def _python_cmd(*args): + args = (sys.executable,) + args + return subprocess.call(args) == 0 + +def _check_call_py24(cmd, *args, **kwargs): + res = subprocess.call(cmd, *args, **kwargs) + class CalledProcessError(Exception): + pass + if not res == 0: + msg = "Command '%s' return non-zero exit status %d" % (cmd, res) + raise CalledProcessError(msg) +vars(subprocess).setdefault('check_call', _check_call_py24) + +def _install(tarball, install_args=()): + # extracting the tarball + tmpdir = tempfile.mkdtemp() + log.warn('Extracting in %s', tmpdir) + old_wd = os.getcwd() + try: + os.chdir(tmpdir) + tar = tarfile.open(tarball) + _extractall(tar) + tar.close() + + # going in the directory + subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) + os.chdir(subdir) + log.warn('Now working in %s', subdir) + + # installing + log.warn('Installing Setuptools') + if not _python_cmd('setup.py', 'install', *install_args): + log.warn('Something went wrong during the installation.') + log.warn('See the error message above.') + # exitcode will be 2 + return 2 + finally: + os.chdir(old_wd) + shutil.rmtree(tmpdir) + + +def _build_egg(egg, tarball, to_dir): + # extracting the tarball + tmpdir = tempfile.mkdtemp() + log.warn('Extracting in %s', tmpdir) + old_wd = os.getcwd() + try: + os.chdir(tmpdir) + tar = tarfile.open(tarball) + _extractall(tar) + tar.close() + + # going in the directory + subdir = os.path.join(tmpdir, os.listdir(tmpdir)[0]) + os.chdir(subdir) + log.warn('Now working in %s', subdir) + + # building an egg + log.warn('Building a Setuptools egg in %s', to_dir) + _python_cmd('setup.py', '-q', 'bdist_egg', '--dist-dir', to_dir) + + finally: + os.chdir(old_wd) + shutil.rmtree(tmpdir) + # returning the result + log.warn(egg) + if not os.path.exists(egg): + raise IOError('Could not build the egg.') + + +def _do_download(version, download_base, to_dir, download_delay): + egg = os.path.join(to_dir, 'setuptools-%s-py%d.%d.egg' + % (version, sys.version_info[0], sys.version_info[1])) + if not os.path.exists(egg): + tarball = download_setuptools(version, download_base, + to_dir, download_delay) + _build_egg(egg, tarball, to_dir) + sys.path.insert(0, egg) + + # Remove previously-imported pkg_resources if present (see + # https://bitbucket.org/pypa/setuptools/pull-request/7/ for details). + if 'pkg_resources' in sys.modules: + del sys.modules['pkg_resources'] + + import setuptools + setuptools.bootstrap_install_from = egg + + +def use_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, + to_dir=os.curdir, download_delay=15): + # making sure we use the absolute path + to_dir = os.path.abspath(to_dir) + was_imported = 'pkg_resources' in sys.modules or \ + 'setuptools' in sys.modules + try: + import pkg_resources + except ImportError: + return _do_download(version, download_base, to_dir, download_delay) + try: + pkg_resources.require("setuptools>=" + version) + return + except pkg_resources.VersionConflict: + e = sys.exc_info()[1] + if was_imported: + sys.stderr.write( + "The required version of setuptools (>=%s) is not available,\n" + "and can't be installed while this script is running. Please\n" + "install a more recent version first, using\n" + "'easy_install -U setuptools'." + "\n\n(Currently using %r)\n" % (version, e.args[0])) + sys.exit(2) + else: + del pkg_resources, sys.modules['pkg_resources'] # reload ok + return _do_download(version, download_base, to_dir, + download_delay) + except pkg_resources.DistributionNotFound: + return _do_download(version, download_base, to_dir, + download_delay) + +def _clean_check(cmd, target): + """ + Run the command to download target. If the command fails, clean up before + re-raising the error. + """ + try: + subprocess.check_call(cmd) + except subprocess.CalledProcessError: + if os.access(target, os.F_OK): + os.unlink(target) + raise + +def download_file_powershell(url, target): + """ + Download the file at url to target using Powershell (which will validate + trust). Raise an exception if the command cannot complete. + """ + target = os.path.abspath(target) + cmd = [ + 'powershell', + '-Command', + "(new-object System.Net.WebClient).DownloadFile(%(url)r, %(target)r)" % vars(), + ] + _clean_check(cmd, target) + +def has_powershell(): + if platform.system() != 'Windows': + return False + cmd = ['powershell', '-Command', 'echo test'] + devnull = open(os.path.devnull, 'wb') + try: + try: + subprocess.check_call(cmd, stdout=devnull, stderr=devnull) + except: + return False + finally: + devnull.close() + return True + +download_file_powershell.viable = has_powershell + +def download_file_curl(url, target): + cmd = ['curl', url, '--silent', '--output', target] + _clean_check(cmd, target) + +def has_curl(): + cmd = ['curl', '--version'] + devnull = open(os.path.devnull, 'wb') + try: + try: + subprocess.check_call(cmd, stdout=devnull, stderr=devnull) + except: + return False + finally: + devnull.close() + return True + +download_file_curl.viable = has_curl + +def download_file_wget(url, target): + cmd = ['wget', url, '--quiet', '--output-document', target] + _clean_check(cmd, target) + +def has_wget(): + cmd = ['wget', '--version'] + devnull = open(os.path.devnull, 'wb') + try: + try: + subprocess.check_call(cmd, stdout=devnull, stderr=devnull) + except: + return False + finally: + devnull.close() + return True + +download_file_wget.viable = has_wget + +def download_file_insecure(url, target): + """ + Use Python to download the file, even though it cannot authenticate the + connection. + """ + try: + from urllib.request import urlopen + except ImportError: + from urllib2 import urlopen + src = dst = None + try: + src = urlopen(url) + # Read/write all in one block, so we don't create a corrupt file + # if the download is interrupted. + data = src.read() + dst = open(target, "wb") + dst.write(data) + finally: + if src: + src.close() + if dst: + dst.close() + +download_file_insecure.viable = lambda: True + +def get_best_downloader(): + downloaders = [ + download_file_powershell, + download_file_curl, + download_file_wget, + download_file_insecure, + ] + + for dl in downloaders: + if dl.viable(): + return dl + +def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, + to_dir=os.curdir, delay=15, + downloader_factory=get_best_downloader): + """Download setuptools from a specified location and return its filename + + `version` should be a valid setuptools version number that is available + as an egg for download under the `download_base` URL (which should end + with a '/'). `to_dir` is the directory where the egg will be downloaded. + `delay` is the number of seconds to pause before an actual download + attempt. + + ``downloader_factory`` should be a function taking no arguments and + returning a function for downloading a URL to a target. + """ + # making sure we use the absolute path + to_dir = os.path.abspath(to_dir) + tgz_name = "setuptools-%s.tar.gz" % version + url = download_base + tgz_name + saveto = os.path.join(to_dir, tgz_name) + if not os.path.exists(saveto): # Avoid repeated downloads + log.warn("Downloading %s", url) + downloader = downloader_factory() + downloader(url, saveto) + return os.path.realpath(saveto) + + +def _extractall(self, path=".", members=None): + """Extract all members from the archive to the current working + directory and set owner, modification time and permissions on + directories afterwards. `path' specifies a different directory + to extract to. `members' is optional and must be a subset of the + list returned by getmembers(). + """ + import copy + import operator + from tarfile import ExtractError + directories = [] + + if members is None: + members = self + + for tarinfo in members: + if tarinfo.isdir(): + # Extract directories with a safe mode. + directories.append(tarinfo) + tarinfo = copy.copy(tarinfo) + tarinfo.mode = 448 # decimal for oct 0700 + self.extract(tarinfo, path) + + # Reverse sort directories. + if sys.version_info < (2, 4): + def sorter(dir1, dir2): + return cmp(dir1.name, dir2.name) + directories.sort(sorter) + directories.reverse() + else: + directories.sort(key=operator.attrgetter('name'), reverse=True) + + # Set correct owner, mtime and filemode on directories. + for tarinfo in directories: + dirpath = os.path.join(path, tarinfo.name) + try: + self.chown(tarinfo, dirpath) + self.utime(tarinfo, dirpath) + self.chmod(tarinfo, dirpath) + except ExtractError: + e = sys.exc_info()[1] + if self.errorlevel > 1: + raise + else: + self._dbg(1, "tarfile: %s" % e) + + +def _build_install_args(options): + """ + Build the arguments to 'python setup.py install' on the setuptools package + """ + install_args = [] + if options.user_install: + if sys.version_info < (2, 6): + log.warn("--user requires Python 2.6 or later") + raise SystemExit(1) + install_args.append('--user') + return install_args + +def _parse_args(): + """ + Parse the command line for options + """ + parser = optparse.OptionParser() + parser.add_option( + '--user', dest='user_install', action='store_true', default=False, + help='install in user site package (requires Python 2.6 or later)') + parser.add_option( + '--download-base', dest='download_base', metavar="URL", + default=DEFAULT_URL, + help='alternative URL from where to download the setuptools package') + parser.add_option( + '--insecure', dest='downloader_factory', action='store_const', + const=lambda: download_file_insecure, default=get_best_downloader, + help='Use internal, non-validating downloader' + ) + options, args = parser.parse_args() + # positional arguments are ignored + return options + +def main(version=DEFAULT_VERSION): + """Install or upgrade setuptools and EasyInstall""" + options = _parse_args() + tarball = download_setuptools(download_base=options.download_base, + downloader_factory=options.downloader_factory) + return _install(tarball, _build_install_args(options)) + +if __name__ == '__main__': + sys.exit(main()) Modified: SQLObject/trunk/setup.py ============================================================================== --- SQLObject/trunk/setup.py Fri Dec 20 06:08:43 2013 (r4688) +++ SQLObject/trunk/setup.py Fri Dec 20 06:39:42 2013 (r4689) @@ -26,6 +26,16 @@ [paste.filter_app_factory] main = sqlobject.wsgi_middleware:make_middleware """ + kw['install_requires'] = ["FormEncode>=1.1.1"] + kw['extras_require'] = { + 'mysql': ['MySQLdb'], + 'postgresql': ['psycopg'], # or pgdb from PyGreSQL + 'sqlite': ['pysqlite'], + 'firebird': ['kinterbasdb'], + 'sybase': ['Sybase'], + 'mssql': ['adodbapi'], # or pymssql + 'sapdb': ['sapdb'], + } setup(name="SQLObject", version=version, @@ -60,16 +70,6 @@ license="LGPL", packages=["sqlobject"] + ['sqlobject.%s' % package for package in subpackages], scripts=["scripts/sqlobject-admin", "scripts/sqlobject-convertOldURI"], - install_requires=["FormEncode>=1.1.1"], - extras_require={ - 'mysql': ['MySQLdb'], - 'postgresql': ['psycopg'], # or pgdb from PyGreSQL - 'sqlite': ['pysqlite'], - 'firebird': ['kinterbasdb'], - 'sybase': ['Sybase'], - 'mssql': ['adodbapi'], # or pymssql - 'sapdb': ['sapdb'], - }, **kw ) |
From: <sub...@co...> - 2013-12-20 13:08:51
|
Author: phd Date: Fri Dec 20 06:08:43 2013 New Revision: 4688 Log: WARNING: backward compatibility problem Date/Time columns created with microseconds cannot be read back with older versions of SQLObject. Modified: SQLObject/trunk/docs/News.txt Modified: SQLObject/trunk/docs/News.txt ============================================================================== --- SQLObject/trunk/docs/News.txt Fri Dec 20 06:03:56 2013 (r4687) +++ SQLObject/trunk/docs/News.txt Fri Dec 20 06:08:43 2013 (r4688) @@ -20,6 +20,10 @@ Python 2.6+ because in Python 2.5 datetime.strptime doesn't support '%f' format. + WARNING: backward compatibility problem! Date/Time columns created + with microseconds cannot be read back with older versions of + SQLObject. + SQLObject 1.5.1 =============== |
From: <sub...@co...> - 2013-12-20 13:04:10
|
Author: phd Date: Fri Dec 20 06:03:56 2013 New Revision: 4687 Log: Python 2.4 is no longer supported Modified: SQLObject/trunk/README.txt Modified: SQLObject/trunk/README.txt ============================================================================== --- SQLObject/trunk/README.txt Wed Dec 18 13:14:04 2013 (r4686) +++ SQLObject/trunk/README.txt Fri Dec 20 06:03:56 2013 (r4687) @@ -7,7 +7,7 @@ It currently supports MySQL through the `MySQLdb` package, PostgreSQL through the `psycopg` package, SQLite, Firebird, MaxDB (SAP DB), MS SQL -Sybase and Rdbhost. It should support Python versions back to 2.4. +Sybase and Rdbhost. It should support Python versions back to 2.5. For more information please see the documentation in docs/SQLObject.txt, or online at http://sqlobject.org/ |
From: <sub...@co...> - 2013-12-18 20:14:11
|
Author: phd Date: Wed Dec 18 13:14:04 2013 New Revision: 4686 Log: Fix doc-dest URLs Modified: SQLObject/trunk/setup.cfg Modified: SQLObject/trunk/setup.cfg ============================================================================== --- SQLObject/trunk/setup.cfg Wed Dec 18 13:13:21 2013 (r4685) +++ SQLObject/trunk/setup.cfg Wed Dec 18 13:14:04 2013 (r4686) @@ -40,6 +40,6 @@ make-dirs = 1 ## For live documentation: -# doc-dest = scp://ian...@sh.../home/groups/s/sq/sqlobject/htdocs/ +# doc-dest = scp://web.sourceforge.net:/home/project-web/sqlobject/ ## For in-development documentation: -doc-dest = scp://ian...@sh.../home/groups/s/sq/sqlobject/htdocs/devel/ +doc-dest = scp://web.sourceforge.net:/home/project-web/sqlobject/devel/ |
From: <sub...@co...> - 2013-12-18 20:13:30
|
Author: phd Date: Wed Dec 18 13:13:21 2013 New Revision: 4685 Log: Fix doc-dest URLs. Uncomment doc-dest URL for stable branch. Modified: SQLObject/branches/1.5/setup.cfg Modified: SQLObject/branches/1.5/setup.cfg ============================================================================== --- SQLObject/branches/1.5/setup.cfg Tue Dec 17 23:51:22 2013 (r4684) +++ SQLObject/branches/1.5/setup.cfg Wed Dec 18 13:13:21 2013 (r4685) @@ -40,6 +40,6 @@ make-dirs = 1 ## For live documentation: -# doc-dest = scp://ian...@sh.../home/groups/s/sq/sqlobject/htdocs/ +doc-dest = scp://web.sourceforge.net:/home/project-web/sqlobject/ ## For in-development documentation: -doc-dest = scp://ian...@sh.../home/groups/s/sq/sqlobject/htdocs/devel/ +# doc-dest = scp://web.sourceforge.net:/home/project-web/sqlobject/devel/ |