]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commit
Replace c extension with cython versions. 7474/head
authorFederico Caselli <cfederico87@gmail.com>
Fri, 1 Jan 2021 15:09:01 +0000 (16:09 +0100)
committerFederico Caselli <cfederico87@gmail.com>
Fri, 17 Dec 2021 20:29:05 +0000 (21:29 +0100)
commit76fa211620de167b76846f0e5db5b64b8756ad48
treec435dbf6585b3758dc78ee82bf114e162a25d0e1
parent3543fcc9c9601e81560d055ceadaea05c75815c0
Replace c extension with cython versions.

Re-implement c version immutabledict / processors / resultproxy / utils with cython.
Performance is in general in par or better than the c version
Added a collection module that has cython version of OrderedSet and IdentitySet

Added a new test/perf file to compare the implementations.
Run ``python test/perf/compiled_extensions.py all`` to execute the comparison test.

See results here: https://docs.google.com/document/d/1nOcDGojHRtXEkuy4vNXcW_XOJd9gqKhSeALGG3kYr6A/edit?usp=sharing

Fixes: #7256
Change-Id: I2930ef1894b5048210384728118e586e813f6a76
Signed-off-by: Federico Caselli <cfederico87@gmail.com>
43 files changed:
.github/workflows/create-wheels.yaml
MANIFEST.in
lib/sqlalchemy/cextension/immutabledict.c [deleted file]
lib/sqlalchemy/cextension/processors.c [deleted file]
lib/sqlalchemy/cextension/resultproxy.c [deleted file]
lib/sqlalchemy/cyextension/.gitignore [new file with mode: 0644]
lib/sqlalchemy/cyextension/__init__.py [new file with mode: 0644]
lib/sqlalchemy/cyextension/collections.pyx [new file with mode: 0644]
lib/sqlalchemy/cyextension/immutabledict.pxd [new file with mode: 0644]
lib/sqlalchemy/cyextension/immutabledict.pyx [new file with mode: 0644]
lib/sqlalchemy/cyextension/processors.pyx [new file with mode: 0644]
lib/sqlalchemy/cyextension/resultproxy.pyx [new file with mode: 0644]
lib/sqlalchemy/cyextension/util.pyx [new file with mode: 0644]
lib/sqlalchemy/dialects/mssql/pymssql.py
lib/sqlalchemy/dialects/oracle/cx_oracle.py
lib/sqlalchemy/dialects/postgresql/_psycopg_common.py
lib/sqlalchemy/dialects/postgresql/asyncpg.py
lib/sqlalchemy/dialects/postgresql/pg8000.py
lib/sqlalchemy/dialects/sqlite/base.py
lib/sqlalchemy/engine/_py_processors.py [new file with mode: 0644]
lib/sqlalchemy/engine/_py_row.py [new file with mode: 0644]
lib/sqlalchemy/engine/_py_util.py [new file with mode: 0644]
lib/sqlalchemy/engine/processors.py [new file with mode: 0644]
lib/sqlalchemy/engine/result.py
lib/sqlalchemy/engine/row.py
lib/sqlalchemy/engine/util.py
lib/sqlalchemy/processors.py [deleted file]
lib/sqlalchemy/sql/sqltypes.py
lib/sqlalchemy/testing/requirements.py
lib/sqlalchemy/util/_collections.py
lib/sqlalchemy/util/_py_collections.py [new file with mode: 0644]
lib/sqlalchemy/util/langhelpers.py
pyproject.toml
setup.cfg
setup.py
test/aaa_profiling/test_memusage.py
test/base/test_result.py
test/base/test_utils.py
test/engine/test_execute.py
test/engine/test_processors.py
test/orm/test_merge.py
test/perf/compiled_extensions.py [new file with mode: 0644]
test/profiles.txt