instructure-pysqlsync 0.8.5.dev1__tar.gz → 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {instructure_pysqlsync-0.8.5.dev1/instructure_pysqlsync.egg-info → instructure_pysqlsync-1.0.0}/PKG-INFO +8 -10
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0/instructure_pysqlsync.egg-info}/PKG-INFO +8 -10
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/instructure_pysqlsync.egg-info/requires.txt +5 -10
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pyproject.toml +7 -9
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/__init__.py +2 -2
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/base.py +5 -3
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/connection.py +3 -13
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/data/generator.py +55 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/inspection.py +1 -2
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/util/dispatch.py +1 -3
- instructure_pysqlsync-1.0.0/pysqlsync/util/typing.py +6 -0
- instructure_pysqlsync-0.8.5.dev1/pysqlsync/util/typing.py +0 -13
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/LICENSE +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/MANIFEST.in +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/README.md +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/instructure_pysqlsync.egg-info/SOURCES.txt +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/instructure_pysqlsync.egg-info/dependency_links.txt +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/instructure_pysqlsync.egg-info/top_level.txt +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/instructure_pysqlsync.egg-info/zip-safe +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/data/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/data/exchange.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/README.md +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/delta/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/delta/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/delta/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/delta/engine.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/delta/generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/delta/object_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/README.md +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/connection.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/discovery.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/engine.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/mutation.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/object_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/connection.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/discovery.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/engine.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/mutation.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/object_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/README.md +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/connection.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/discovery.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/engine.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/mutation.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/object_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/connection.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/discovery.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/engine.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/mutation.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/postgresql/object_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/redshift/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/redshift/connection.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/redshift/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/redshift/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/redshift/engine.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/redshift/generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/snowflake/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/snowflake/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/snowflake/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/snowflake/engine.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/snowflake/generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/snowflake/object_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/test/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/test/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/trino/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/trino/connection.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/trino/dependency.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/trino/discovery.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/trino/engine.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/trino/generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/factory.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/constraints.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/discovery.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/mutation.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/object_dict.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/object_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/py_to_sql.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/sql_to_py.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/data_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/entity_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/id_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/key_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/properties.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/py.typed +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/python_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/resultset.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/util/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/util/dataclasses.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/setup.cfg +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/setup.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/example.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/measure.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/model/__init__.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/model/country.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/model/event.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/model/school.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/model/user.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/params.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/tables.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_api.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_connection.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_converter.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_discovery.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_exchange.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_generator.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_mssql_odbc_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_performance.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_synchronize.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_types.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/timed_test.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/update_readme.py +0 -0
- {instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/util.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: instructure-pysqlsync
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: Synchronize schema and large volumes of data
|
|
5
5
|
Author-email: "Instructure, Inc." <dapclient@instructure.com>
|
|
6
6
|
Maintainer-email: "Instructure, Inc." <dapclient@instructure.com>
|
|
@@ -8,11 +8,10 @@ License-Expression: MIT
|
|
|
8
8
|
Project-URL: Homepage, https://github.com/instructure-internal/pysqlsync
|
|
9
9
|
Project-URL: Source, https://github.com/instructure-internal/pysqlsync
|
|
10
10
|
Keywords: synchronization,sql-schema,sql-query,sql-insert,database-clients
|
|
11
|
-
Classifier: Development Status ::
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Operating System :: OS Independent
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -23,19 +22,18 @@ Classifier: Topic :: Database :: Database Engines/Servers
|
|
|
23
22
|
Classifier: Topic :: Software Development :: Code Generators
|
|
24
23
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
24
|
Classifier: Typing :: Typed
|
|
26
|
-
Requires-Python: >=3.
|
|
25
|
+
Requires-Python: >=3.10
|
|
27
26
|
Description-Content-Type: text/markdown
|
|
28
27
|
License-File: LICENSE
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist: truststore>=0.10; python_version >= "3.10"
|
|
28
|
+
Requires-Dist: instructure-json-strong-typing>=1.0.0
|
|
29
|
+
Requires-Dist: truststore>=0.10
|
|
32
30
|
Requires-Dist: typing_extensions>=4.15; python_version < "3.12"
|
|
33
31
|
Provides-Extra: tsv
|
|
34
|
-
Requires-Dist: tsv2py>=0.
|
|
32
|
+
Requires-Dist: instructure-tsv2py>=1.0.0; extra == "tsv"
|
|
35
33
|
Provides-Extra: postgresql
|
|
36
|
-
Requires-Dist: asyncpg>=0.
|
|
34
|
+
Requires-Dist: asyncpg>=0.31; extra == "postgresql"
|
|
37
35
|
Provides-Extra: oracle
|
|
38
|
-
Requires-Dist: oracledb>=
|
|
36
|
+
Requires-Dist: oracledb>=4.0; extra == "oracle"
|
|
39
37
|
Provides-Extra: mysql
|
|
40
38
|
Requires-Dist: aiomysql>=0.3; extra == "mysql"
|
|
41
39
|
Requires-Dist: PyMySQL[rsa]>=1.1; extra == "mysql"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: instructure-pysqlsync
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.0
|
|
4
4
|
Summary: Synchronize schema and large volumes of data
|
|
5
5
|
Author-email: "Instructure, Inc." <dapclient@instructure.com>
|
|
6
6
|
Maintainer-email: "Instructure, Inc." <dapclient@instructure.com>
|
|
@@ -8,11 +8,10 @@ License-Expression: MIT
|
|
|
8
8
|
Project-URL: Homepage, https://github.com/instructure-internal/pysqlsync
|
|
9
9
|
Project-URL: Source, https://github.com/instructure-internal/pysqlsync
|
|
10
10
|
Keywords: synchronization,sql-schema,sql-query,sql-insert,database-clients
|
|
11
|
-
Classifier: Development Status ::
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Operating System :: OS Independent
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
16
15
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
17
|
Classifier: Programming Language :: Python :: 3.12
|
|
@@ -23,19 +22,18 @@ Classifier: Topic :: Database :: Database Engines/Servers
|
|
|
23
22
|
Classifier: Topic :: Software Development :: Code Generators
|
|
24
23
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
24
|
Classifier: Typing :: Typed
|
|
26
|
-
Requires-Python: >=3.
|
|
25
|
+
Requires-Python: >=3.10
|
|
27
26
|
Description-Content-Type: text/markdown
|
|
28
27
|
License-File: LICENSE
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist: truststore>=0.10; python_version >= "3.10"
|
|
28
|
+
Requires-Dist: instructure-json-strong-typing>=1.0.0
|
|
29
|
+
Requires-Dist: truststore>=0.10
|
|
32
30
|
Requires-Dist: typing_extensions>=4.15; python_version < "3.12"
|
|
33
31
|
Provides-Extra: tsv
|
|
34
|
-
Requires-Dist: tsv2py>=0.
|
|
32
|
+
Requires-Dist: instructure-tsv2py>=1.0.0; extra == "tsv"
|
|
35
33
|
Provides-Extra: postgresql
|
|
36
|
-
Requires-Dist: asyncpg>=0.
|
|
34
|
+
Requires-Dist: asyncpg>=0.31; extra == "postgresql"
|
|
37
35
|
Provides-Extra: oracle
|
|
38
|
-
Requires-Dist: oracledb>=
|
|
36
|
+
Requires-Dist: oracledb>=4.0; extra == "oracle"
|
|
39
37
|
Provides-Extra: mysql
|
|
40
38
|
Requires-Dist: aiomysql>=0.3; extra == "mysql"
|
|
41
39
|
Requires-Dist: PyMySQL[rsa]>=1.1; extra == "mysql"
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
[:python_version < "3.10"]
|
|
4
|
-
certifi>=2025.11.12
|
|
1
|
+
instructure-json-strong-typing>=1.0.0
|
|
2
|
+
truststore>=0.10
|
|
5
3
|
|
|
6
4
|
[:python_version < "3.12"]
|
|
7
5
|
typing_extensions>=4.15
|
|
8
6
|
|
|
9
|
-
[:python_version >= "3.10"]
|
|
10
|
-
truststore>=0.10
|
|
11
|
-
|
|
12
7
|
[mssql]
|
|
13
8
|
pyodbc>=5.3
|
|
14
9
|
|
|
@@ -17,10 +12,10 @@ aiomysql>=0.3
|
|
|
17
12
|
PyMySQL[rsa]>=1.1
|
|
18
13
|
|
|
19
14
|
[oracle]
|
|
20
|
-
oracledb>=
|
|
15
|
+
oracledb>=4.0
|
|
21
16
|
|
|
22
17
|
[postgresql]
|
|
23
|
-
asyncpg>=0.
|
|
18
|
+
asyncpg>=0.31
|
|
24
19
|
|
|
25
20
|
[snowflake]
|
|
26
21
|
snowflake-connector-python>=3.18
|
|
@@ -29,4 +24,4 @@ snowflake-connector-python>=3.18
|
|
|
29
24
|
aiotrino>=0.3
|
|
30
25
|
|
|
31
26
|
[tsv]
|
|
32
|
-
tsv2py>=0.
|
|
27
|
+
instructure-tsv2py>=1.0.0
|
|
@@ -14,13 +14,12 @@ authors = [
|
|
|
14
14
|
maintainers = [
|
|
15
15
|
{ name = "Instructure, Inc.", email = "dapclient@instructure.com" }
|
|
16
16
|
]
|
|
17
|
-
requires-python = ">=3.
|
|
17
|
+
requires-python = ">=3.10"
|
|
18
18
|
classifiers = [
|
|
19
|
-
"Development Status ::
|
|
19
|
+
"Development Status :: 5 - Production/Stable",
|
|
20
20
|
"Intended Audience :: Developers",
|
|
21
21
|
"Operating System :: OS Independent",
|
|
22
22
|
"Programming Language :: Python :: 3",
|
|
23
|
-
"Programming Language :: Python :: 3.9",
|
|
24
23
|
"Programming Language :: Python :: 3.10",
|
|
25
24
|
"Programming Language :: Python :: 3.11",
|
|
26
25
|
"Programming Language :: Python :: 3.12",
|
|
@@ -33,22 +32,21 @@ classifiers = [
|
|
|
33
32
|
"Typing :: Typed"
|
|
34
33
|
]
|
|
35
34
|
dependencies = [
|
|
36
|
-
"
|
|
37
|
-
"
|
|
38
|
-
"truststore >= 0.10; python_version>='3.10'",
|
|
35
|
+
"instructure-json-strong-typing >= 1.0.0",
|
|
36
|
+
"truststore >= 0.10",
|
|
39
37
|
"typing_extensions >= 4.15; python_version < '3.12'"
|
|
40
38
|
]
|
|
41
39
|
dynamic = ["version"]
|
|
42
40
|
|
|
43
41
|
[project.optional-dependencies]
|
|
44
42
|
tsv = [
|
|
45
|
-
"tsv2py >= 0.
|
|
43
|
+
"instructure-tsv2py >= 1.0.0"
|
|
46
44
|
]
|
|
47
45
|
postgresql = [
|
|
48
|
-
"asyncpg >= 0.
|
|
46
|
+
"asyncpg >= 0.31"
|
|
49
47
|
]
|
|
50
48
|
oracle = [
|
|
51
|
-
"oracledb >=
|
|
49
|
+
"oracledb >= 4.0"
|
|
52
50
|
]
|
|
53
51
|
mysql = [
|
|
54
52
|
"aiomysql >= 0.3",
|
|
@@ -7,9 +7,9 @@ of Python language elements and database drivers (client libraries).
|
|
|
7
7
|
:see: https://github.com/instructure-internal/pysqlsync
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
__version__ = "0.
|
|
10
|
+
__version__ = "1.0.0"
|
|
11
11
|
__author__ = "Instructure, Inc."
|
|
12
12
|
__copyright__ = "Copyright 2023-2025, Levente Hunyadi; 2026 Instructure, Inc."
|
|
13
13
|
__license__ = "MIT"
|
|
14
14
|
__maintainer__ = "Instructure, Inc."
|
|
15
|
-
__status__ = "
|
|
15
|
+
__status__ = "Production"
|
|
@@ -721,7 +721,9 @@ class TransformerDataSource(CompositeDataSource):
|
|
|
721
721
|
for transformer in self.transformers:
|
|
722
722
|
fns.append(await transformer.get(batch))
|
|
723
723
|
yield [
|
|
724
|
-
tuple(
|
|
724
|
+
tuple(
|
|
725
|
+
((fn(field) if field is not None else None) if fn is not None else field) for fn, field in zip(fns, record, strict=True)
|
|
726
|
+
)
|
|
725
727
|
for record in batch
|
|
726
728
|
]
|
|
727
729
|
|
|
@@ -751,7 +753,7 @@ class SelectorTransformerDataSource(CompositeDataSource):
|
|
|
751
753
|
yield [
|
|
752
754
|
tuple(
|
|
753
755
|
((fn(field) if field is not None else None) if fn is not None else field)
|
|
754
|
-
for fn, field in zip(fns, (record[i] for i in indices))
|
|
756
|
+
for fn, field in zip(fns, (record[i] for i in indices), strict=True)
|
|
755
757
|
)
|
|
756
758
|
for record in batch
|
|
757
759
|
]
|
|
@@ -1091,7 +1093,7 @@ class BaseContext(abc.ABC):
|
|
|
1091
1093
|
|
|
1092
1094
|
indices: list[int] = []
|
|
1093
1095
|
transformers: list[RecordTransformer] = []
|
|
1094
|
-
for index, field_type, field_name in zip(range(len(field_types)), field_types, field_names):
|
|
1096
|
+
for index, field_type, field_name in zip(range(len(field_types)), field_types, field_names, strict=True):
|
|
1095
1097
|
if field_type is type(None) or not field_name:
|
|
1096
1098
|
continue
|
|
1097
1099
|
|
|
@@ -8,15 +8,11 @@ This module helps create a secure sockets layer (SSL) context.
|
|
|
8
8
|
|
|
9
9
|
import enum
|
|
10
10
|
import ssl
|
|
11
|
-
import sys
|
|
12
11
|
from dataclasses import dataclass
|
|
13
12
|
from typing import Optional
|
|
14
13
|
from urllib.parse import quote
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
import truststore
|
|
18
|
-
else:
|
|
19
|
-
import certifi
|
|
15
|
+
import truststore
|
|
20
16
|
|
|
21
17
|
|
|
22
18
|
@enum.unique
|
|
@@ -53,18 +49,12 @@ def create_context(ssl_mode: ConnectionSSLMode) -> Optional[ssl.SSLContext]:
|
|
|
53
49
|
ctx.verify_mode = ssl.CERT_NONE
|
|
54
50
|
return ctx
|
|
55
51
|
elif ssl_mode is ConnectionSSLMode.verify_ca:
|
|
56
|
-
|
|
57
|
-
ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
|
|
58
|
-
else:
|
|
59
|
-
ctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=certifi.where())
|
|
52
|
+
ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
|
|
60
53
|
ctx.check_hostname = False
|
|
61
54
|
ctx.verify_mode = ssl.CERT_REQUIRED
|
|
62
55
|
return ctx
|
|
63
56
|
elif ssl_mode is ConnectionSSLMode.verify_full:
|
|
64
|
-
|
|
65
|
-
ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
|
|
66
|
-
else:
|
|
67
|
-
ctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH, cafile=certifi.where())
|
|
57
|
+
ctx = truststore.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
|
|
68
58
|
ctx.check_hostname = True
|
|
69
59
|
ctx.verify_mode = ssl.CERT_REQUIRED
|
|
70
60
|
return ctx
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/data/generator.py
RENAMED
|
@@ -154,6 +154,61 @@ def random_alphanumeric_str(min_len: int, max_len: int) -> str:
|
|
|
154
154
|
return "".join(random.choices(string.ascii_letters + string.digits, k=random.randint(min_len, max_len)))
|
|
155
155
|
|
|
156
156
|
|
|
157
|
+
_DIACRITICS = (
|
|
158
|
+
"àáâãäåāăąèéêëēęìíîïīįòóôõöøőōùúûüűūųýÿçćčďðģğķļĺľłñńņňřŕśşšșťţþțźżžæœßı"
|
|
159
|
+
"ÀÁÂÃÄÅĀĂĄÈÉÊËĒĘÌÍÎÏĪĮÒÓÔÕÖØŐŌÙÚÛÜŰŪŲÝŸÇĆČĎÐĢĞĶĻĹĽŁÑŃŅŇŘŔŚŞŠȘŤŢÞȚŹŻŽÆŒẞİ"
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
_EMOJIS = "😂❤️🔥🥰🙏👍🎉😉💀"
|
|
163
|
+
|
|
164
|
+
UTF8_CHARS = string.ascii_letters + string.digits + _DIACRITICS + _EMOJIS
|
|
165
|
+
UTF8_CHARS_MAX_BYTE_LEN = {k: [ch for ch in UTF8_CHARS if len(ch.encode("utf-8")) <= k] for k in range(1, 5)}
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def random_utf8_str(min_len: int, max_len: int) -> str:
|
|
169
|
+
"""
|
|
170
|
+
Creates a random string of UTF-8 characters.
|
|
171
|
+
|
|
172
|
+
Languages covered:
|
|
173
|
+
* French
|
|
174
|
+
* Spanish
|
|
175
|
+
* Portuguese
|
|
176
|
+
* German
|
|
177
|
+
* Italian
|
|
178
|
+
* Nordic
|
|
179
|
+
* Czech
|
|
180
|
+
* Slovak
|
|
181
|
+
* Polish
|
|
182
|
+
* Hungarian
|
|
183
|
+
* Romanian
|
|
184
|
+
* Latvian
|
|
185
|
+
* Lithuanian
|
|
186
|
+
* Turkish
|
|
187
|
+
* Welsh
|
|
188
|
+
* Icelandic
|
|
189
|
+
|
|
190
|
+
:param min_len: The minimum number of bytes the string should comprise of.
|
|
191
|
+
:param max_len: The maximum number of bytes the string should comprise of.
|
|
192
|
+
"""
|
|
193
|
+
|
|
194
|
+
if min_len < 0 or max_len < 0:
|
|
195
|
+
raise ValueError("length bounds must be non-negative")
|
|
196
|
+
if min_len > max_len:
|
|
197
|
+
raise ValueError("min_len must be <= max_len")
|
|
198
|
+
|
|
199
|
+
target_len = random.randint(min_len, max_len)
|
|
200
|
+
current_len = 0
|
|
201
|
+
|
|
202
|
+
chars: list[str] = []
|
|
203
|
+
while current_len < target_len:
|
|
204
|
+
max_char_byte_len = min(target_len - current_len, 4)
|
|
205
|
+
ch = random.choice(UTF8_CHARS_MAX_BYTE_LEN[max_char_byte_len])
|
|
206
|
+
chars.append(ch)
|
|
207
|
+
current_len += len(ch.encode("utf-8"))
|
|
208
|
+
|
|
209
|
+
return "".join(chars)
|
|
210
|
+
|
|
211
|
+
|
|
157
212
|
P = TypeVar("P")
|
|
158
213
|
R = TypeVar("R")
|
|
159
214
|
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/inspection.py
RENAMED
|
@@ -5,7 +5,7 @@ import sys
|
|
|
5
5
|
import types
|
|
6
6
|
import uuid
|
|
7
7
|
from ipaddress import IPv4Address, IPv6Address
|
|
8
|
-
from typing import Any, Optional
|
|
8
|
+
from typing import Any, Optional, TypeGuard
|
|
9
9
|
|
|
10
10
|
from strong_typing.core import JsonType
|
|
11
11
|
from strong_typing.inspection import (
|
|
@@ -23,7 +23,6 @@ from strong_typing.inspection import (
|
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
from ..model.properties import get_field_properties, is_primary_key_type
|
|
26
|
-
from ..util.typing import TypeGuard
|
|
27
26
|
|
|
28
27
|
|
|
29
28
|
def is_simple_type(typ: Any) -> bool:
|
|
@@ -2,9 +2,7 @@ import asyncio
|
|
|
2
2
|
import functools
|
|
3
3
|
import inspect
|
|
4
4
|
from concurrent.futures import ThreadPoolExecutor
|
|
5
|
-
from typing import Callable, Coroutine, TypeVar
|
|
6
|
-
|
|
7
|
-
from .typing import ParamSpec
|
|
5
|
+
from typing import Callable, Coroutine, ParamSpec, TypeVar
|
|
8
6
|
|
|
9
7
|
R = TypeVar("R")
|
|
10
8
|
P = ParamSpec("P")
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import sys
|
|
2
|
-
|
|
3
|
-
if sys.version_info >= (3, 10):
|
|
4
|
-
from typing import ParamSpec as ParamSpec # noqa: F401
|
|
5
|
-
from typing import TypeGuard as TypeGuard # noqa: F401
|
|
6
|
-
else:
|
|
7
|
-
from typing_extensions import ParamSpec as ParamSpec # noqa: F401
|
|
8
|
-
from typing_extensions import TypeGuard as TypeGuard # noqa: F401
|
|
9
|
-
|
|
10
|
-
if sys.version_info >= (3, 12):
|
|
11
|
-
from typing import override as override # noqa: F401
|
|
12
|
-
else:
|
|
13
|
-
from typing_extensions import override as override # noqa: F401
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/README.md
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/__init__.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/delta/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/delta/engine.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/README.md
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mssql/mutation.py
RENAMED
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/mysql/mutation.py
RENAMED
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/oracle/engine.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/test/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/trino/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/dialect/trino/engine.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/__init__.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/constraints.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/data_types.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/discovery.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/mutation.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/object_dict.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/object_types.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/py_to_sql.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/formation/sql_to_py.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/__init__.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/data_types.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/entity_types.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/id_types.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/key_types.py
RENAMED
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/model/properties.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/pysqlsync/util/dataclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{instructure_pysqlsync-0.8.5.dev1 → instructure_pysqlsync-1.0.0}/tests/test_mssql_odbc_types.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|