2023-01-31T15:01:21,370 Created temporary directory: /tmp/pip-ephem-wheel-cache-16qksvkd 2023-01-31T15:01:21,374 Created temporary directory: /tmp/pip-build-tracker-ikddjg7d 2023-01-31T15:01:21,375 Initialized build tracking at /tmp/pip-build-tracker-ikddjg7d 2023-01-31T15:01:21,375 Created build tracker: /tmp/pip-build-tracker-ikddjg7d 2023-01-31T15:01:21,376 Entered build tracker: /tmp/pip-build-tracker-ikddjg7d 2023-01-31T15:01:21,377 Created temporary directory: /tmp/pip-wheel-voqe5my2 2023-01-31T15:01:21,385 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2023-01-31T15:01:21,390 Created temporary directory: /tmp/pip-ephem-wheel-cache-56c5cmft 2023-01-31T15:01:21,446 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-01-31T15:01:21,453 2 location(s) to search for versions of sqliteframe: 2023-01-31T15:01:21,453 * https://pypi.org/simple/sqliteframe/ 2023-01-31T15:01:21,453 * https://www.piwheels.org/simple/sqliteframe/ 2023-01-31T15:01:21,454 Fetching project page and analyzing links: https://pypi.org/simple/sqliteframe/ 2023-01-31T15:01:21,455 Getting page https://pypi.org/simple/sqliteframe/ 2023-01-31T15:01:21,458 Found index url https://pypi.org/simple 2023-01-31T15:01:21,681 Fetched page https://pypi.org/simple/sqliteframe/ as application/vnd.pypi.simple.v1+json 2023-01-31T15:01:21,684 Skipping link: No binaries permitted for sqliteframe: https://files.pythonhosted.org/packages/6e/08/76914ba08ae99e387ff7f62e70d1a04a603bd6a10118b8a73a344b3bcd94/SQLiteFrame-0.1.1-py3-none-any.whl (from https://pypi.org/simple/sqliteframe/) 2023-01-31T15:01:21,685 Found link https://files.pythonhosted.org/packages/d2/02/bf594f6c60a92884131abc0a87d142a71b927310338e1a1e0f670006f734/SQLiteFrame-0.1.1.tar.gz (from https://pypi.org/simple/sqliteframe/), version: 0.1.1 2023-01-31T15:01:21,686 Skipping link: No binaries permitted for sqliteframe: https://files.pythonhosted.org/packages/5f/ac/25a9d7759e50f4267c71d1b9889a147ca3ffb936152e1a8c31d6c0e6e5c5/SQLiteFrame-0.1.2-py3-none-any.whl (from https://pypi.org/simple/sqliteframe/) 2023-01-31T15:01:21,686 Found link https://files.pythonhosted.org/packages/01/0d/4d9317e2b0b3c773af3467a5c777be51d9a0ea97b005427f6a9aae8042ab/SQLiteFrame-0.1.2.tar.gz (from https://pypi.org/simple/sqliteframe/), version: 0.1.2 2023-01-31T15:01:21,687 Fetching project page and analyzing links: https://www.piwheels.org/simple/sqliteframe/ 2023-01-31T15:01:21,688 Getting page https://www.piwheels.org/simple/sqliteframe/ 2023-01-31T15:01:21,690 Found index url https://www.piwheels.org/simple 2023-01-31T15:01:21,933 Fetched page https://www.piwheels.org/simple/sqliteframe/ as text/html 2023-01-31T15:01:21,935 Skipping link: No binaries permitted for sqliteframe: https://www.piwheels.org/simple/sqliteframe/SQLiteFrame-0.1.1-py3-none-any.whl#sha256=c4805fa57b7f5ef0295d8a6ed3959f366c1efa29c80d05535dd54ee6cfcc2cbe (from https://www.piwheels.org/simple/sqliteframe/) 2023-01-31T15:01:21,936 Skipping link: not a file: https://www.piwheels.org/simple/sqliteframe/ 2023-01-31T15:01:21,937 Skipping link: not a file: https://pypi.org/simple/sqliteframe/ 2023-01-31T15:01:21,969 Given no hashes to check 1 links for project 'sqliteframe': discarding no candidates 2023-01-31T15:01:22,000 Collecting sqliteframe==0.1.2 2023-01-31T15:01:22,004 Created temporary directory: /tmp/pip-unpack-h2c1pzcj 2023-01-31T15:01:22,236 Downloading SQLiteFrame-0.1.2.tar.gz (12 kB) 2023-01-31T15:01:22,461 Added sqliteframe==0.1.2 from https://files.pythonhosted.org/packages/01/0d/4d9317e2b0b3c773af3467a5c777be51d9a0ea97b005427f6a9aae8042ab/SQLiteFrame-0.1.2.tar.gz to build tracker '/tmp/pip-build-tracker-ikddjg7d' 2023-01-31T15:01:22,470 Created temporary directory: /tmp/pip-build-env-hmh3vck1 2023-01-31T15:01:22,481 Installing build dependencies: started 2023-01-31T15:01:22,484 Running command pip subprocess to install build dependencies 2023-01-31T15:01:25,239 Using pip 22.3 from /home/piwheels/.local/lib/python3.7/site-packages/pip (python 3.7) 2023-01-31T15:01:26,237 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2023-01-31T15:01:26,289 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-01-31T15:01:30,097 Collecting setuptools 2023-01-31T15:01:30,336 Using cached https://www.piwheels.org/simple/setuptools/setuptools-67.0.0-py3-none-any.whl (1.1 MB) 2023-01-31T15:01:30,979 Collecting wheel 2023-01-31T15:01:31,012 Using cached https://www.piwheels.org/simple/wheel/wheel-0.38.4-py3-none-any.whl (36 kB) 2023-01-31T15:01:37,874 Installing collected packages: wheel, setuptools 2023-01-31T15:01:38,146 Creating /tmp/pip-build-env-hmh3vck1/overlay/bin 2023-01-31T15:01:38,150 changing mode of /tmp/pip-build-env-hmh3vck1/overlay/bin/wheel to 755 2023-01-31T15:01:42,325 Successfully installed setuptools-67.0.0 wheel-0.38.4 2023-01-31T15:01:42,360 [notice] A new release of pip available: 22.3 -> 22.3.1 2023-01-31T15:01:42,361 [notice] To update, run: python3 -m pip install --upgrade pip 2023-01-31T15:01:42,812 Installing build dependencies: finished with status 'done' 2023-01-31T15:01:42,823 Getting requirements to build wheel: started 2023-01-31T15:01:42,825 Running command Getting requirements to build wheel 2023-01-31T15:01:44,435 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:44,437 !! 2023-01-31T15:01:44,438 ########################################################################## 2023-01-31T15:01:44,438 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:44,438 ########################################################################## 2023-01-31T15:01:44,439 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:44,440 `readme = ' \n\n\n
\n
\n Logo\n
\n \n

\n A lightweight, zero-dependency ORM for SQLite in Python\n
\n Explore the docs »\n
\n
\n Get Started\n ·\n Basic Usage\n ·\n License\n

\n
\n\n\n\n\n## About The Project\nSQLiteFrame is an SQLite ORM for python, designed to be as lightweight, intuitive, and simple to use as possible. \nIt is designed to closely mimic SQL syntax whilst remaining as pythonic as possible to save developers valuable time _(and brain cells)_ when interacting with SQLite databases, by building reusable SQLite query objects using method-chaining, and abstracting away SQLite\'s **devilish** connection and cursor system with context-managers.\n\n

(back to top)

\n\n\n\n\n## Getting Started\n\nSQLiteFrame is available on [PyPI](https://pypi.org/project/SQLiteFrame). Simply install the package into your project environment with PIP:\n```\npip install SQLiteFrame\n```\n\nTo install specific previous versions, take a look at the [version history](https://github.com/Kieran-Lock/SQLiteFrame/releases), locate the version tag `(vX.Y.Z)`, and run:\n```\npip install SQLiteFrame==X.Y.Z\n```\n\nSQLiteFrame has **ZERO** external dependencies - it uses only the standard library\'s `sqlite3` to execute SQLite commands.\n\n

(back to top)

\n\n\n\n\n## Usage\n\n### Creating a table\nTo create a table, use the template below. This will automatically run the CreateTable SQLite command for you:\n```py\nfrom sqliteframe import Database, Table, String, Integer, Boolean\n\n\ndatabase = Database("database.db", output=False) # When the output parameter is True, the formed SQL query will be outputted into the console as a string every time a query is executed\n\n\n@Table(database)\nclass TableName:\n primary_key_field = String(primary_key=True)\n second_column = Integer\n third_column = Boolean(nullable=True)\n```\n\n### Inserting Data\nTo insert data into an existing table, use the following query template:\n```py\ninsert_statement = TableName.insert_into({\n TableName.primary_key_field: "PrimaryKey1",\n TableName.second_column: 1_000,\n TableName.third_column: True\n})\ninsert_statement.execute()\n```\n\n### Fetching / Selecting Data\nFetching / selecting data from an existing table with pre-inserted data is done as below:\n```py\nselect_statement = TableName.select(TableName.second_column, TableName.third_column)\nselect_statement.execute()\n```\n\n### Linking Tables (Foreign Keys)\nLinking tables can be done with Foreign Keys in SQLiteFrame:\n```py\nfrom sqliteframe import Database, Table, String, Integer, Boolean, ForeignKey\n\n\ndatabase = Database("database.db", output=False)\n\n\n@Table(database)\nclass FirstTableName:\n primary_key_field = String(primary_key=True)\n second_column = Integer\n third_column = Boolean(nullable=True)\n\n\n@Table(database)\nclass SecondTableName:\n primary_key_field = Integer(primary_key=True)\n second_column = Boolean(nullable=True)\n third_column = String\n foreign_key_column = ForeignKey(FirstTableName) # This column now references the primary key of the FirstTableName table, and will infer its type\n```\n\n### Complex Data Fetching / Selection\nTo build more complex select queries, you can use `join`, `where`, and `order by`:\n```py\nfrom sqliteframe import JoinTypes, OrderTypes\n\n\nselect_statement = FirstTableName.select(SecondTableName.second_column, FirstTableName.third_column).join(\n SecondTableName, SecondTableName.foreign_key_column == FirstTableName.primary_key_field, join_type=JoinTypes.LEFT\n).where(\n SecondTableName.third_column == "Criteria"\n).order_by(\n FirstTableName.second_column, (OrderTypes.DESCENDING, OrderTypes.NULLS_FIRST)\n)\nselect_statement.execute()\n```\n\n### Editing Data\nTo edit pre-inserted data, a `set` query can be used:\n```py\nset_statement = FirstTableName.set({\n TableName.second_column: 10_000,\n TableName.third_column: None # This column is nullable, and so this is acceptable\n}).where(\n (Person.primary_key_column == "PrimaryKey1") & (Person.second_column > 500) # Brackets are ESSENTIAL with complex where clauses, as these statements use bitwise operators, which often have unexpected operator precedence\n)\nset_statement.execute()\n```\n_NOTE: The where clause can be emitted from this statement, but this would update **every** record in the target table._\n\n### Deleting Data\nTo delete pre-inserted table data, use the `delete_from` query:\n```py\ndelete_statement = TableName.delete_from().where(\n (TableName.second_column <= 250)\n)\ndelete_statement.execute()\n```\n_NOTE: The where clause can be emitted from this statement, but this would delete **every** record in the target table._\n\n### Dropping Tables\nDropping tables does not delete the table reference from python - just in the SQL. Tables which others tables depend on / reference cannot be deleted by default to maintain referential integrity. This behaviour can be changed when defining the referencing foreign key column. \nTo entirely drop (delete) an existing table, use the `drop_table` statement:\n```py\nSecondTableName.drop_table().execute() # This table is dropped first as it depends on the FirstTableName table\nFirstTableName.drop_table().execute() # Cannot drop this table until the SecondTableName table is dropped\n```\n\n_For more examples and specific detail, please refer to the [Documentation](https://github.com/Kieran-Lock/SQLiteFrame/blob/master/DOCUMENTATION.md)_\n\n

(back to top)

\n\n\n\n\n## License\n\nDistributed under the MIT License. See [LICENSE](https://github.com/Kieran-Lock/SQLiteFrame/blob/master/LICENSE) for more information.\n\n

(back to top)

\n'` 2023-01-31T15:01:44,441 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:44,441 consider this value unless 'readme' is listed as `dynamic`. 2023-01-31T15:01:44,442 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:44,442 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:44,443 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:44,443 follow strictly the standard. 2023-01-31T15:01:44,443 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-01-31T15:01:44,444 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:44,444 configuration. 2023-01-31T15:01:44,445 !! 2023-01-31T15:01:44,445 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:44,446 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:44,446 !! 2023-01-31T15:01:44,447 ########################################################################## 2023-01-31T15:01:44,447 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:44,448 ########################################################################## 2023-01-31T15:01:44,448 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:44,449 `license = 'MIT'` 2023-01-31T15:01:44,450 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:44,450 consider this value unless 'license' is listed as `dynamic`. 2023-01-31T15:01:44,451 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:44,451 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:44,452 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:44,452 follow strictly the standard. 2023-01-31T15:01:44,453 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-01-31T15:01:44,453 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:44,453 configuration. 2023-01-31T15:01:44,454 !! 2023-01-31T15:01:44,455 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:44,844 running egg_info 2023-01-31T15:01:44,855 writing SQLiteFrame.egg-info/PKG-INFO 2023-01-31T15:01:44,861 writing dependency_links to SQLiteFrame.egg-info/dependency_links.txt 2023-01-31T15:01:44,866 writing top-level names to SQLiteFrame.egg-info/top_level.txt 2023-01-31T15:01:44,916 reading manifest file 'SQLiteFrame.egg-info/SOURCES.txt' 2023-01-31T15:01:44,922 adding license file 'LICENSE' 2023-01-31T15:01:44,932 writing manifest file 'SQLiteFrame.egg-info/SOURCES.txt' 2023-01-31T15:01:44,936 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:44,937 !! 2023-01-31T15:01:44,938 ########################################################################## 2023-01-31T15:01:44,938 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:44,939 ########################################################################## 2023-01-31T15:01:44,940 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:44,941 `keywords = ['orm', 'sqlite3', 'schematics']` 2023-01-31T15:01:44,941 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:44,942 consider this value unless 'keywords' is listed as `dynamic`. 2023-01-31T15:01:44,943 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:44,944 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:44,944 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:44,945 follow strictly the standard. 2023-01-31T15:01:44,946 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-01-31T15:01:44,946 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:44,947 configuration. 2023-01-31T15:01:44,948 !! 2023-01-31T15:01:44,949 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:44,949 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:44,950 !! 2023-01-31T15:01:44,951 ########################################################################## 2023-01-31T15:01:44,952 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:44,952 ########################################################################## 2023-01-31T15:01:44,953 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:44,954 `classifiers = ['License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3', 'Intended Audience :: Developers']` 2023-01-31T15:01:44,954 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:44,955 consider this value unless 'classifiers' is listed as `dynamic`. 2023-01-31T15:01:44,956 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:44,957 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:44,957 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:44,958 follow strictly the standard. 2023-01-31T15:01:44,958 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-01-31T15:01:44,959 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:44,959 configuration. 2023-01-31T15:01:44,960 !! 2023-01-31T15:01:44,961 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:44,962 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'urls' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:44,962 !! 2023-01-31T15:01:44,963 ########################################################################## 2023-01-31T15:01:44,964 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:44,964 ########################################################################## 2023-01-31T15:01:44,966 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:44,967 `urls = {'GitHub': 'https://github.com/Kieran-Lock/SQLiteFrame', 'Documentation': 'https://github.com/Kieran-Lock/SQLiteFrame/blob/master/DOCUMENTATION.md'}` 2023-01-31T15:01:44,968 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:44,968 consider this value unless 'urls' is listed as `dynamic`. 2023-01-31T15:01:44,969 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:44,970 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:44,970 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:44,970 follow strictly the standard. 2023-01-31T15:01:44,971 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2023-01-31T15:01:44,971 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:44,972 configuration. 2023-01-31T15:01:44,973 !! 2023-01-31T15:01:44,974 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:45,109 Getting requirements to build wheel: finished with status 'done' 2023-01-31T15:01:45,129 Created temporary directory: /tmp/pip-modern-metadata-kw8858jh 2023-01-31T15:01:45,134 Preparing metadata (pyproject.toml): started 2023-01-31T15:01:45,137 Running command Preparing metadata (pyproject.toml) 2023-01-31T15:01:46,565 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:46,567 !! 2023-01-31T15:01:46,568 ########################################################################## 2023-01-31T15:01:46,568 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:46,568 ########################################################################## 2023-01-31T15:01:46,569 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:46,570 `readme = ' \n\n\n
\n
\n Logo\n
\n \n

\n A lightweight, zero-dependency ORM for SQLite in Python\n
\n Explore the docs »\n
\n
\n Get Started\n ·\n Basic Usage\n ·\n License\n

\n
\n\n\n\n\n## About The Project\nSQLiteFrame is an SQLite ORM for python, designed to be as lightweight, intuitive, and simple to use as possible. \nIt is designed to closely mimic SQL syntax whilst remaining as pythonic as possible to save developers valuable time _(and brain cells)_ when interacting with SQLite databases, by building reusable SQLite query objects using method-chaining, and abstracting away SQLite\'s **devilish** connection and cursor system with context-managers.\n\n

(back to top)

\n\n\n\n\n## Getting Started\n\nSQLiteFrame is available on [PyPI](https://pypi.org/project/SQLiteFrame). Simply install the package into your project environment with PIP:\n```\npip install SQLiteFrame\n```\n\nTo install specific previous versions, take a look at the [version history](https://github.com/Kieran-Lock/SQLiteFrame/releases), locate the version tag `(vX.Y.Z)`, and run:\n```\npip install SQLiteFrame==X.Y.Z\n```\n\nSQLiteFrame has **ZERO** external dependencies - it uses only the standard library\'s `sqlite3` to execute SQLite commands.\n\n

(back to top)

\n\n\n\n\n## Usage\n\n### Creating a table\nTo create a table, use the template below. This will automatically run the CreateTable SQLite command for you:\n```py\nfrom sqliteframe import Database, Table, String, Integer, Boolean\n\n\ndatabase = Database("database.db", output=False) # When the output parameter is True, the formed SQL query will be outputted into the console as a string every time a query is executed\n\n\n@Table(database)\nclass TableName:\n primary_key_field = String(primary_key=True)\n second_column = Integer\n third_column = Boolean(nullable=True)\n```\n\n### Inserting Data\nTo insert data into an existing table, use the following query template:\n```py\ninsert_statement = TableName.insert_into({\n TableName.primary_key_field: "PrimaryKey1",\n TableName.second_column: 1_000,\n TableName.third_column: True\n})\ninsert_statement.execute()\n```\n\n### Fetching / Selecting Data\nFetching / selecting data from an existing table with pre-inserted data is done as below:\n```py\nselect_statement = TableName.select(TableName.second_column, TableName.third_column)\nselect_statement.execute()\n```\n\n### Linking Tables (Foreign Keys)\nLinking tables can be done with Foreign Keys in SQLiteFrame:\n```py\nfrom sqliteframe import Database, Table, String, Integer, Boolean, ForeignKey\n\n\ndatabase = Database("database.db", output=False)\n\n\n@Table(database)\nclass FirstTableName:\n primary_key_field = String(primary_key=True)\n second_column = Integer\n third_column = Boolean(nullable=True)\n\n\n@Table(database)\nclass SecondTableName:\n primary_key_field = Integer(primary_key=True)\n second_column = Boolean(nullable=True)\n third_column = String\n foreign_key_column = ForeignKey(FirstTableName) # This column now references the primary key of the FirstTableName table, and will infer its type\n```\n\n### Complex Data Fetching / Selection\nTo build more complex select queries, you can use `join`, `where`, and `order by`:\n```py\nfrom sqliteframe import JoinTypes, OrderTypes\n\n\nselect_statement = FirstTableName.select(SecondTableName.second_column, FirstTableName.third_column).join(\n SecondTableName, SecondTableName.foreign_key_column == FirstTableName.primary_key_field, join_type=JoinTypes.LEFT\n).where(\n SecondTableName.third_column == "Criteria"\n).order_by(\n FirstTableName.second_column, (OrderTypes.DESCENDING, OrderTypes.NULLS_FIRST)\n)\nselect_statement.execute()\n```\n\n### Editing Data\nTo edit pre-inserted data, a `set` query can be used:\n```py\nset_statement = FirstTableName.set({\n TableName.second_column: 10_000,\n TableName.third_column: None # This column is nullable, and so this is acceptable\n}).where(\n (Person.primary_key_column == "PrimaryKey1") & (Person.second_column > 500) # Brackets are ESSENTIAL with complex where clauses, as these statements use bitwise operators, which often have unexpected operator precedence\n)\nset_statement.execute()\n```\n_NOTE: The where clause can be emitted from this statement, but this would update **every** record in the target table._\n\n### Deleting Data\nTo delete pre-inserted table data, use the `delete_from` query:\n```py\ndelete_statement = TableName.delete_from().where(\n (TableName.second_column <= 250)\n)\ndelete_statement.execute()\n```\n_NOTE: The where clause can be emitted from this statement, but this would delete **every** record in the target table._\n\n### Dropping Tables\nDropping tables does not delete the table reference from python - just in the SQL. Tables which others tables depend on / reference cannot be deleted by default to maintain referential integrity. This behaviour can be changed when defining the referencing foreign key column. \nTo entirely drop (delete) an existing table, use the `drop_table` statement:\n```py\nSecondTableName.drop_table().execute() # This table is dropped first as it depends on the FirstTableName table\nFirstTableName.drop_table().execute() # Cannot drop this table until the SecondTableName table is dropped\n```\n\n_For more examples and specific detail, please refer to the [Documentation](https://github.com/Kieran-Lock/SQLiteFrame/blob/master/DOCUMENTATION.md)_\n\n

(back to top)

\n\n\n\n\n## License\n\nDistributed under the MIT License. See [LICENSE](https://github.com/Kieran-Lock/SQLiteFrame/blob/master/LICENSE) for more information.\n\n

(back to top)

\n'` 2023-01-31T15:01:46,571 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:46,571 consider this value unless 'readme' is listed as `dynamic`. 2023-01-31T15:01:46,572 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:46,572 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:46,573 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:46,573 follow strictly the standard. 2023-01-31T15:01:46,573 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-01-31T15:01:46,574 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:46,574 configuration. 2023-01-31T15:01:46,575 !! 2023-01-31T15:01:46,575 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:46,576 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:46,576 !! 2023-01-31T15:01:46,577 ########################################################################## 2023-01-31T15:01:46,577 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:46,578 ########################################################################## 2023-01-31T15:01:46,578 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:46,579 `license = 'MIT'` 2023-01-31T15:01:46,580 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:46,580 consider this value unless 'license' is listed as `dynamic`. 2023-01-31T15:01:46,581 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:46,581 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:46,582 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:46,582 follow strictly the standard. 2023-01-31T15:01:46,583 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-01-31T15:01:46,583 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:46,583 configuration. 2023-01-31T15:01:46,584 !! 2023-01-31T15:01:46,585 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:46,954 running dist_info 2023-01-31T15:01:46,967 creating /tmp/pip-modern-metadata-kw8858jh/SQLiteFrame.egg-info 2023-01-31T15:01:46,976 writing /tmp/pip-modern-metadata-kw8858jh/SQLiteFrame.egg-info/PKG-INFO 2023-01-31T15:01:46,981 writing dependency_links to /tmp/pip-modern-metadata-kw8858jh/SQLiteFrame.egg-info/dependency_links.txt 2023-01-31T15:01:46,986 writing top-level names to /tmp/pip-modern-metadata-kw8858jh/SQLiteFrame.egg-info/top_level.txt 2023-01-31T15:01:46,989 writing manifest file '/tmp/pip-modern-metadata-kw8858jh/SQLiteFrame.egg-info/SOURCES.txt' 2023-01-31T15:01:47,035 reading manifest file '/tmp/pip-modern-metadata-kw8858jh/SQLiteFrame.egg-info/SOURCES.txt' 2023-01-31T15:01:47,039 adding license file 'LICENSE' 2023-01-31T15:01:47,047 writing manifest file '/tmp/pip-modern-metadata-kw8858jh/SQLiteFrame.egg-info/SOURCES.txt' 2023-01-31T15:01:47,049 creating '/tmp/pip-modern-metadata-kw8858jh/SQLiteFrame-0.1.2.dist-info' 2023-01-31T15:01:47,110 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:47,110 !! 2023-01-31T15:01:47,111 ########################################################################## 2023-01-31T15:01:47,111 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:47,112 ########################################################################## 2023-01-31T15:01:47,112 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:47,113 `keywords = ['orm', 'sqlite3', 'schematics']` 2023-01-31T15:01:47,113 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:47,114 consider this value unless 'keywords' is listed as `dynamic`. 2023-01-31T15:01:47,114 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:47,115 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:47,115 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:47,115 follow strictly the standard. 2023-01-31T15:01:47,116 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-01-31T15:01:47,116 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:47,117 configuration. 2023-01-31T15:01:47,118 !! 2023-01-31T15:01:47,118 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:47,119 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:47,119 !! 2023-01-31T15:01:47,121 ########################################################################## 2023-01-31T15:01:47,121 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:47,122 ########################################################################## 2023-01-31T15:01:47,122 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:47,123 `classifiers = ['License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3', 'Intended Audience :: Developers']` 2023-01-31T15:01:47,124 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:47,125 consider this value unless 'classifiers' is listed as `dynamic`. 2023-01-31T15:01:47,126 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:47,127 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:47,127 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:47,127 follow strictly the standard. 2023-01-31T15:01:47,128 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-01-31T15:01:47,129 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:47,129 configuration. 2023-01-31T15:01:47,131 !! 2023-01-31T15:01:47,131 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:47,132 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'urls' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:47,132 !! 2023-01-31T15:01:47,133 ########################################################################## 2023-01-31T15:01:47,134 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:47,134 ########################################################################## 2023-01-31T15:01:47,135 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:47,136 `urls = {'GitHub': 'https://github.com/Kieran-Lock/SQLiteFrame', 'Documentation': 'https://github.com/Kieran-Lock/SQLiteFrame/blob/master/DOCUMENTATION.md'}` 2023-01-31T15:01:47,137 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:47,137 consider this value unless 'urls' is listed as `dynamic`. 2023-01-31T15:01:47,138 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:47,139 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:47,139 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:47,140 follow strictly the standard. 2023-01-31T15:01:47,141 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2023-01-31T15:01:47,141 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:47,141 configuration. 2023-01-31T15:01:47,143 !! 2023-01-31T15:01:47,144 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:47,288 Preparing metadata (pyproject.toml): finished with status 'done' 2023-01-31T15:01:47,304 Source in /tmp/pip-wheel-voqe5my2/sqliteframe_acc750d3d00b430d90b192fa18670ca9 has version 0.1.2, which satisfies requirement sqliteframe==0.1.2 from https://files.pythonhosted.org/packages/01/0d/4d9317e2b0b3c773af3467a5c777be51d9a0ea97b005427f6a9aae8042ab/SQLiteFrame-0.1.2.tar.gz 2023-01-31T15:01:47,306 Removed sqliteframe==0.1.2 from https://files.pythonhosted.org/packages/01/0d/4d9317e2b0b3c773af3467a5c777be51d9a0ea97b005427f6a9aae8042ab/SQLiteFrame-0.1.2.tar.gz from build tracker '/tmp/pip-build-tracker-ikddjg7d' 2023-01-31T15:01:47,316 Created temporary directory: /tmp/pip-unpack-y5hlc335 2023-01-31T15:01:47,317 Building wheels for collected packages: sqliteframe 2023-01-31T15:01:47,326 Created temporary directory: /tmp/pip-wheel-qs7st5zd 2023-01-31T15:01:47,326 Destination directory: /tmp/pip-wheel-qs7st5zd 2023-01-31T15:01:47,331 Building wheel for sqliteframe (pyproject.toml): started 2023-01-31T15:01:47,333 Running command Building wheel for sqliteframe (pyproject.toml) 2023-01-31T15:01:48,768 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:48,769 !! 2023-01-31T15:01:48,770 ########################################################################## 2023-01-31T15:01:48,771 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:48,771 ########################################################################## 2023-01-31T15:01:48,772 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:48,772 `readme = ' \n\n\n
\n
\n Logo\n
\n \n

\n A lightweight, zero-dependency ORM for SQLite in Python\n
\n Explore the docs »\n
\n
\n Get Started\n ·\n Basic Usage\n ·\n License\n

\n
\n\n\n\n\n## About The Project\nSQLiteFrame is an SQLite ORM for python, designed to be as lightweight, intuitive, and simple to use as possible. \nIt is designed to closely mimic SQL syntax whilst remaining as pythonic as possible to save developers valuable time _(and brain cells)_ when interacting with SQLite databases, by building reusable SQLite query objects using method-chaining, and abstracting away SQLite\'s **devilish** connection and cursor system with context-managers.\n\n

(back to top)

\n\n\n\n\n## Getting Started\n\nSQLiteFrame is available on [PyPI](https://pypi.org/project/SQLiteFrame). Simply install the package into your project environment with PIP:\n```\npip install SQLiteFrame\n```\n\nTo install specific previous versions, take a look at the [version history](https://github.com/Kieran-Lock/SQLiteFrame/releases), locate the version tag `(vX.Y.Z)`, and run:\n```\npip install SQLiteFrame==X.Y.Z\n```\n\nSQLiteFrame has **ZERO** external dependencies - it uses only the standard library\'s `sqlite3` to execute SQLite commands.\n\n

(back to top)

\n\n\n\n\n## Usage\n\n### Creating a table\nTo create a table, use the template below. This will automatically run the CreateTable SQLite command for you:\n```py\nfrom sqliteframe import Database, Table, String, Integer, Boolean\n\n\ndatabase = Database("database.db", output=False) # When the output parameter is True, the formed SQL query will be outputted into the console as a string every time a query is executed\n\n\n@Table(database)\nclass TableName:\n primary_key_field = String(primary_key=True)\n second_column = Integer\n third_column = Boolean(nullable=True)\n```\n\n### Inserting Data\nTo insert data into an existing table, use the following query template:\n```py\ninsert_statement = TableName.insert_into({\n TableName.primary_key_field: "PrimaryKey1",\n TableName.second_column: 1_000,\n TableName.third_column: True\n})\ninsert_statement.execute()\n```\n\n### Fetching / Selecting Data\nFetching / selecting data from an existing table with pre-inserted data is done as below:\n```py\nselect_statement = TableName.select(TableName.second_column, TableName.third_column)\nselect_statement.execute()\n```\n\n### Linking Tables (Foreign Keys)\nLinking tables can be done with Foreign Keys in SQLiteFrame:\n```py\nfrom sqliteframe import Database, Table, String, Integer, Boolean, ForeignKey\n\n\ndatabase = Database("database.db", output=False)\n\n\n@Table(database)\nclass FirstTableName:\n primary_key_field = String(primary_key=True)\n second_column = Integer\n third_column = Boolean(nullable=True)\n\n\n@Table(database)\nclass SecondTableName:\n primary_key_field = Integer(primary_key=True)\n second_column = Boolean(nullable=True)\n third_column = String\n foreign_key_column = ForeignKey(FirstTableName) # This column now references the primary key of the FirstTableName table, and will infer its type\n```\n\n### Complex Data Fetching / Selection\nTo build more complex select queries, you can use `join`, `where`, and `order by`:\n```py\nfrom sqliteframe import JoinTypes, OrderTypes\n\n\nselect_statement = FirstTableName.select(SecondTableName.second_column, FirstTableName.third_column).join(\n SecondTableName, SecondTableName.foreign_key_column == FirstTableName.primary_key_field, join_type=JoinTypes.LEFT\n).where(\n SecondTableName.third_column == "Criteria"\n).order_by(\n FirstTableName.second_column, (OrderTypes.DESCENDING, OrderTypes.NULLS_FIRST)\n)\nselect_statement.execute()\n```\n\n### Editing Data\nTo edit pre-inserted data, a `set` query can be used:\n```py\nset_statement = FirstTableName.set({\n TableName.second_column: 10_000,\n TableName.third_column: None # This column is nullable, and so this is acceptable\n}).where(\n (Person.primary_key_column == "PrimaryKey1") & (Person.second_column > 500) # Brackets are ESSENTIAL with complex where clauses, as these statements use bitwise operators, which often have unexpected operator precedence\n)\nset_statement.execute()\n```\n_NOTE: The where clause can be emitted from this statement, but this would update **every** record in the target table._\n\n### Deleting Data\nTo delete pre-inserted table data, use the `delete_from` query:\n```py\ndelete_statement = TableName.delete_from().where(\n (TableName.second_column <= 250)\n)\ndelete_statement.execute()\n```\n_NOTE: The where clause can be emitted from this statement, but this would delete **every** record in the target table._\n\n### Dropping Tables\nDropping tables does not delete the table reference from python - just in the SQL. Tables which others tables depend on / reference cannot be deleted by default to maintain referential integrity. This behaviour can be changed when defining the referencing foreign key column. \nTo entirely drop (delete) an existing table, use the `drop_table` statement:\n```py\nSecondTableName.drop_table().execute() # This table is dropped first as it depends on the FirstTableName table\nFirstTableName.drop_table().execute() # Cannot drop this table until the SecondTableName table is dropped\n```\n\n_For more examples and specific detail, please refer to the [Documentation](https://github.com/Kieran-Lock/SQLiteFrame/blob/master/DOCUMENTATION.md)_\n\n

(back to top)

\n\n\n\n\n## License\n\nDistributed under the MIT License. See [LICENSE](https://github.com/Kieran-Lock/SQLiteFrame/blob/master/LICENSE) for more information.\n\n

(back to top)

\n'` 2023-01-31T15:01:48,773 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:48,774 consider this value unless 'readme' is listed as `dynamic`. 2023-01-31T15:01:48,774 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:48,775 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:48,775 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:48,776 follow strictly the standard. 2023-01-31T15:01:48,776 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-01-31T15:01:48,777 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:48,777 configuration. 2023-01-31T15:01:48,778 !! 2023-01-31T15:01:48,778 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:48,779 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:48,779 !! 2023-01-31T15:01:48,780 ########################################################################## 2023-01-31T15:01:48,780 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:48,781 ########################################################################## 2023-01-31T15:01:48,781 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:48,782 `license = 'MIT'` 2023-01-31T15:01:48,783 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:48,783 consider this value unless 'license' is listed as `dynamic`. 2023-01-31T15:01:48,784 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:48,784 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:48,785 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:48,785 follow strictly the standard. 2023-01-31T15:01:48,785 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-01-31T15:01:48,786 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:48,786 configuration. 2023-01-31T15:01:48,787 !! 2023-01-31T15:01:48,788 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:49,144 running bdist_wheel 2023-01-31T15:01:49,176 running build 2023-01-31T15:01:49,176 running build_py 2023-01-31T15:01:49,187 creating build 2023-01-31T15:01:49,188 creating build/lib 2023-01-31T15:01:49,190 creating build/lib/sqliteframe 2023-01-31T15:01:49,192 copying sqliteframe/database.py -> build/lib/sqliteframe 2023-01-31T15:01:49,196 copying sqliteframe/__init__.py -> build/lib/sqliteframe 2023-01-31T15:01:49,201 creating build/lib/sqliteframe/where 2023-01-31T15:01:49,202 copying sqliteframe/where/conjunctions.py -> build/lib/sqliteframe/where 2023-01-31T15:01:49,206 copying sqliteframe/where/condition.py -> build/lib/sqliteframe/where 2023-01-31T15:01:49,210 copying sqliteframe/where/comparisons.py -> build/lib/sqliteframe/where 2023-01-31T15:01:49,213 copying sqliteframe/where/where.py -> build/lib/sqliteframe/where 2023-01-31T15:01:49,216 copying sqliteframe/where/__init__.py -> build/lib/sqliteframe/where 2023-01-31T15:01:49,221 creating build/lib/sqliteframe/foreign_key 2023-01-31T15:01:49,223 copying sqliteframe/foreign_key/foreign_key.py -> build/lib/sqliteframe/foreign_key 2023-01-31T15:01:49,226 copying sqliteframe/foreign_key/restraints.py -> build/lib/sqliteframe/foreign_key 2023-01-31T15:01:49,230 copying sqliteframe/foreign_key/__init__.py -> build/lib/sqliteframe/foreign_key 2023-01-31T15:01:49,235 creating build/lib/sqliteframe/statements 2023-01-31T15:01:49,237 copying sqliteframe/statements/pragma.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,240 copying sqliteframe/statements/drop_table.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,244 copying sqliteframe/statements/select.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,247 copying sqliteframe/statements/set.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,251 copying sqliteframe/statements/statement.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,254 copying sqliteframe/statements/__init__.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,258 copying sqliteframe/statements/insert_into.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,261 copying sqliteframe/statements/create_table.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,264 copying sqliteframe/statements/delete_from.py -> build/lib/sqliteframe/statements 2023-01-31T15:01:49,269 creating build/lib/sqliteframe/table 2023-01-31T15:01:49,271 copying sqliteframe/table/column.py -> build/lib/sqliteframe/table 2023-01-31T15:01:49,275 copying sqliteframe/table/table.py -> build/lib/sqliteframe/table 2023-01-31T15:01:49,278 copying sqliteframe/table/__init__.py -> build/lib/sqliteframe/table 2023-01-31T15:01:49,283 creating build/lib/sqliteframe/types 2023-01-31T15:01:49,285 copying sqliteframe/types/time.py -> build/lib/sqliteframe/types 2023-01-31T15:01:49,289 copying sqliteframe/types/string.py -> build/lib/sqliteframe/types 2023-01-31T15:01:49,293 copying sqliteframe/types/integer.py -> build/lib/sqliteframe/types 2023-01-31T15:01:49,297 copying sqliteframe/types/null.py -> build/lib/sqliteframe/types 2023-01-31T15:01:49,301 copying sqliteframe/types/date.py -> build/lib/sqliteframe/types 2023-01-31T15:01:49,305 copying sqliteframe/types/boolean.py -> build/lib/sqliteframe/types 2023-01-31T15:01:49,309 copying sqliteframe/types/__init__.py -> build/lib/sqliteframe/types 2023-01-31T15:01:49,313 copying sqliteframe/types/type.py -> build/lib/sqliteframe/types 2023-01-31T15:01:49,319 creating build/lib/sqliteframe/result 2023-01-31T15:01:49,321 copying sqliteframe/result/result.py -> build/lib/sqliteframe/result 2023-01-31T15:01:49,326 copying sqliteframe/result/__init__.py -> build/lib/sqliteframe/result 2023-01-31T15:01:49,331 creating build/lib/sqliteframe/pragma 2023-01-31T15:01:49,334 copying sqliteframe/pragma/states.py -> build/lib/sqliteframe/pragma 2023-01-31T15:01:49,338 copying sqliteframe/pragma/__init__.py -> build/lib/sqliteframe/pragma 2023-01-31T15:01:49,342 copying sqliteframe/pragma/statements.py -> build/lib/sqliteframe/pragma 2023-01-31T15:01:49,347 creating build/lib/sqliteframe/order_by 2023-01-31T15:01:49,350 copying sqliteframe/order_by/order_types.py -> build/lib/sqliteframe/order_by 2023-01-31T15:01:49,354 copying sqliteframe/order_by/order_by.py -> build/lib/sqliteframe/order_by 2023-01-31T15:01:49,358 copying sqliteframe/order_by/__init__.py -> build/lib/sqliteframe/order_by 2023-01-31T15:01:49,363 creating build/lib/sqliteframe/wildcards 2023-01-31T15:01:49,366 copying sqliteframe/wildcards/wildcards.py -> build/lib/sqliteframe/wildcards 2023-01-31T15:01:49,370 copying sqliteframe/wildcards/__init__.py -> build/lib/sqliteframe/wildcards 2023-01-31T15:01:49,375 creating build/lib/sqliteframe/join 2023-01-31T15:01:49,376 copying sqliteframe/join/join.py -> build/lib/sqliteframe/join 2023-01-31T15:01:49,380 copying sqliteframe/join/join_types.py -> build/lib/sqliteframe/join 2023-01-31T15:01:49,384 copying sqliteframe/join/__init__.py -> build/lib/sqliteframe/join 2023-01-31T15:01:49,387 running egg_info 2023-01-31T15:01:49,405 writing SQLiteFrame.egg-info/PKG-INFO 2023-01-31T15:01:49,409 writing dependency_links to SQLiteFrame.egg-info/dependency_links.txt 2023-01-31T15:01:49,412 writing top-level names to SQLiteFrame.egg-info/top_level.txt 2023-01-31T15:01:49,442 reading manifest file 'SQLiteFrame.egg-info/SOURCES.txt' 2023-01-31T15:01:49,448 adding license file 'LICENSE' 2023-01-31T15:01:49,458 writing manifest file 'SQLiteFrame.egg-info/SOURCES.txt' 2023-01-31T15:01:49,494 installing to build/bdist.linux-armv7l/wheel 2023-01-31T15:01:49,494 running install 2023-01-31T15:01:49,558 running install_lib 2023-01-31T15:01:49,568 creating build/bdist.linux-armv7l 2023-01-31T15:01:49,569 creating build/bdist.linux-armv7l/wheel 2023-01-31T15:01:49,573 creating build/bdist.linux-armv7l/wheel/sqliteframe 2023-01-31T15:01:49,576 creating build/bdist.linux-armv7l/wheel/sqliteframe/where 2023-01-31T15:01:49,578 copying build/lib/sqliteframe/where/conjunctions.py -> build/bdist.linux-armv7l/wheel/sqliteframe/where 2023-01-31T15:01:49,583 copying build/lib/sqliteframe/where/condition.py -> build/bdist.linux-armv7l/wheel/sqliteframe/where 2023-01-31T15:01:49,587 copying build/lib/sqliteframe/where/comparisons.py -> build/bdist.linux-armv7l/wheel/sqliteframe/where 2023-01-31T15:01:49,590 copying build/lib/sqliteframe/where/where.py -> build/bdist.linux-armv7l/wheel/sqliteframe/where 2023-01-31T15:01:49,594 copying build/lib/sqliteframe/where/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/where 2023-01-31T15:01:49,599 creating build/bdist.linux-armv7l/wheel/sqliteframe/foreign_key 2023-01-31T15:01:49,601 copying build/lib/sqliteframe/foreign_key/foreign_key.py -> build/bdist.linux-armv7l/wheel/sqliteframe/foreign_key 2023-01-31T15:01:49,605 copying build/lib/sqliteframe/foreign_key/restraints.py -> build/bdist.linux-armv7l/wheel/sqliteframe/foreign_key 2023-01-31T15:01:49,609 copying build/lib/sqliteframe/foreign_key/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/foreign_key 2023-01-31T15:01:49,614 creating build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,616 copying build/lib/sqliteframe/statements/pragma.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,620 copying build/lib/sqliteframe/statements/drop_table.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,624 copying build/lib/sqliteframe/statements/select.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,629 copying build/lib/sqliteframe/statements/set.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,633 copying build/lib/sqliteframe/statements/statement.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,637 copying build/lib/sqliteframe/statements/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,642 copying build/lib/sqliteframe/statements/insert_into.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,646 copying build/lib/sqliteframe/statements/create_table.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,651 copying build/lib/sqliteframe/statements/delete_from.py -> build/bdist.linux-armv7l/wheel/sqliteframe/statements 2023-01-31T15:01:49,656 creating build/bdist.linux-armv7l/wheel/sqliteframe/table 2023-01-31T15:01:49,659 copying build/lib/sqliteframe/table/column.py -> build/bdist.linux-armv7l/wheel/sqliteframe/table 2023-01-31T15:01:49,664 copying build/lib/sqliteframe/table/table.py -> build/bdist.linux-armv7l/wheel/sqliteframe/table 2023-01-31T15:01:49,668 copying build/lib/sqliteframe/table/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/table 2023-01-31T15:01:49,673 copying build/lib/sqliteframe/database.py -> build/bdist.linux-armv7l/wheel/sqliteframe 2023-01-31T15:01:49,679 creating build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,681 copying build/lib/sqliteframe/types/time.py -> build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,685 copying build/lib/sqliteframe/types/string.py -> build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,690 copying build/lib/sqliteframe/types/integer.py -> build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,694 copying build/lib/sqliteframe/types/null.py -> build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,699 copying build/lib/sqliteframe/types/date.py -> build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,703 copying build/lib/sqliteframe/types/boolean.py -> build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,707 copying build/lib/sqliteframe/types/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,711 copying build/lib/sqliteframe/types/type.py -> build/bdist.linux-armv7l/wheel/sqliteframe/types 2023-01-31T15:01:49,717 creating build/bdist.linux-armv7l/wheel/sqliteframe/result 2023-01-31T15:01:49,719 copying build/lib/sqliteframe/result/result.py -> build/bdist.linux-armv7l/wheel/sqliteframe/result 2023-01-31T15:01:49,724 copying build/lib/sqliteframe/result/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/result 2023-01-31T15:01:49,729 creating build/bdist.linux-armv7l/wheel/sqliteframe/pragma 2023-01-31T15:01:49,731 copying build/lib/sqliteframe/pragma/states.py -> build/bdist.linux-armv7l/wheel/sqliteframe/pragma 2023-01-31T15:01:49,736 copying build/lib/sqliteframe/pragma/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/pragma 2023-01-31T15:01:49,740 copying build/lib/sqliteframe/pragma/statements.py -> build/bdist.linux-armv7l/wheel/sqliteframe/pragma 2023-01-31T15:01:49,745 creating build/bdist.linux-armv7l/wheel/sqliteframe/order_by 2023-01-31T15:01:49,748 copying build/lib/sqliteframe/order_by/order_types.py -> build/bdist.linux-armv7l/wheel/sqliteframe/order_by 2023-01-31T15:01:49,752 copying build/lib/sqliteframe/order_by/order_by.py -> build/bdist.linux-armv7l/wheel/sqliteframe/order_by 2023-01-31T15:01:49,757 copying build/lib/sqliteframe/order_by/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/order_by 2023-01-31T15:01:49,761 copying build/lib/sqliteframe/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe 2023-01-31T15:01:49,766 creating build/bdist.linux-armv7l/wheel/sqliteframe/wildcards 2023-01-31T15:01:49,769 copying build/lib/sqliteframe/wildcards/wildcards.py -> build/bdist.linux-armv7l/wheel/sqliteframe/wildcards 2023-01-31T15:01:49,773 copying build/lib/sqliteframe/wildcards/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/wildcards 2023-01-31T15:01:49,778 creating build/bdist.linux-armv7l/wheel/sqliteframe/join 2023-01-31T15:01:49,781 copying build/lib/sqliteframe/join/join.py -> build/bdist.linux-armv7l/wheel/sqliteframe/join 2023-01-31T15:01:49,785 copying build/lib/sqliteframe/join/join_types.py -> build/bdist.linux-armv7l/wheel/sqliteframe/join 2023-01-31T15:01:49,789 copying build/lib/sqliteframe/join/__init__.py -> build/bdist.linux-armv7l/wheel/sqliteframe/join 2023-01-31T15:01:49,793 running install_egg_info 2023-01-31T15:01:49,807 Copying SQLiteFrame.egg-info to build/bdist.linux-armv7l/wheel/SQLiteFrame-0.1.2-py3.7.egg-info 2023-01-31T15:01:49,825 running install_scripts 2023-01-31T15:01:49,852 creating build/bdist.linux-armv7l/wheel/SQLiteFrame-0.1.2.dist-info/WHEEL 2023-01-31T15:01:49,857 creating '/tmp/pip-wheel-qs7st5zd/.tmp-53d_gjoi/SQLiteFrame-0.1.2-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2023-01-31T15:01:49,865 adding 'sqliteframe/__init__.py' 2023-01-31T15:01:49,869 adding 'sqliteframe/database.py' 2023-01-31T15:01:49,873 adding 'sqliteframe/foreign_key/__init__.py' 2023-01-31T15:01:49,877 adding 'sqliteframe/foreign_key/foreign_key.py' 2023-01-31T15:01:49,879 adding 'sqliteframe/foreign_key/restraints.py' 2023-01-31T15:01:49,883 adding 'sqliteframe/join/__init__.py' 2023-01-31T15:01:49,887 adding 'sqliteframe/join/join.py' 2023-01-31T15:01:49,889 adding 'sqliteframe/join/join_types.py' 2023-01-31T15:01:49,893 adding 'sqliteframe/order_by/__init__.py' 2023-01-31T15:01:49,897 adding 'sqliteframe/order_by/order_by.py' 2023-01-31T15:01:49,900 adding 'sqliteframe/order_by/order_types.py' 2023-01-31T15:01:49,904 adding 'sqliteframe/pragma/__init__.py' 2023-01-31T15:01:49,907 adding 'sqliteframe/pragma/statements.py' 2023-01-31T15:01:49,909 adding 'sqliteframe/pragma/states.py' 2023-01-31T15:01:49,913 adding 'sqliteframe/result/__init__.py' 2023-01-31T15:01:49,917 adding 'sqliteframe/result/result.py' 2023-01-31T15:01:49,921 adding 'sqliteframe/statements/__init__.py' 2023-01-31T15:01:49,924 adding 'sqliteframe/statements/create_table.py' 2023-01-31T15:01:49,927 adding 'sqliteframe/statements/delete_from.py' 2023-01-31T15:01:49,930 adding 'sqliteframe/statements/drop_table.py' 2023-01-31T15:01:49,933 adding 'sqliteframe/statements/insert_into.py' 2023-01-31T15:01:49,937 adding 'sqliteframe/statements/pragma.py' 2023-01-31T15:01:49,940 adding 'sqliteframe/statements/select.py' 2023-01-31T15:01:49,943 adding 'sqliteframe/statements/set.py' 2023-01-31T15:01:49,946 adding 'sqliteframe/statements/statement.py' 2023-01-31T15:01:49,950 adding 'sqliteframe/table/__init__.py' 2023-01-31T15:01:49,953 adding 'sqliteframe/table/column.py' 2023-01-31T15:01:49,957 adding 'sqliteframe/table/table.py' 2023-01-31T15:01:49,961 adding 'sqliteframe/types/__init__.py' 2023-01-31T15:01:49,964 adding 'sqliteframe/types/boolean.py' 2023-01-31T15:01:49,967 adding 'sqliteframe/types/date.py' 2023-01-31T15:01:49,970 adding 'sqliteframe/types/integer.py' 2023-01-31T15:01:49,973 adding 'sqliteframe/types/null.py' 2023-01-31T15:01:49,976 adding 'sqliteframe/types/string.py' 2023-01-31T15:01:49,979 adding 'sqliteframe/types/time.py' 2023-01-31T15:01:49,982 adding 'sqliteframe/types/type.py' 2023-01-31T15:01:49,987 adding 'sqliteframe/where/__init__.py' 2023-01-31T15:01:49,989 adding 'sqliteframe/where/comparisons.py' 2023-01-31T15:01:49,993 adding 'sqliteframe/where/condition.py' 2023-01-31T15:01:49,996 adding 'sqliteframe/where/conjunctions.py' 2023-01-31T15:01:49,999 adding 'sqliteframe/where/where.py' 2023-01-31T15:01:50,002 adding 'sqliteframe/wildcards/__init__.py' 2023-01-31T15:01:50,004 adding 'sqliteframe/wildcards/wildcards.py' 2023-01-31T15:01:50,007 adding 'SQLiteFrame-0.1.2.dist-info/LICENSE' 2023-01-31T15:01:50,010 adding 'SQLiteFrame-0.1.2.dist-info/METADATA' 2023-01-31T15:01:50,012 adding 'SQLiteFrame-0.1.2.dist-info/WHEEL' 2023-01-31T15:01:50,014 adding 'SQLiteFrame-0.1.2.dist-info/top_level.txt' 2023-01-31T15:01:50,017 adding 'SQLiteFrame-0.1.2.dist-info/RECORD' 2023-01-31T15:01:50,021 removing build/bdist.linux-armv7l/wheel 2023-01-31T15:01:50,054 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:50,054 !! 2023-01-31T15:01:50,055 ########################################################################## 2023-01-31T15:01:50,056 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:50,056 ########################################################################## 2023-01-31T15:01:50,057 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:50,058 `keywords = ['orm', 'sqlite3', 'schematics']` 2023-01-31T15:01:50,059 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:50,060 consider this value unless 'keywords' is listed as `dynamic`. 2023-01-31T15:01:50,061 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:50,062 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:50,062 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:50,063 follow strictly the standard. 2023-01-31T15:01:50,064 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-01-31T15:01:50,064 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:50,064 configuration. 2023-01-31T15:01:50,066 !! 2023-01-31T15:01:50,067 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:50,067 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:50,068 !! 2023-01-31T15:01:50,069 ########################################################################## 2023-01-31T15:01:50,069 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:50,070 ########################################################################## 2023-01-31T15:01:50,071 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:50,071 `classifiers = ['License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3', 'Intended Audience :: Developers']` 2023-01-31T15:01:50,072 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:50,073 consider this value unless 'classifiers' is listed as `dynamic`. 2023-01-31T15:01:50,073 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:50,074 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:50,075 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:50,075 follow strictly the standard. 2023-01-31T15:01:50,076 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-01-31T15:01:50,076 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:50,077 configuration. 2023-01-31T15:01:50,078 !! 2023-01-31T15:01:50,079 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:50,079 /tmp/pip-build-env-hmh3vck1/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'urls' defined outside of `pyproject.toml` would be ignored. 2023-01-31T15:01:50,080 !! 2023-01-31T15:01:50,081 ########################################################################## 2023-01-31T15:01:50,082 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-01-31T15:01:50,082 ########################################################################## 2023-01-31T15:01:50,083 The following seems to be defined outside of `pyproject.toml`: 2023-01-31T15:01:50,084 `urls = {'GitHub': 'https://github.com/Kieran-Lock/SQLiteFrame', 'Documentation': 'https://github.com/Kieran-Lock/SQLiteFrame/blob/master/DOCUMENTATION.md'}` 2023-01-31T15:01:50,085 According to the spec (see the link below), however, setuptools CANNOT 2023-01-31T15:01:50,085 consider this value unless 'urls' is listed as `dynamic`. 2023-01-31T15:01:50,086 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-01-31T15:01:50,087 For the time being, `setuptools` will still consider the given value (as a 2023-01-31T15:01:50,087 **transitional** measure), but please note that future releases of setuptools will 2023-01-31T15:01:50,088 follow strictly the standard. 2023-01-31T15:01:50,088 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2023-01-31T15:01:50,089 remove the `[project]` table from your file and rely entirely on other means of 2023-01-31T15:01:50,089 configuration. 2023-01-31T15:01:50,090 !! 2023-01-31T15:01:50,091 warnings.warn(msg, _WouldIgnoreField) 2023-01-31T15:01:50,228 Building wheel for sqliteframe (pyproject.toml): finished with status 'done' 2023-01-31T15:01:50,242 Created wheel for sqliteframe: filename=SQLiteFrame-0.1.2-py3-none-any.whl size=22871 sha256=2983f6249d794f1ae5169db3419121c24ee6e16950a66bc1452200a948c9b0bc 2023-01-31T15:01:50,244 Stored in directory: /tmp/pip-ephem-wheel-cache-56c5cmft/wheels/6a/95/a8/ef53d1d18fd2737e7ef4d523c466fb37dcb56a3f084d6ce5e9 2023-01-31T15:01:50,274 Successfully built sqliteframe 2023-01-31T15:01:50,282 Removed build tracker: '/tmp/pip-build-tracker-ikddjg7d'