piccolo 1.22.0__tar.gz → 1.23.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. {piccolo-1.22.0 → piccolo-1.23.0}/PKG-INFO +33 -7
  2. {piccolo-1.22.0 → piccolo-1.23.0}/README.md +1 -1
  3. piccolo-1.23.0/piccolo/__init__.py +1 -0
  4. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/new.py +3 -0
  5. piccolo-1.23.0/piccolo/apps/asgi/commands/templates/app/_falcon_app.py.jinja +60 -0
  6. piccolo-1.23.0/piccolo/apps/asgi/commands/templates/app/_quart_app.py.jinja +119 -0
  7. piccolo-1.23.0/piccolo/apps/asgi/commands/templates/app/_sanic_app.py.jinja +121 -0
  8. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/app.py.jinja +6 -0
  9. piccolo-1.23.0/piccolo/apps/asgi/commands/templates/app/home/_falcon_endpoints.py.jinja +19 -0
  10. piccolo-1.23.0/piccolo/apps/asgi/commands/templates/app/home/_quart_endpoints.py.jinja +18 -0
  11. piccolo-1.23.0/piccolo/apps/asgi/commands/templates/app/home/_sanic_endpoints.py.jinja +17 -0
  12. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/endpoints.py.jinja +6 -0
  13. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/templates/home.html.jinja_raw +15 -0
  14. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/defaults/timestamptz.py +1 -0
  15. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/engine/sqlite.py +14 -2
  16. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo.egg-info/PKG-INFO +33 -7
  17. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo.egg-info/SOURCES.txt +9 -0
  18. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo.egg-info/entry_points.txt +0 -1
  19. {piccolo-1.22.0 → piccolo-1.23.0}/pyproject.toml +2 -1
  20. piccolo-1.23.0/tests/columns/test_integer.py +32 -0
  21. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_insert.py +1 -1
  22. piccolo-1.23.0/tests/test_main.py +9 -0
  23. piccolo-1.23.0/tests/test_schema.py +183 -0
  24. piccolo-1.22.0/piccolo/__init__.py +0 -1
  25. {piccolo-1.22.0 → piccolo-1.23.0}/LICENSE +0 -0
  26. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/__init__.py +0 -0
  27. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/app/__init__.py +0 -0
  28. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/app/commands/__init__.py +0 -0
  29. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/app/commands/new.py +0 -0
  30. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/app/commands/show_all.py +0 -0
  31. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/app/commands/templates/piccolo_app.py.jinja +0 -0
  32. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/app/commands/templates/tables.py.jinja +0 -0
  33. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/app/piccolo_app.py +0 -0
  34. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/__init__.py +0 -0
  35. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/__init__.py +0 -0
  36. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/README.md.jinja +0 -0
  37. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/_blacksheep_app.py.jinja +0 -0
  38. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/_esmerald_app.py.jinja +0 -0
  39. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/_fastapi_app.py.jinja +0 -0
  40. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/_lilya_app.py.jinja +0 -0
  41. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/_litestar_app.py.jinja +0 -0
  42. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/_starlette_app.py.jinja +0 -0
  43. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/conftest.py.jinja +0 -0
  44. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/__init__.py.jinja +0 -0
  45. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/_blacksheep_endpoints.py.jinja +0 -0
  46. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/_esmerald_endpoints.py.jinja +0 -0
  47. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/_lilya_endpoints.py.jinja +0 -0
  48. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/_litestar_endpoints.py.jinja +0 -0
  49. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/_starlette_endpoints.py.jinja +0 -0
  50. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/piccolo_app.py.jinja +0 -0
  51. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/piccolo_migrations/README.md +0 -0
  52. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/tables.py.jinja +0 -0
  53. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/home/templates/base.html.jinja_raw +0 -0
  54. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/main.py.jinja +0 -0
  55. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/piccolo_conf.py.jinja +0 -0
  56. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/piccolo_conf_test.py.jinja +0 -0
  57. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/requirements.txt.jinja +0 -0
  58. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/static/favicon.ico +0 -0
  59. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/commands/templates/app/static/main.css +0 -0
  60. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/asgi/piccolo_app.py +0 -0
  61. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/fixtures/__init__.py +0 -0
  62. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/fixtures/commands/__init__.py +0 -0
  63. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/fixtures/commands/dump.py +0 -0
  64. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/fixtures/commands/load.py +0 -0
  65. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/fixtures/commands/shared.py +0 -0
  66. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/fixtures/piccolo_app.py +0 -0
  67. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/meta/__init__.py +0 -0
  68. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/meta/commands/__init__.py +0 -0
  69. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/meta/commands/version.py +0 -0
  70. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/meta/piccolo_app.py +0 -0
  71. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/__init__.py +0 -0
  72. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/auto/__init__.py +0 -0
  73. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/auto/diffable_table.py +0 -0
  74. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/auto/migration_manager.py +0 -0
  75. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/auto/operations.py +0 -0
  76. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/auto/schema_differ.py +0 -0
  77. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/auto/schema_snapshot.py +0 -0
  78. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/auto/serialisation.py +0 -0
  79. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/auto/serialisation_legacy.py +0 -0
  80. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/commands/__init__.py +0 -0
  81. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/commands/backwards.py +0 -0
  82. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/commands/base.py +0 -0
  83. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/commands/check.py +0 -0
  84. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/commands/clean.py +0 -0
  85. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/commands/forwards.py +0 -0
  86. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/commands/new.py +0 -0
  87. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/commands/templates/migration.py.jinja +0 -0
  88. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/piccolo_app.py +0 -0
  89. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/migrations/tables.py +0 -0
  90. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/playground/__init__.py +0 -0
  91. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/playground/commands/__init__.py +0 -0
  92. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/playground/commands/run.py +0 -0
  93. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/playground/piccolo_app.py +0 -0
  94. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/project/__init__.py +0 -0
  95. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/project/commands/__init__.py +0 -0
  96. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/project/commands/new.py +0 -0
  97. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/project/commands/templates/piccolo_conf.py.jinja +0 -0
  98. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/project/piccolo_app.py +0 -0
  99. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/schema/__init__.py +0 -0
  100. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/schema/commands/__init__.py +0 -0
  101. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/schema/commands/exceptions.py +0 -0
  102. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/schema/commands/generate.py +0 -0
  103. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/schema/commands/graph.py +0 -0
  104. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/schema/commands/templates/graphviz.dot.jinja +0 -0
  105. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/schema/piccolo_app.py +0 -0
  106. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/shell/__init__.py +0 -0
  107. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/shell/commands/__init__.py +0 -0
  108. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/shell/commands/run.py +0 -0
  109. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/shell/piccolo_app.py +0 -0
  110. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/sql_shell/__init__.py +0 -0
  111. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/sql_shell/commands/__init__.py +0 -0
  112. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/sql_shell/commands/run.py +0 -0
  113. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/sql_shell/piccolo_app.py +0 -0
  114. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/tester/__init__.py +0 -0
  115. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/tester/commands/__init__.py +0 -0
  116. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/tester/commands/run.py +0 -0
  117. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/tester/piccolo_app.py +0 -0
  118. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/__init__.py +0 -0
  119. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/commands/__init__.py +0 -0
  120. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/commands/change_password.py +0 -0
  121. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/commands/change_permissions.py +0 -0
  122. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/commands/create.py +0 -0
  123. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/commands/list.py +0 -0
  124. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/piccolo_app.py +0 -0
  125. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/piccolo_migrations/2019-11-14T21-52-21.py +0 -0
  126. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/piccolo_migrations/2020-06-11T21-38-55.py +0 -0
  127. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/piccolo_migrations/2021-04-30T16-14-15.py +0 -0
  128. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/piccolo_migrations/__init__.py +0 -0
  129. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/apps/user/tables.py +0 -0
  130. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/__init__.py +0 -0
  131. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/base.py +0 -0
  132. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/choices.py +0 -0
  133. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/column_types.py +0 -0
  134. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/combination.py +0 -0
  135. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/defaults/__init__.py +0 -0
  136. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/defaults/base.py +0 -0
  137. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/defaults/date.py +0 -0
  138. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/defaults/interval.py +0 -0
  139. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/defaults/time.py +0 -0
  140. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/defaults/timestamp.py +0 -0
  141. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/defaults/uuid.py +0 -0
  142. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/indexes.py +0 -0
  143. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/m2m.py +0 -0
  144. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/operators/__init__.py +0 -0
  145. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/operators/base.py +0 -0
  146. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/operators/comparison.py +0 -0
  147. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/operators/math.py +0 -0
  148. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/operators/string.py +0 -0
  149. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/readable.py +0 -0
  150. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/columns/reference.py +0 -0
  151. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/conf/__init__.py +0 -0
  152. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/conf/apps.py +0 -0
  153. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/custom_types.py +0 -0
  154. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/engine/__init__.py +0 -0
  155. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/engine/base.py +0 -0
  156. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/engine/cockroach.py +0 -0
  157. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/engine/exceptions.py +0 -0
  158. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/engine/finder.py +0 -0
  159. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/engine/postgres.py +0 -0
  160. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/main.py +0 -0
  161. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/py.typed +0 -0
  162. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/__init__.py +0 -0
  163. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/base.py +0 -0
  164. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/functions/__init__.py +0 -0
  165. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/functions/aggregate.py +0 -0
  166. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/functions/base.py +0 -0
  167. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/functions/datetime.py +0 -0
  168. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/functions/math.py +0 -0
  169. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/functions/string.py +0 -0
  170. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/functions/type_conversion.py +0 -0
  171. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/__init__.py +0 -0
  172. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/alter.py +0 -0
  173. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/count.py +0 -0
  174. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/create.py +0 -0
  175. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/create_index.py +0 -0
  176. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/delete.py +0 -0
  177. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/drop_index.py +0 -0
  178. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/exists.py +0 -0
  179. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/indexes.py +0 -0
  180. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/insert.py +0 -0
  181. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/objects.py +0 -0
  182. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/raw.py +0 -0
  183. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/refresh.py +0 -0
  184. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/select.py +0 -0
  185. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/table_exists.py +0 -0
  186. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/methods/update.py +0 -0
  187. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/mixins.py +0 -0
  188. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/operators/__init__.py +0 -0
  189. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/operators/json.py +0 -0
  190. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/query/proxy.py +0 -0
  191. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/querystring.py +0 -0
  192. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/schema.py +0 -0
  193. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/table.py +0 -0
  194. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/table_reflection.py +0 -0
  195. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/testing/__init__.py +0 -0
  196. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/testing/model_builder.py +0 -0
  197. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/testing/random_builder.py +0 -0
  198. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/testing/test_case.py +0 -0
  199. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/__init__.py +0 -0
  200. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/dictionary.py +0 -0
  201. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/encoding.py +0 -0
  202. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/graphlib/__init__.py +0 -0
  203. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/graphlib/_graphlib.py +0 -0
  204. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/lazy_loader.py +0 -0
  205. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/list.py +0 -0
  206. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/naming.py +0 -0
  207. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/objects.py +0 -0
  208. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/printing.py +0 -0
  209. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/pydantic.py +0 -0
  210. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/repr.py +0 -0
  211. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/sql_values.py +0 -0
  212. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/sync.py +0 -0
  213. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo/utils/warnings.py +0 -0
  214. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo.egg-info/dependency_links.txt +0 -0
  215. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo.egg-info/requires.txt +0 -0
  216. {piccolo-1.22.0 → piccolo-1.23.0}/piccolo.egg-info/top_level.txt +0 -0
  217. {piccolo-1.22.0 → piccolo-1.23.0}/profiling/__init__.py +0 -0
  218. {piccolo-1.22.0 → piccolo-1.23.0}/profiling/run_profile.py +0 -0
  219. {piccolo-1.22.0 → piccolo-1.23.0}/setup.cfg +0 -0
  220. {piccolo-1.22.0 → piccolo-1.23.0}/setup.py +0 -0
  221. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/__init__.py +0 -0
  222. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/app/__init__.py +0 -0
  223. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/app/commands/__init__.py +0 -0
  224. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/app/commands/test_new.py +0 -0
  225. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/app/commands/test_show_all.py +0 -0
  226. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/asgi/__init__.py +0 -0
  227. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/asgi/commands/__init__.py +0 -0
  228. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/asgi/commands/test_new.py +0 -0
  229. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/fixtures/__init__.py +0 -0
  230. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/fixtures/commands/__init__.py +0 -0
  231. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/fixtures/commands/test_dump_load.py +0 -0
  232. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/fixtures/commands/test_shared.py +0 -0
  233. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/meta/__init__.py +0 -0
  234. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/meta/commands/__init__.py +0 -0
  235. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/meta/commands/test_version.py +0 -0
  236. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/__init__.py +0 -0
  237. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/auto/__init__.py +0 -0
  238. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/auto/integration/__init__.py +0 -0
  239. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/auto/integration/test_migrations.py +0 -0
  240. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/auto/test_diffable_table.py +0 -0
  241. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/auto/test_migration_manager.py +0 -0
  242. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/auto/test_schema_differ.py +0 -0
  243. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/auto/test_schema_snapshot.py +0 -0
  244. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/auto/test_serialisation.py +0 -0
  245. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/commands/__init__.py +0 -0
  246. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/commands/test_base.py +0 -0
  247. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/commands/test_check.py +0 -0
  248. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/commands/test_clean.py +0 -0
  249. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/commands/test_forwards_backwards.py +0 -0
  250. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/commands/test_migrations/2020-03-31T20-38-22.py +0 -0
  251. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/commands/test_migrations/__init__.py +0 -0
  252. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/commands/test_new.py +0 -0
  253. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/migrations/test_migration.py +0 -0
  254. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/project/__init__.py +0 -0
  255. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/project/commands/__init__.py +0 -0
  256. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/project/commands/test_new.py +0 -0
  257. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/schema/__init__.py +0 -0
  258. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/shell/__init__.py +0 -0
  259. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/shell/commands/__init__.py +0 -0
  260. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/shell/commands/test_run.py +0 -0
  261. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/sql_shell/__init__.py +0 -0
  262. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/sql_shell/commands/__init__.py +0 -0
  263. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/sql_shell/commands/test_run.py +0 -0
  264. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/tester/__init__.py +0 -0
  265. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/user/__init__.py +0 -0
  266. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/user/commands/__init__.py +0 -0
  267. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/user/commands/test_change_password.py +0 -0
  268. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/user/commands/test_change_permissions.py +0 -0
  269. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/user/commands/test_create.py +0 -0
  270. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/user/commands/test_list.py +0 -0
  271. {piccolo-1.22.0 → piccolo-1.23.0}/tests/apps/user/test_tables.py +0 -0
  272. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/__init__.py +0 -0
  273. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/m2m/__init__.py +0 -0
  274. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/m2m/base.py +0 -0
  275. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/m2m/test_m2m.py +0 -0
  276. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/m2m/test_m2m_schema.py +0 -0
  277. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_array.py +0 -0
  278. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_base.py +0 -0
  279. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_bigint.py +0 -0
  280. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_boolean.py +0 -0
  281. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_bytea.py +0 -0
  282. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_choices.py +0 -0
  283. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_combination.py +0 -0
  284. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_date.py +0 -0
  285. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_db_column_name.py +0 -0
  286. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_defaults.py +0 -0
  287. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_double_precision.py +0 -0
  288. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_get_sql_value.py +0 -0
  289. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_interval.py +0 -0
  290. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_json.py +0 -0
  291. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_jsonb.py +0 -0
  292. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_numeric.py +0 -0
  293. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_primary_key.py +0 -0
  294. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_readable.py +0 -0
  295. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_real.py +0 -0
  296. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_reference.py +0 -0
  297. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_reserved_column_names.py +0 -0
  298. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_smallint.py +0 -0
  299. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_time.py +0 -0
  300. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_timestamp.py +0 -0
  301. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_timestamptz.py +0 -0
  302. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_uuid.py +0 -0
  303. {piccolo-1.22.0 → piccolo-1.23.0}/tests/columns/test_varchar.py +0 -0
  304. {piccolo-1.22.0 → piccolo-1.23.0}/tests/conf/__init__.py +0 -0
  305. {piccolo-1.22.0 → piccolo-1.23.0}/tests/conf/example.py +0 -0
  306. {piccolo-1.22.0 → piccolo-1.23.0}/tests/conf/test_apps.py +0 -0
  307. {piccolo-1.22.0 → piccolo-1.23.0}/tests/engine/__init__.py +0 -0
  308. {piccolo-1.22.0 → piccolo-1.23.0}/tests/engine/test_extra_nodes.py +0 -0
  309. {piccolo-1.22.0 → piccolo-1.23.0}/tests/engine/test_logging.py +0 -0
  310. {piccolo-1.22.0 → piccolo-1.23.0}/tests/engine/test_nested_transaction.py +0 -0
  311. {piccolo-1.22.0 → piccolo-1.23.0}/tests/engine/test_pool.py +0 -0
  312. {piccolo-1.22.0 → piccolo-1.23.0}/tests/engine/test_transaction.py +0 -0
  313. {piccolo-1.22.0 → piccolo-1.23.0}/tests/engine/test_version_parsing.py +0 -0
  314. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/__init__.py +0 -0
  315. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/mega/__init__.py +0 -0
  316. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/mega/piccolo_app.py +0 -0
  317. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/mega/piccolo_migrations/2021-09-20T21-23-25-698988.py +0 -0
  318. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/mega/piccolo_migrations/__init__.py +0 -0
  319. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/mega/tables.py +0 -0
  320. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/music/__init__.py +0 -0
  321. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/music/piccolo_app.py +0 -0
  322. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/music/tables.py +0 -0
  323. {piccolo-1.22.0 → piccolo-1.23.0}/tests/example_apps/music/tables_detailed.py +0 -0
  324. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/__init__.py +0 -0
  325. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/functions/__init__.py +0 -0
  326. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/functions/base.py +0 -0
  327. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/functions/test_datetime.py +0 -0
  328. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/functions/test_functions.py +0 -0
  329. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/functions/test_math.py +0 -0
  330. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/functions/test_string.py +0 -0
  331. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/functions/test_type_conversion.py +0 -0
  332. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/mixins/__init__.py +0 -0
  333. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/mixins/test_columns_delegate.py +0 -0
  334. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/mixins/test_order_by_delegate.py +0 -0
  335. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/operators/__init__.py +0 -0
  336. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/operators/test_json.py +0 -0
  337. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/test_await.py +0 -0
  338. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/test_camelcase.py +0 -0
  339. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/test_freeze.py +0 -0
  340. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/test_gather.py +0 -0
  341. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/test_querystring.py +0 -0
  342. {piccolo-1.22.0 → piccolo-1.23.0}/tests/query/test_slots.py +0 -0
  343. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/__init__.py +0 -0
  344. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/instance/__init__.py +0 -0
  345. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/instance/test_create.py +0 -0
  346. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/instance/test_get_related.py +0 -0
  347. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/instance/test_get_related_readable.py +0 -0
  348. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/instance/test_instantiate.py +0 -0
  349. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/instance/test_remove.py +0 -0
  350. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/instance/test_save.py +0 -0
  351. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/instance/test_to_dict.py +0 -0
  352. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_all_columns.py +0 -0
  353. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_alter.py +0 -0
  354. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_batch.py +0 -0
  355. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_callback.py +0 -0
  356. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_constructor.py +0 -0
  357. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_count.py +0 -0
  358. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_create.py +0 -0
  359. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_create_db_tables.py +0 -0
  360. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_create_table_class.py +0 -0
  361. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_delete.py +0 -0
  362. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_drop_db_tables.py +0 -0
  363. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_exists.py +0 -0
  364. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_from_dict.py +0 -0
  365. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_indexes.py +0 -0
  366. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_inheritance.py +0 -0
  367. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_join.py +0 -0
  368. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_join_on.py +0 -0
  369. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_metaclass.py +0 -0
  370. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_objects.py +0 -0
  371. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_output.py +0 -0
  372. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_raw.py +0 -0
  373. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_ref.py +0 -0
  374. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_refresh.py +0 -0
  375. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_repr.py +0 -0
  376. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_select.py +0 -0
  377. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_str.py +0 -0
  378. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_table_exists.py +0 -0
  379. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_update.py +0 -0
  380. {piccolo-1.22.0 → piccolo-1.23.0}/tests/table/test_update_self.py +0 -0
  381. {piccolo-1.22.0 → piccolo-1.23.0}/tests/testing/__init__.py +0 -0
  382. {piccolo-1.22.0 → piccolo-1.23.0}/tests/testing/test_model_builder.py +0 -0
  383. {piccolo-1.22.0 → piccolo-1.23.0}/tests/testing/test_random_builder.py +0 -0
  384. {piccolo-1.22.0 → piccolo-1.23.0}/tests/testing/test_test_case.py +0 -0
  385. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/__init__.py +0 -0
  386. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_dictionary.py +0 -0
  387. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_encoding.py +0 -0
  388. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_lazy_loader.py +0 -0
  389. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_list.py +0 -0
  390. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_naming.py +0 -0
  391. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_printing.py +0 -0
  392. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_pydantic.py +0 -0
  393. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_sql_values.py +0 -0
  394. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_sync.py +0 -0
  395. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_table_reflection.py +0 -0
  396. {piccolo-1.22.0 → piccolo-1.23.0}/tests/utils/test_warnings.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: piccolo
3
- Version: 1.22.0
3
+ Version: 1.23.0
4
4
  Summary: A fast, user friendly ORM and query builder which supports asyncio.
5
5
  Home-page: https://github.com/piccolo-orm/piccolo
6
6
  Author: Daniel Townsend
@@ -9,7 +9,6 @@ License: MIT
9
9
  Project-URL: Documentation, https://piccolo-orm.readthedocs.io/en/latest/index.html
10
10
  Project-URL: Source, https://github.com/piccolo-orm/piccolo
11
11
  Project-URL: Tracker, https://github.com/piccolo-orm/piccolo/issues
12
- Platform: UNKNOWN
13
12
  Classifier: License :: OSI Approved :: MIT License
14
13
  Classifier: Programming Language :: Python
15
14
  Classifier: Programming Language :: Python :: 3
@@ -24,13 +23,42 @@ Classifier: Typing :: Typed
24
23
  Classifier: Topic :: Database
25
24
  Requires-Python: >=3.9.0
26
25
  Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: black
28
+ Requires-Dist: colorama>=0.4.0
29
+ Requires-Dist: Jinja2>=2.11.0
30
+ Requires-Dist: targ>=0.3.7
31
+ Requires-Dist: inflection>=0.5.1
32
+ Requires-Dist: typing-extensions>=4.3.0
33
+ Requires-Dist: pydantic[email]==2.*
27
34
  Provides-Extra: orjson
35
+ Requires-Dist: orjson>=3.5.1; extra == "orjson"
28
36
  Provides-Extra: playground
37
+ Requires-Dist: ipython; extra == "playground"
29
38
  Provides-Extra: postgres
39
+ Requires-Dist: asyncpg>=0.30.0; extra == "postgres"
30
40
  Provides-Extra: sqlite
41
+ Requires-Dist: aiosqlite>=0.16.0; extra == "sqlite"
31
42
  Provides-Extra: uvloop
43
+ Requires-Dist: uvloop>=0.12.0; sys_platform != "win32" and extra == "uvloop"
32
44
  Provides-Extra: all
33
- License-File: LICENSE
45
+ Requires-Dist: orjson>=3.5.1; extra == "all"
46
+ Requires-Dist: ipython; extra == "all"
47
+ Requires-Dist: asyncpg>=0.30.0; extra == "all"
48
+ Requires-Dist: aiosqlite>=0.16.0; extra == "all"
49
+ Requires-Dist: uvloop>=0.12.0; sys_platform != "win32" and extra == "all"
50
+ Dynamic: author
51
+ Dynamic: author-email
52
+ Dynamic: classifier
53
+ Dynamic: description
54
+ Dynamic: description-content-type
55
+ Dynamic: home-page
56
+ Dynamic: license
57
+ Dynamic: project-url
58
+ Dynamic: provides-extra
59
+ Dynamic: requires-dist
60
+ Dynamic: requires-python
61
+ Dynamic: summary
34
62
 
35
63
  ![Logo](https://raw.githubusercontent.com/piccolo-orm/piccolo/master/docs/logo_hero.png "Piccolo Logo")
36
64
 
@@ -128,7 +156,7 @@ Let Piccolo scaffold you an ASGI web app, using Piccolo as the ORM:
128
156
  piccolo asgi new
129
157
  ```
130
158
 
131
- [Starlette](https://www.starlette.io/), [FastAPI](https://fastapi.tiangolo.com/), [BlackSheep](https://www.neoteroi.dev/blacksheep/), [Litestar](https://litestar.dev/), [Esmerald](https://esmerald.dev/) and [Lilya](https://lilya.dev) are currently supported.
159
+ [Starlette](https://www.starlette.io/), [FastAPI](https://fastapi.tiangolo.com/), [BlackSheep](https://www.neoteroi.dev/blacksheep/), [Litestar](https://litestar.dev/), [Esmerald](https://esmerald.dev/), [Lilya](https://lilya.dev), [Quart](https://quart.palletsprojects.com/en/latest/), [Falcon](https://falconframework.org/) and [Sanic](https://sanic.dev/en/) are currently supported.
132
160
 
133
161
  ## Are you a Django user?
134
162
 
@@ -139,5 +167,3 @@ We have a handy page which shows the equivalent of [common Django queries in Pic
139
167
  Our documentation is on [Read the docs](https://piccolo-orm.readthedocs.io/en/latest/piccolo/getting_started/index.html).
140
168
 
141
169
  We also have some great [tutorial videos on YouTube](https://www.youtube.com/channel/UCE7x5nm1Iy9KDfXPNrNQ5lA).
142
-
143
-
@@ -94,7 +94,7 @@ Let Piccolo scaffold you an ASGI web app, using Piccolo as the ORM:
94
94
  piccolo asgi new
95
95
  ```
96
96
 
97
- [Starlette](https://www.starlette.io/), [FastAPI](https://fastapi.tiangolo.com/), [BlackSheep](https://www.neoteroi.dev/blacksheep/), [Litestar](https://litestar.dev/), [Esmerald](https://esmerald.dev/) and [Lilya](https://lilya.dev) are currently supported.
97
+ [Starlette](https://www.starlette.io/), [FastAPI](https://fastapi.tiangolo.com/), [BlackSheep](https://www.neoteroi.dev/blacksheep/), [Litestar](https://litestar.dev/), [Esmerald](https://esmerald.dev/), [Lilya](https://lilya.dev), [Quart](https://quart.palletsprojects.com/en/latest/), [Falcon](https://falconframework.org/) and [Sanic](https://sanic.dev/en/) are currently supported.
98
98
 
99
99
  ## Are you a Django user?
100
100
 
@@ -0,0 +1 @@
1
+ __VERSION__ = "1.23.0"
@@ -17,6 +17,9 @@ ROUTER_DEPENDENCIES = {
17
17
  "litestar": ["litestar"],
18
18
  "esmerald": ["esmerald"],
19
19
  "lilya": ["lilya"],
20
+ "quart": ["quart", "quart_schema"],
21
+ "falcon": ["falcon"],
22
+ "sanic": ["sanic", "sanic_ext"],
20
23
  }
21
24
  ROUTERS = list(ROUTER_DEPENDENCIES.keys())
22
25
 
@@ -0,0 +1,60 @@
1
+ import os
2
+ import typing as t
3
+
4
+ import falcon.asgi
5
+ from hypercorn.middleware import DispatcherMiddleware
6
+ from piccolo.engine import engine_finder
7
+ from piccolo_admin.endpoints import create_admin
8
+ from piccolo_api.crud.endpoints import PiccoloCRUD
9
+
10
+ from home.endpoints import HomeEndpoint
11
+ from home.piccolo_app import APP_CONFIG
12
+ from home.tables import Task
13
+
14
+
15
+ async def open_database_connection_pool():
16
+ try:
17
+ engine = engine_finder()
18
+ await engine.start_connection_pool()
19
+ except Exception:
20
+ print("Unable to connect to the database")
21
+
22
+
23
+ async def close_database_connection_pool():
24
+ try:
25
+ engine = engine_finder()
26
+ await engine.close_connection_pool()
27
+ except Exception:
28
+ print("Unable to connect to the database")
29
+
30
+
31
+ class LifespanMiddleware:
32
+ async def process_startup(
33
+ self, scope: t.Dict[str, t.Any], event: t.Dict[str, t.Any]
34
+ ) -> None:
35
+ await open_database_connection_pool()
36
+
37
+ async def process_shutdown(
38
+ self, scope: t.Dict[str, t.Any], event: t.Dict[str, t.Any]
39
+ ) -> None:
40
+ await close_database_connection_pool()
41
+
42
+
43
+ app: t.Any = falcon.asgi.App(middleware=LifespanMiddleware())
44
+ app.add_static_route("/static", directory=os.path.abspath("static"))
45
+ app.add_route("/", HomeEndpoint())
46
+
47
+ PICCOLO_CRUD: t.Any = PiccoloCRUD(table=Task)
48
+
49
+ # enable the Admin and PiccoloCrud app using DispatcherMiddleware
50
+ app = DispatcherMiddleware( # type: ignore
51
+ {
52
+ "/admin": create_admin(
53
+ tables=APP_CONFIG.table_classes,
54
+ # Required when running under HTTPS:
55
+ # allowed_hosts=['my_site.com']
56
+ ),
57
+ "/tasks": PICCOLO_CRUD,
58
+ "": app,
59
+ }
60
+ )
@@ -0,0 +1,119 @@
1
+ import typing as t
2
+ from http import HTTPStatus
3
+
4
+ from hypercorn.middleware import DispatcherMiddleware
5
+ from piccolo.engine import engine_finder
6
+ from piccolo_admin.endpoints import create_admin
7
+ from piccolo_api.crud.serializers import create_pydantic_model
8
+ from quart import Quart
9
+ from quart_schema import (
10
+ Info,
11
+ QuartSchema,
12
+ hide,
13
+ tag,
14
+ validate_request,
15
+ validate_response,
16
+ )
17
+
18
+ from home.endpoints import index
19
+ from home.piccolo_app import APP_CONFIG
20
+ from home.tables import Task
21
+
22
+
23
+ app = Quart(__name__, static_folder="static")
24
+ QuartSchema(app, info=Info(title="Quart API", version="0.1.0"))
25
+
26
+
27
+ TaskModelIn: t.Any = create_pydantic_model(
28
+ table=Task,
29
+ model_name="TaskModelIn",
30
+ )
31
+ TaskModelOut: t.Any = create_pydantic_model(
32
+ table=Task,
33
+ include_default_columns=True,
34
+ model_name="TaskModelOut",
35
+ )
36
+
37
+
38
+ @app.get("/")
39
+ @hide
40
+ def home():
41
+ return index()
42
+
43
+
44
+ @app.get("/tasks/")
45
+ @validate_response(t.List[TaskModelOut])
46
+ @tag(["Task"])
47
+ async def tasks():
48
+ return await Task.select().order_by(Task._meta.primary_key, ascending=False)
49
+
50
+
51
+ @app.post("/tasks/")
52
+ @validate_request(TaskModelIn)
53
+ @validate_response(TaskModelOut)
54
+ @tag(["Task"])
55
+ async def create_task(data: TaskModelIn):
56
+ task = Task(**data.model_dump())
57
+ await task.save()
58
+ return task.to_dict(), HTTPStatus.CREATED
59
+
60
+
61
+ @app.put("/tasks/<int:task_id>/")
62
+ @validate_request(TaskModelIn)
63
+ @validate_response(TaskModelOut)
64
+ @tag(["Task"])
65
+ async def update_task(task_id: int, data: TaskModelIn):
66
+ task = await Task.objects().get(Task._meta.primary_key == task_id)
67
+ if not task:
68
+ return {}, HTTPStatus.NOT_FOUND
69
+
70
+ for key, value in data.model_dump().items():
71
+ setattr(task, key, value)
72
+
73
+ await task.save()
74
+
75
+ return task.to_dict(), HTTPStatus.OK
76
+
77
+
78
+ @app.delete("/tasks/<int:task_id>/")
79
+ @validate_response(TaskModelOut)
80
+ @tag(["Task"])
81
+ async def delete_task(task_id: int):
82
+ task = await Task.objects().get(Task._meta.primary_key == task_id)
83
+ if not task:
84
+ return {}, HTTPStatus.NOT_FOUND
85
+
86
+ await task.remove()
87
+
88
+ return {}, HTTPStatus.OK
89
+
90
+
91
+ @app.before_serving
92
+ async def open_database_connection_pool():
93
+ try:
94
+ engine = engine_finder()
95
+ await engine.start_connection_pool()
96
+ except Exception:
97
+ print("Unable to connect to the database")
98
+
99
+
100
+ @app.after_serving
101
+ async def close_database_connection_pool():
102
+ try:
103
+ engine = engine_finder()
104
+ await engine.close_connection_pool()
105
+ except Exception:
106
+ print("Unable to connect to the database")
107
+
108
+
109
+ # enable the admin application using DispatcherMiddleware
110
+ app = DispatcherMiddleware( # type: ignore
111
+ {
112
+ "/admin": create_admin(
113
+ tables=APP_CONFIG.table_classes,
114
+ # Required when running under HTTPS:
115
+ # allowed_hosts=['my_site.com']
116
+ ),
117
+ "": app,
118
+ }
119
+ )
@@ -0,0 +1,121 @@
1
+ import asyncio
2
+ import typing as t
3
+
4
+ from hypercorn.middleware import DispatcherMiddleware
5
+ from piccolo.engine import engine_finder
6
+ from piccolo_admin.endpoints import create_admin
7
+ from piccolo_api.crud.serializers import create_pydantic_model
8
+ from sanic import Request, Sanic, json
9
+ from sanic_ext import openapi
10
+
11
+ from home.endpoints import index
12
+ from home.piccolo_app import APP_CONFIG
13
+ from home.tables import Task
14
+
15
+ app = Sanic(__name__)
16
+ app.static("/static/", "static")
17
+
18
+
19
+ TaskModelIn: t.Any = create_pydantic_model(
20
+ table=Task,
21
+ model_name="TaskModelIn",
22
+ )
23
+ TaskModelOut: t.Any = create_pydantic_model(
24
+ table=Task,
25
+ include_default_columns=True,
26
+ model_name="TaskModelOut",
27
+ )
28
+
29
+
30
+ @app.get("/")
31
+ @openapi.exclude()
32
+ def home(request: Request):
33
+ return index()
34
+
35
+
36
+ @app.get("/tasks/")
37
+ @openapi.tag("Task")
38
+ @openapi.response(200, {"application/json": TaskModelOut.model_json_schema()})
39
+ async def tasks(request: Request):
40
+ return json(
41
+ await Task.select().order_by(Task._meta.primary_key, ascending=False),
42
+ status=200,
43
+ )
44
+
45
+
46
+ @app.post("/tasks/")
47
+ @openapi.definition(
48
+ body={"application/json": TaskModelIn.model_json_schema()},
49
+ tag="Task",
50
+ )
51
+ @openapi.response(201, {"application/json": TaskModelOut.model_json_schema()})
52
+ async def create_task(request: Request):
53
+ task = Task(**request.json)
54
+ await task.save()
55
+ return json(task.to_dict(), status=201)
56
+
57
+
58
+ @app.put("/tasks/<task_id:int>/")
59
+ @openapi.definition(
60
+ body={"application/json": TaskModelIn.model_json_schema()},
61
+ tag="Task",
62
+ )
63
+ @openapi.response(200, {"application/json": TaskModelOut.model_json_schema()})
64
+ async def update_task(request: Request, task_id: int):
65
+ task = await Task.objects().get(Task._meta.primary_key == task_id)
66
+ if not task:
67
+ return json({}, status=404)
68
+ for key, value in request.json.items():
69
+ setattr(task, key, value)
70
+
71
+ await task.save()
72
+ return json(task.to_dict(), status=200)
73
+
74
+
75
+ @app.delete("/tasks/<task_id:int>/")
76
+ @openapi.tag("Task")
77
+ async def delete_task(request: Request, task_id: int):
78
+ task = await Task.objects().get(Task._meta.primary_key == task_id)
79
+ if not task:
80
+ return json({}, status=404)
81
+ await task.remove()
82
+ return json({}, status=200)
83
+
84
+
85
+ async def open_database_connection_pool():
86
+ try:
87
+ engine = engine_finder()
88
+ await engine.start_connection_pool()
89
+ except Exception:
90
+ print("Unable to connect to the database")
91
+
92
+
93
+ async def close_database_connection_pool():
94
+ try:
95
+ engine = engine_finder()
96
+ await engine.close_connection_pool()
97
+ except Exception:
98
+ print("Unable to connect to the database")
99
+
100
+
101
+ @app.after_server_start
102
+ async def startup(app, loop):
103
+ await open_database_connection_pool()
104
+
105
+
106
+ @app.before_server_stop
107
+ async def shutdown(app, loop):
108
+ await close_database_connection_pool()
109
+
110
+
111
+ # enable the admin application using DispatcherMiddleware
112
+ app = DispatcherMiddleware( # type: ignore
113
+ {
114
+ "/admin": create_admin(
115
+ tables=APP_CONFIG.table_classes,
116
+ # Required when running under HTTPS:
117
+ # allowed_hosts=['my_site.com']
118
+ ),
119
+ "": app,
120
+ }
121
+ )
@@ -10,4 +10,10 @@
10
10
  {% include '_esmerald_app.py.jinja' %}
11
11
  {% elif router == 'lilya' %}
12
12
  {% include '_lilya_app.py.jinja' %}
13
+ {% elif router == 'quart' %}
14
+ {% include '_quart_app.py.jinja' %}
15
+ {% elif router == 'falcon' %}
16
+ {% include '_falcon_app.py.jinja' %}
17
+ {% elif router == 'sanic' %}
18
+ {% include '_sanic_app.py.jinja' %}
13
19
  {% endif %}
@@ -0,0 +1,19 @@
1
+ import os
2
+
3
+ import falcon
4
+ import jinja2
5
+
6
+ ENVIRONMENT = jinja2.Environment(
7
+ loader=jinja2.FileSystemLoader(
8
+ searchpath=os.path.join(os.path.dirname(__file__), "templates")
9
+ )
10
+ )
11
+
12
+
13
+ class HomeEndpoint:
14
+ async def on_get(self, req, resp):
15
+ template = ENVIRONMENT.get_template("home.html.jinja")
16
+ content = template.render(title="Piccolo + ASGI",)
17
+ resp.status = falcon.HTTP_200
18
+ resp.content_type = "text/html"
19
+ resp.text = content
@@ -0,0 +1,18 @@
1
+ import os
2
+
3
+ import jinja2
4
+
5
+ from quart import Response
6
+
7
+ ENVIRONMENT = jinja2.Environment(
8
+ loader=jinja2.FileSystemLoader(
9
+ searchpath=os.path.join(os.path.dirname(__file__), "templates")
10
+ )
11
+ )
12
+
13
+
14
+ def index():
15
+ template = ENVIRONMENT.get_template("home.html.jinja")
16
+ content = template.render(title="Piccolo + ASGI")
17
+ return Response(content)
18
+
@@ -0,0 +1,17 @@
1
+ import os
2
+
3
+ import jinja2
4
+
5
+ from sanic import HTTPResponse
6
+
7
+ ENVIRONMENT = jinja2.Environment(
8
+ loader=jinja2.FileSystemLoader(
9
+ searchpath=os.path.join(os.path.dirname(__file__), "templates")
10
+ )
11
+ )
12
+
13
+
14
+ def index():
15
+ template = ENVIRONMENT.get_template("home.html.jinja")
16
+ content = template.render(title="Piccolo + ASGI")
17
+ return HTTPResponse(content)
@@ -8,4 +8,10 @@
8
8
  {% include '_esmerald_endpoints.py.jinja' %}
9
9
  {% elif router == 'lilya' %}
10
10
  {% include '_lilya_endpoints.py.jinja' %}
11
+ {% elif router == 'quart' %}
12
+ {% include '_quart_endpoints.py.jinja' %}
13
+ {% elif router == 'falcon' %}
14
+ {% include '_falcon_endpoints.py.jinja' %}
15
+ {% elif router == 'sanic' %}
16
+ {% include '_sanic_endpoints.py.jinja' %}
11
17
  {% endif %}
@@ -66,6 +66,21 @@
66
66
  <li><a href="/admin/">Admin</a></li>
67
67
  <li><a href="/tasks/">JSON endpoint</a></li>
68
68
  </ul>
69
+ <h3>Quart</h3>
70
+ <ul>
71
+ <li><a href="/admin/">Admin</a></li>
72
+ <li><a href="/docs">Swagger API</a></li>
73
+ </ul>
74
+ <h3>Falcon</h3>
75
+ <ul>
76
+ <li><a href="/admin/">Admin</a></li>
77
+ <li><a href="/tasks/">JSON endpoint</a></li>
78
+ </ul>
79
+ <h3>Sanic</h3>
80
+ <ul>
81
+ <li><a href="/admin/">Admin</a></li>
82
+ <li><a href="/docs/swagger">Swagger API</a></li>
83
+ </ul>
69
84
  </section>
70
85
  </div>
71
86
  {% endblock content %}
@@ -73,6 +73,7 @@ TimestamptzArg = t.Union[
73
73
  Enum,
74
74
  None,
75
75
  datetime.datetime,
76
+ t.Callable[[], datetime.datetime],
76
77
  ]
77
78
 
78
79
 
@@ -173,9 +173,21 @@ def convert_numeric_out(value: str) -> Decimal:
173
173
  @decode_to_string
174
174
  def convert_int_out(value: str) -> int:
175
175
  """
176
- Make sure Integer values are actually of type int.
176
+ Make sure INTEGER values are actually of type ``int``.
177
+
178
+ SQLite doesn't enforce that the values in INTEGER columns are actually
179
+ integers - they could be strings ('hello'), or floats (1.0).
180
+
181
+ There's not much we can do if the value is something like 'hello' - a
182
+ ``ValueError`` is appropriate in this situation.
183
+
184
+ For a value like ``1.0``, it seems reasonable to handle this, and return a
185
+ value of ``1``.
186
+
177
187
  """
178
- return int(float(value))
188
+ # We used to use int(float(value)), but it was incorrect, because float has
189
+ # limited precision for large numbers.
190
+ return int(Decimal(value))
179
191
 
180
192
 
181
193
  @decode_to_string
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: piccolo
3
- Version: 1.22.0
3
+ Version: 1.23.0
4
4
  Summary: A fast, user friendly ORM and query builder which supports asyncio.
5
5
  Home-page: https://github.com/piccolo-orm/piccolo
6
6
  Author: Daniel Townsend
@@ -9,7 +9,6 @@ License: MIT
9
9
  Project-URL: Documentation, https://piccolo-orm.readthedocs.io/en/latest/index.html
10
10
  Project-URL: Source, https://github.com/piccolo-orm/piccolo
11
11
  Project-URL: Tracker, https://github.com/piccolo-orm/piccolo/issues
12
- Platform: UNKNOWN
13
12
  Classifier: License :: OSI Approved :: MIT License
14
13
  Classifier: Programming Language :: Python
15
14
  Classifier: Programming Language :: Python :: 3
@@ -24,13 +23,42 @@ Classifier: Typing :: Typed
24
23
  Classifier: Topic :: Database
25
24
  Requires-Python: >=3.9.0
26
25
  Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: black
28
+ Requires-Dist: colorama>=0.4.0
29
+ Requires-Dist: Jinja2>=2.11.0
30
+ Requires-Dist: targ>=0.3.7
31
+ Requires-Dist: inflection>=0.5.1
32
+ Requires-Dist: typing-extensions>=4.3.0
33
+ Requires-Dist: pydantic[email]==2.*
27
34
  Provides-Extra: orjson
35
+ Requires-Dist: orjson>=3.5.1; extra == "orjson"
28
36
  Provides-Extra: playground
37
+ Requires-Dist: ipython; extra == "playground"
29
38
  Provides-Extra: postgres
39
+ Requires-Dist: asyncpg>=0.30.0; extra == "postgres"
30
40
  Provides-Extra: sqlite
41
+ Requires-Dist: aiosqlite>=0.16.0; extra == "sqlite"
31
42
  Provides-Extra: uvloop
43
+ Requires-Dist: uvloop>=0.12.0; sys_platform != "win32" and extra == "uvloop"
32
44
  Provides-Extra: all
33
- License-File: LICENSE
45
+ Requires-Dist: orjson>=3.5.1; extra == "all"
46
+ Requires-Dist: ipython; extra == "all"
47
+ Requires-Dist: asyncpg>=0.30.0; extra == "all"
48
+ Requires-Dist: aiosqlite>=0.16.0; extra == "all"
49
+ Requires-Dist: uvloop>=0.12.0; sys_platform != "win32" and extra == "all"
50
+ Dynamic: author
51
+ Dynamic: author-email
52
+ Dynamic: classifier
53
+ Dynamic: description
54
+ Dynamic: description-content-type
55
+ Dynamic: home-page
56
+ Dynamic: license
57
+ Dynamic: project-url
58
+ Dynamic: provides-extra
59
+ Dynamic: requires-dist
60
+ Dynamic: requires-python
61
+ Dynamic: summary
34
62
 
35
63
  ![Logo](https://raw.githubusercontent.com/piccolo-orm/piccolo/master/docs/logo_hero.png "Piccolo Logo")
36
64
 
@@ -128,7 +156,7 @@ Let Piccolo scaffold you an ASGI web app, using Piccolo as the ORM:
128
156
  piccolo asgi new
129
157
  ```
130
158
 
131
- [Starlette](https://www.starlette.io/), [FastAPI](https://fastapi.tiangolo.com/), [BlackSheep](https://www.neoteroi.dev/blacksheep/), [Litestar](https://litestar.dev/), [Esmerald](https://esmerald.dev/) and [Lilya](https://lilya.dev) are currently supported.
159
+ [Starlette](https://www.starlette.io/), [FastAPI](https://fastapi.tiangolo.com/), [BlackSheep](https://www.neoteroi.dev/blacksheep/), [Litestar](https://litestar.dev/), [Esmerald](https://esmerald.dev/), [Lilya](https://lilya.dev), [Quart](https://quart.palletsprojects.com/en/latest/), [Falcon](https://falconframework.org/) and [Sanic](https://sanic.dev/en/) are currently supported.
132
160
 
133
161
  ## Are you a Django user?
134
162
 
@@ -139,5 +167,3 @@ We have a handy page which shows the equivalent of [common Django queries in Pic
139
167
  Our documentation is on [Read the docs](https://piccolo-orm.readthedocs.io/en/latest/piccolo/getting_started/index.html).
140
168
 
141
169
  We also have some great [tutorial videos on YouTube](https://www.youtube.com/channel/UCE7x5nm1Iy9KDfXPNrNQ5lA).
142
-
143
-
@@ -31,9 +31,12 @@ piccolo/apps/asgi/commands/new.py
31
31
  piccolo/apps/asgi/commands/templates/app/README.md.jinja
32
32
  piccolo/apps/asgi/commands/templates/app/_blacksheep_app.py.jinja
33
33
  piccolo/apps/asgi/commands/templates/app/_esmerald_app.py.jinja
34
+ piccolo/apps/asgi/commands/templates/app/_falcon_app.py.jinja
34
35
  piccolo/apps/asgi/commands/templates/app/_fastapi_app.py.jinja
35
36
  piccolo/apps/asgi/commands/templates/app/_lilya_app.py.jinja
36
37
  piccolo/apps/asgi/commands/templates/app/_litestar_app.py.jinja
38
+ piccolo/apps/asgi/commands/templates/app/_quart_app.py.jinja
39
+ piccolo/apps/asgi/commands/templates/app/_sanic_app.py.jinja
37
40
  piccolo/apps/asgi/commands/templates/app/_starlette_app.py.jinja
38
41
  piccolo/apps/asgi/commands/templates/app/app.py.jinja
39
42
  piccolo/apps/asgi/commands/templates/app/conftest.py.jinja
@@ -44,8 +47,11 @@ piccolo/apps/asgi/commands/templates/app/requirements.txt.jinja
44
47
  piccolo/apps/asgi/commands/templates/app/home/__init__.py.jinja
45
48
  piccolo/apps/asgi/commands/templates/app/home/_blacksheep_endpoints.py.jinja
46
49
  piccolo/apps/asgi/commands/templates/app/home/_esmerald_endpoints.py.jinja
50
+ piccolo/apps/asgi/commands/templates/app/home/_falcon_endpoints.py.jinja
47
51
  piccolo/apps/asgi/commands/templates/app/home/_lilya_endpoints.py.jinja
48
52
  piccolo/apps/asgi/commands/templates/app/home/_litestar_endpoints.py.jinja
53
+ piccolo/apps/asgi/commands/templates/app/home/_quart_endpoints.py.jinja
54
+ piccolo/apps/asgi/commands/templates/app/home/_sanic_endpoints.py.jinja
49
55
  piccolo/apps/asgi/commands/templates/app/home/_starlette_endpoints.py.jinja
50
56
  piccolo/apps/asgi/commands/templates/app/home/endpoints.py.jinja
51
57
  piccolo/apps/asgi/commands/templates/app/home/piccolo_app.py.jinja
@@ -205,6 +211,8 @@ piccolo/utils/graphlib/__init__.py
205
211
  piccolo/utils/graphlib/_graphlib.py
206
212
  profiling/__init__.py
207
213
  profiling/run_profile.py
214
+ tests/test_main.py
215
+ tests/test_schema.py
208
216
  tests/apps/__init__.py
209
217
  tests/apps/app/__init__.py
210
218
  tests/apps/app/commands/__init__.py
@@ -269,6 +277,7 @@ tests/columns/test_db_column_name.py
269
277
  tests/columns/test_defaults.py
270
278
  tests/columns/test_double_precision.py
271
279
  tests/columns/test_get_sql_value.py
280
+ tests/columns/test_integer.py
272
281
  tests/columns/test_interval.py
273
282
  tests/columns/test_json.py
274
283
  tests/columns/test_jsonb.py
@@ -1,3 +1,2 @@
1
1
  [console_scripts]
2
2
  piccolo = piccolo.main:main
3
-
@@ -16,7 +16,8 @@ module = [
16
16
  "IPython.core.interactiveshell",
17
17
  "jinja2",
18
18
  "orjson",
19
- "aiosqlite"
19
+ "aiosqlite",
20
+ "uvicorn"
20
21
  ]
21
22
  ignore_missing_imports = true
22
23