]>
git.ipfire.org Git - thirdparty/psycopg.git/log
Daniele Varrazzo [Sun, 15 Nov 2020 04:00:27 +0000 (04:00 +0000)]
Added asynccontextmanager for Python 3.6
Daniele Varrazzo [Sun, 15 Nov 2020 02:32:11 +0000 (02:32 +0000)]
Binary copy tests enabled: now there is an int binary dumper
Daniele Varrazzo [Sun, 15 Nov 2020 01:57:14 +0000 (01:57 +0000)]
Copy object interface simplified
Dropped methods and code paths no more useful now that the user can only
interact with Copy as a context.
Daniele Varrazzo [Sun, 15 Nov 2020 01:47:51 +0000 (01:47 +0000)]
Cursor.copy() made into a context manager
What was before was a factory function, however that forced to have a
pattern like:
async with (await cursor.copy()) as copy
Now instead what should be used is:
async with cursor.copy() as copy
With this change the user pretty much is never exposed anymore to a Copy
object in a non-entered state. This is actually useful because it
reduces the surface of the API: now for instance Copy.finis() can become
a private method.
Daniele Varrazzo [Sat, 14 Nov 2020 19:20:38 +0000 (19:20 +0000)]
Document COPY differences and async use
Daniele Varrazzo [Sat, 14 Nov 2020 18:01:29 +0000 (18:01 +0000)]
Work around Py2 api of PyFloat_FromDouble in Cython
https://github.com/cython/cython/issues/3909
Daniele Varrazzo [Sat, 14 Nov 2020 13:13:43 +0000 (13:13 +0000)]
Better use of Python api for numeric load
Float remains to be tweaked, as affected by
https://github.com/cython/cython/issues/3909
Daniele Varrazzo [Sat, 14 Nov 2020 03:26:00 +0000 (03:26 +0000)]
Added C float and binary bool loaders
Daniele Varrazzo [Sat, 14 Nov 2020 03:25:23 +0000 (03:25 +0000)]
Simpler bool loader implementation
Daniele Varrazzo [Sat, 14 Nov 2020 02:24:43 +0000 (02:24 +0000)]
Trying to dump int as int8, added binary dumpers for int and float
Daniele Varrazzo [Sat, 14 Nov 2020 02:02:05 +0000 (02:02 +0000)]
Get oid numbers from builtins dict
Now it's accessible after it was moved to the main package.
Daniele Varrazzo [Fri, 13 Nov 2020 20:05:30 +0000 (20:05 +0000)]
Really update types on PostgresQuery.dump
Let's do what it says on the tin, before micro-optimising.
Daniele Varrazzo [Fri, 13 Nov 2020 13:36:45 +0000 (13:36 +0000)]
Docs build script path fixed
Daniele Varrazzo [Fri, 13 Nov 2020 03:09:06 +0000 (03:09 +0000)]
Added more documentation on COPY
Daniele Varrazzo [Fri, 13 Nov 2020 00:49:04 +0000 (00:49 +0000)]
Don't throw an error using COPY TO in a block
Daniele Varrazzo [Thu, 12 Nov 2020 19:37:31 +0000 (19:37 +0000)]
Cleanup of Copy attributes and parameters
Daniele Varrazzo [Thu, 12 Nov 2020 19:09:42 +0000 (19:09 +0000)]
Using generics to describe sync/async types
Daniele Varrazzo [Thu, 12 Nov 2020 15:25:49 +0000 (15:25 +0000)]
First cut of cursor documentation
Daniele Varrazzo [Thu, 12 Nov 2020 15:24:56 +0000 (15:24 +0000)]
Virtualenv to build the docs renamed to .vemv
Daniele Varrazzo [Thu, 12 Nov 2020 15:24:18 +0000 (15:24 +0000)]
Trigger docs build on push
Daniele Varrazzo [Thu, 12 Nov 2020 15:09:12 +0000 (15:09 +0000)]
Import, but don't expose, documented objects in the package.
Daniele Varrazzo [Thu, 12 Nov 2020 02:57:58 +0000 (02:57 +0000)]
Added support to build docs unattended
Daniele Varrazzo [Thu, 12 Nov 2020 02:13:03 +0000 (02:13 +0000)]
Added failing tests to remember to implement connect_timeout
Daniele Varrazzo [Thu, 12 Nov 2020 01:02:15 +0000 (01:02 +0000)]
More Connection documentation.
Daniele Varrazzo [Thu, 12 Nov 2020 00:01:46 +0000 (00:01 +0000)]
Dropped Connection.status
It is almost a synonym of closed. Will add an object to get all the info
from the connection.
Daniele Varrazzo [Wed, 11 Nov 2020 22:54:59 +0000 (22:54 +0000)]
More docs
Daniele Varrazzo [Wed, 11 Nov 2020 22:53:27 +0000 (22:53 +0000)]
Dropped Connection.pyenc and related support
Connection.client_encoding is now guaranteed to be a Python codec's
name.
Daniele Varrazzo [Wed, 11 Nov 2020 19:58:37 +0000 (19:58 +0000)]
Adding an embryo of documentation
Daniele Varrazzo [Wed, 11 Nov 2020 19:25:34 +0000 (19:25 +0000)]
Dropped use of `send()` on Connection.notifies generator
`close()` is good enough.
Daniele Varrazzo [Wed, 11 Nov 2020 16:39:35 +0000 (16:39 +0000)]
Allow omitting the conninfo param instead of requiring an empty string
Daniele Varrazzo [Mon, 9 Nov 2020 18:02:14 +0000 (18:02 +0000)]
Dropped unneeded escaping loading int from bytes
Daniele Varrazzo [Mon, 9 Nov 2020 23:45:07 +0000 (23:45 +0000)]
Errors and builtin oids updated to PostgreSQL 13
Daniele Varrazzo [Mon, 9 Nov 2020 03:35:03 +0000 (03:35 +0000)]
Added connection enter/exit
Just a simplified version, only commit/rollback + close, waiting for
nested transactions...
Daniele Varrazzo [Mon, 9 Nov 2020 02:21:47 +0000 (02:21 +0000)]
sql.SQL.format() accepts any Python object, making it a Literal
Daniele Varrazzo [Mon, 9 Nov 2020 00:55:11 +0000 (00:55 +0000)]
Load the uuid and network modules lazily
The uuid module is slow to import (was fixed in psycopg2 2.4.3, but
there is no ticket open for it). Similarly, lazy load other non-default
modules.
Daniele Varrazzo [Mon, 9 Nov 2020 01:46:54 +0000 (01:46 +0000)]
Fixed comments in tests
Daniele Varrazzo [Mon, 9 Nov 2020 01:16:44 +0000 (01:16 +0000)]
Use pytest tmpdir fixture
Daniele Varrazzo [Sun, 8 Nov 2020 23:17:26 +0000 (23:17 +0000)]
AsyncConnection.cursor() made async
Daniele Varrazzo [Sat, 7 Nov 2020 02:24:09 +0000 (02:24 +0000)]
Dropped excessive use of is [not] None
It was done with the assumption that it is faster, but it is only in
C/Cython, not in pure Python.
Daniele Varrazzo [Sat, 7 Nov 2020 01:58:06 +0000 (01:58 +0000)]
Dropped local variable micro-optimization
A long time ago it was a thing. timeit shows it isn't anymore.
Daniele Varrazzo [Fri, 6 Nov 2020 23:52:45 +0000 (23:52 +0000)]
Added TypeInfo representation
Daniele Varrazzo [Fri, 6 Nov 2020 23:51:43 +0000 (23:51 +0000)]
Added int subtypes to cast to specific sizes
Daniele Varrazzo [Thu, 5 Nov 2020 14:40:17 +0000 (15:40 +0100)]
Use oid 0 for unknown typed and string casting
Using unknown (0) oid instead of text (25) works better to throw normal
strings at typed targets (e.g. columns) and expect them to work, a
behaviour similar to client-side binding. However Postgres < 10 refuse
to emit columns with unknown oid.
Daniele Varrazzo [Wed, 4 Nov 2020 17:22:49 +0000 (18:22 +0100)]
Dropped dumper param of Dumper.register
Just use `cls`, as the class method is available to all the subclasses.
Daniele Varrazzo [Wed, 4 Nov 2020 17:08:34 +0000 (18:08 +0100)]
Added network types
Daniele Varrazzo [Wed, 4 Nov 2020 14:15:40 +0000 (15:15 +0100)]
Fast codec functions moved to an utility module
Daniele Varrazzo [Wed, 4 Nov 2020 01:17:44 +0000 (02:17 +0100)]
Text dumping raises DataError if it contains a NUL byte
Note that psycopg2 was raising ValueError, but DataError is more
appropriate. If the param is binary, Postgres will raise
.CharacterNotInRepertoire, which is a DataError subclass.
Daniele Varrazzo [Wed, 4 Nov 2020 01:17:27 +0000 (02:17 +0100)]
Callproc can take both args and kwargs
Daniele Varrazzo [Fri, 30 Oct 2020 14:23:30 +0000 (15:23 +0100)]
sql.Composible subclasses super c'tor before raise an exception in init
If an exception is raised a test framework may raise an exception on
repr.
Daniele Varrazzo [Fri, 30 Oct 2020 14:23:14 +0000 (15:23 +0100)]
Added cursor.callproc()
Daniele Varrazzo [Fri, 30 Oct 2020 02:21:29 +0000 (03:21 +0100)]
Cursor is iterable
Daniele Varrazzo [Fri, 30 Oct 2020 02:13:38 +0000 (03:13 +0100)]
Using type Iterator instead of Generator when possible
Daniele Varrazzo [Fri, 30 Oct 2020 01:57:24 +0000 (02:57 +0100)]
Added columns attributes
Daniele Varrazzo [Fri, 30 Oct 2020 01:55:43 +0000 (02:55 +0100)]
oids module moved from psycopg3.types to psycog3 package
Importing it from types caused too many side effects.
Daniele Varrazzo [Thu, 29 Oct 2020 22:02:45 +0000 (23:02 +0100)]
Added UUID type load/dump
Daniele Varrazzo [Thu, 29 Oct 2020 21:00:02 +0000 (22:00 +0100)]
Use static attributes to declare dumpers oid where possible
Daniele Varrazzo [Thu, 29 Oct 2020 17:58:22 +0000 (18:58 +0100)]
Dropped type guards for dumpers/loaders registration
Awkward to maintain and badly defined. Let the ducks quack.
Daniele Varrazzo [Thu, 29 Oct 2020 15:39:57 +0000 (16:39 +0100)]
More uniform loader/dumper names
Daniele Varrazzo [Thu, 29 Oct 2020 14:08:37 +0000 (15:08 +0100)]
Added test to make sure binary minus in client-side binding works ok
Daniele Varrazzo [Thu, 29 Oct 2020 14:06:19 +0000 (15:06 +0100)]
Fixed tests with PostgreSQL 9.6 and previous
Such database version doesn't allow to emit unknown oid literals.
However specifying a different type for unknown, such as text, will fail
as soon as the value is used in a typed context, which is a far more
useful use case.
Daniele Varrazzo [Thu, 29 Oct 2020 14:05:40 +0000 (15:05 +0100)]
Fix test when a db name is not set
Daniele Varrazzo [Thu, 29 Oct 2020 13:54:59 +0000 (14:54 +0100)]
Dropped duplicate tests
Daniele Varrazzo [Thu, 29 Oct 2020 03:22:23 +0000 (04:22 +0100)]
Dropped loader param of Loader.register
Just use `cls`, as the class method is available to all the subclasses.
Daniele Varrazzo [Thu, 29 Oct 2020 00:51:03 +0000 (01:51 +0100)]
Fixed rowcount with DML queries, multiple results, executemany
Daniele Varrazzo [Wed, 28 Oct 2020 23:29:41 +0000 (00:29 +0100)]
Use unknown oid passing NULL to queries
Passing text makes for a cast rejected by fields with a stricter cast.
Daniele Varrazzo [Wed, 28 Oct 2020 20:46:52 +0000 (21:46 +0100)]
Diagnostic objects can be pickled and error info survive pickling
Daniele Varrazzo [Wed, 28 Oct 2020 19:26:01 +0000 (20:26 +0100)]
Errors can be pickled
Daniele Varrazzo [Wed, 28 Oct 2020 16:45:03 +0000 (17:45 +0100)]
Raise InterfaceError on operation on closed objects
Daniele Varrazzo [Wed, 28 Oct 2020 16:33:44 +0000 (17:33 +0100)]
Added cursors context managers
Daniele Varrazzo [Wed, 28 Oct 2020 21:04:31 +0000 (22:04 +0100)]
Merge branch 'sql-module'
Daniele Varrazzo [Wed, 28 Oct 2020 19:29:51 +0000 (20:29 +0100)]
More idiomatic python3 super()
Daniele Varrazzo [Wed, 28 Oct 2020 15:42:25 +0000 (16:42 +0100)]
Added Dumper.quote()
Return a representation of the object in a format useful for embedding
in SQL. For most objects this is only the representation in quotes and
escaped, for some it's a different value (numbers, bools, NULL).
None can be quoted but not dumped, so it can be passed to an
sql.Literal() without the need of a special case.
Daniele Varrazzo [Wed, 28 Oct 2020 12:00:35 +0000 (13:00 +0100)]
sql.Placeholder can represent binary placeholders
Daniele Varrazzo [Wed, 28 Oct 2020 11:38:59 +0000 (12:38 +0100)]
Move conversion of Composible to query string into PostgresQuery
Daniele Varrazzo [Wed, 28 Oct 2020 03:14:42 +0000 (04:14 +0100)]
Added sql adaptation from None to NULL
This is a special case now, because None is no more a value to adapt, as
it's not passed to PQexecParams like other values are.
Daniele Varrazzo [Wed, 28 Oct 2020 03:01:48 +0000 (04:01 +0100)]
Added psycopg3.sql module
A straight porting from psycopg2, with the addition of an utility
`quote()` function to provide a simple entry point to solve the problem
"adapt this object here".
Daniele Varrazzo [Wed, 28 Oct 2020 03:20:47 +0000 (04:20 +0100)]
Merge branch 'date-adapt'
Daniele Varrazzo [Tue, 27 Oct 2020 19:08:10 +0000 (20:08 +0100)]
Work around the mypy method assignment false positive without `ignore`
`ignore` in unused branches triggers https://github.com/python/mypy/issues/8823
so use `setattr()` to avoid https://github.com/python/mypy/issues/2427.
Daniele Varrazzo [Tue, 27 Oct 2020 18:17:25 +0000 (19:17 +0100)]
Force type checking with Python 3.8
Aligning Travis with my current dev environment to avoid cases where
it's not possible to type-check consistently with different Python
versions.
See https://github.com/python/mypy/issues/9652
Daniele Varrazzo [Tue, 27 Oct 2020 15:31:13 +0000 (16:31 +0100)]
Use local functions for encode/decode in date adaptation
Daniele Varrazzo [Tue, 27 Oct 2020 13:43:37 +0000 (14:43 +0100)]
Fixed timezone parsing on Python 3.6
Daniele Varrazzo [Tue, 27 Oct 2020 03:10:36 +0000 (04:10 +0100)]
Added interval loading
Daniele Varrazzo [Tue, 27 Oct 2020 01:40:29 +0000 (02:40 +0100)]
Added timedelta dump
Daniele Varrazzo [Tue, 27 Oct 2020 00:27:54 +0000 (01:27 +0100)]
Added time with timezone loader
Daniele Varrazzo [Mon, 26 Oct 2020 23:15:03 +0000 (00:15 +0100)]
Raise DataError for dates and times that can't be represented
Daniele Varrazzo [Mon, 26 Oct 2020 22:32:43 +0000 (23:32 +0100)]
Added time load/dump, and tests refactoring
Daniele Varrazzo [Mon, 26 Oct 2020 15:32:14 +0000 (16:32 +0100)]
Added timestamptz loader
Won't deal with formats other than ISO because they return the timezone
name and that requires interpretation by the client, using a tz library
such as pytz or Python 3.9
Daniele Varrazzo [Sun, 18 Oct 2020 19:42:21 +0000 (20:42 +0100)]
More compact date/time tests
Daniele Varrazzo [Sun, 18 Oct 2020 16:06:00 +0000 (17:06 +0100)]
Added timestamp text loading
Daniele Varrazzo [Sun, 6 Sep 2020 11:50:12 +0000 (12:50 +0100)]
Added datetime dump
Daniele Varrazzo [Sun, 23 Aug 2020 20:41:15 +0000 (21:41 +0100)]
Raise a polite exception for dates >= Y10K
Daniele Varrazzo [Sun, 23 Aug 2020 20:13:34 +0000 (21:13 +0100)]
Raise a polite exception for BC dates
Daniele Varrazzo [Sun, 23 Aug 2020 18:20:53 +0000 (19:20 +0100)]
Added date text loader
THe loader can already deal with all the Postgres DateStyle
Daniele Varrazzo [Sun, 23 Aug 2020 17:23:23 +0000 (18:23 +0100)]
Added date text dumper
Daniele Varrazzo [Wed, 28 Oct 2020 03:17:47 +0000 (04:17 +0100)]
Merge branch 'json-adapt'
Daniele Varrazzo [Tue, 27 Oct 2020 18:47:05 +0000 (19:47 +0100)]
Added JSON loaders
Daniele Varrazzo [Tue, 27 Oct 2020 17:35:13 +0000 (18:35 +0100)]
Added tests to verify json dump customisation
Daniele Varrazzo [Tue, 27 Oct 2020 16:17:21 +0000 (17:17 +0100)]
Added json binary dumpers
Daniele Varrazzo [Tue, 27 Oct 2020 16:09:08 +0000 (17:09 +0100)]
Added json text dump
Daniele Varrazzo [Wed, 28 Oct 2020 00:45:45 +0000 (01:45 +0100)]
Added missing methods to psycopg3.pq.Escaping proto