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'