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\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\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\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'