Copy disabled (too large)
Download .txt
Showing preview only (16,006K chars total). Download the full file to get everything.
Repository: geldata/gel
Branch: master
Commit: 85191063b4db
Files: 1427
Total size: 21.0 MB
Directory structure:
gitextract_9xzfwvrg/
├── .editorconfig
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── Makefile
│ ├── aws-aurora/
│ │ ├── .gitignore
│ │ └── main.tf
│ ├── aws-rds/
│ │ ├── .gitignore
│ │ ├── .terraform.lock.hcl
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ ├── do-database/
│ │ ├── .gitignore
│ │ ├── .terraform.lock.hcl
│ │ ├── main.tf
│ │ └── outputs.tf
│ ├── gcp-cloud-sql/
│ │ ├── .gitignore
│ │ ├── .terraform.lock.hcl
│ │ └── main.tf
│ ├── heroku-postgres/
│ │ ├── .gitignore
│ │ └── main.tf
│ ├── scripts/
│ │ ├── docs/
│ │ │ └── preview-deploy.js
│ │ └── patches/
│ │ ├── compute-ipu-versions.py
│ │ ├── compute-versions.py
│ │ ├── create-databases.py
│ │ └── test-downgrade.py
│ ├── workflows/
│ │ ├── .gitattributes
│ │ ├── build.dryrun.yml
│ │ ├── build.ls-nightly.yml
│ │ ├── build.nightly.yml
│ │ ├── build.release.yml
│ │ ├── build.testing.yml
│ │ ├── docs-preview-deploy.yml
│ │ ├── docs.yml
│ │ ├── pull-request-meta.yml
│ │ ├── tests.ha.yml
│ │ ├── tests.inplace.yml
│ │ ├── tests.inplace7x.yml
│ │ ├── tests.managed-pg.yml
│ │ ├── tests.patches.yml
│ │ ├── tests.pg-versions.yml
│ │ ├── tests.pool.yml
│ │ ├── tests.reflection.yml
│ │ └── tests.yml
│ └── workflows.src/
│ ├── build.dryrun.tpl.yml
│ ├── build.inc.yml
│ ├── build.ls-nightly.tpl.yml
│ ├── build.ls.targets.yml
│ ├── build.nightly.tpl.yml
│ ├── build.release.tpl.yml
│ ├── build.targets.yml
│ ├── build.testing.tpl.yml
│ ├── render.py
│ ├── tests.ha.targets.yml
│ ├── tests.ha.tpl.yml
│ ├── tests.inc.yml
│ ├── tests.inplace.targets.yml
│ ├── tests.inplace.tpl.yml
│ ├── tests.inplace7x.targets.yml
│ ├── tests.inplace7x.tpl.yml
│ ├── tests.managed-pg.targets.yml
│ ├── tests.managed-pg.tpl.yml
│ ├── tests.patches.targets.yml
│ ├── tests.patches.tpl.yml
│ ├── tests.pg-versions.targets.yml
│ ├── tests.pg-versions.tpl.yml
│ ├── tests.pool.targets.yml
│ ├── tests.pool.tpl.yml
│ ├── tests.reflection.targets.yml
│ ├── tests.reflection.tpl.yml
│ ├── tests.targets.yml
│ └── tests.tpl.yml
├── .gitignore
├── .gitmodules
├── .mailmap
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.rst
├── Cargo.toml
├── LICENSE
├── MANIFEST.in
├── Makefile
├── NOTICE
├── README.md
├── build_backend.py
├── dev-notes/
│ ├── concurrent-indexes.py
│ ├── inplace-upgrades.md
│ ├── newtype-checklist.md
│ └── release-process.md
├── docs/
│ ├── .gitignore
│ ├── Makefile
│ ├── cloud/
│ │ ├── cli.rst
│ │ ├── deploy/
│ │ │ ├── fly.rst
│ │ │ ├── index.rst
│ │ │ ├── netlify.rst
│ │ │ ├── railway.rst
│ │ │ ├── render.rst
│ │ │ └── vercel.rst
│ │ ├── http_gql.rst
│ │ ├── index.rst
│ │ ├── migrate_from.rst
│ │ └── web.rst
│ ├── conf.py
│ ├── index.rst
│ ├── intro/
│ │ ├── branches.rst
│ │ ├── cli.rst
│ │ ├── clients.rst
│ │ ├── edgeql.rst
│ │ ├── guides/
│ │ │ ├── ai/
│ │ │ │ ├── edgeql.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── python.rst
│ │ │ ├── drizzle/
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ └── index.rst
│ │ ├── index.rst
│ │ ├── install_table.rst
│ │ ├── installation.rst
│ │ ├── instances.rst
│ │ ├── localdev.rst
│ │ ├── migrations.rst
│ │ ├── projects.rst
│ │ ├── quickstart/
│ │ │ ├── ai/
│ │ │ │ ├── fastapi.rst
│ │ │ │ └── index.rst
│ │ │ ├── connecting/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ ├── index.rst
│ │ │ ├── inheritance/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ ├── modeling/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ ├── overview/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ ├── setup/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ └── working/
│ │ │ ├── fastapi.rst
│ │ │ ├── index.rst
│ │ │ └── nextjs.rst
│ │ ├── schema.rst
│ │ └── tutorials/
│ │ ├── ai_fastapi_searchbot.rst
│ │ ├── gel_drizzle_booknotes.rst
│ │ └── index.rst
│ ├── redirects
│ ├── redirects.js
│ ├── reference/
│ │ ├── ai/
│ │ │ ├── extai.rst
│ │ │ ├── extvectorstore.rst
│ │ │ ├── http.rst
│ │ │ ├── index.rst
│ │ │ ├── javascript.rst
│ │ │ ├── python.rst
│ │ │ └── vectorstore_python.rst
│ │ ├── auth/
│ │ │ ├── built_in_ui.rst
│ │ │ ├── email_password.rst
│ │ │ ├── http.rst
│ │ │ ├── index.rst
│ │ │ ├── magic_link.rst
│ │ │ ├── oauth.rst
│ │ │ ├── webauthn.rst
│ │ │ └── webhooks.rst
│ │ ├── datamodel/
│ │ │ ├── access_policies.rst
│ │ │ ├── aliases.rst
│ │ │ ├── annotations.rst
│ │ │ ├── branches.rst
│ │ │ ├── comparison.rst
│ │ │ ├── computeds.rst
│ │ │ ├── constraints.rst
│ │ │ ├── extensions.rst
│ │ │ ├── functions.rst
│ │ │ ├── future.rst
│ │ │ ├── globals.rst
│ │ │ ├── index.rst
│ │ │ ├── indexes.rst
│ │ │ ├── inheritance.rst
│ │ │ ├── introspection/
│ │ │ │ ├── casts.rst
│ │ │ │ ├── colltypes.rst
│ │ │ │ ├── constraints.rst
│ │ │ │ ├── functions.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── indexes.rst
│ │ │ │ ├── mutation_rewrites.rst
│ │ │ │ ├── objects.rst
│ │ │ │ ├── operators.rst
│ │ │ │ ├── scalars.rst
│ │ │ │ └── triggers.rst
│ │ │ ├── linkprops.rst
│ │ │ ├── links.rst
│ │ │ ├── migrations.rst
│ │ │ ├── modules.rst
│ │ │ ├── mutation_rewrites.rst
│ │ │ ├── objects.rst
│ │ │ ├── permissions.rst
│ │ │ ├── primitives.rst
│ │ │ ├── properties.rst
│ │ │ └── triggers.rst
│ │ ├── edgeql/
│ │ │ ├── analyze.rst
│ │ │ ├── delete.rst
│ │ │ ├── for.rst
│ │ │ ├── group.rst
│ │ │ ├── index.rst
│ │ │ ├── insert.rst
│ │ │ ├── literals.rst
│ │ │ ├── parameters.rst
│ │ │ ├── path_resolution.rst
│ │ │ ├── paths.rst
│ │ │ ├── select.rst
│ │ │ ├── sets.rst
│ │ │ ├── transactions.rst
│ │ │ ├── types.rst
│ │ │ ├── update.rst
│ │ │ └── with.rst
│ │ ├── index.rst
│ │ ├── reference/
│ │ │ ├── edgeql/
│ │ │ │ ├── analyze.rst
│ │ │ │ ├── cardinality.rst
│ │ │ │ ├── casts.csv
│ │ │ │ ├── casts.rst
│ │ │ │ ├── delete.rst
│ │ │ │ ├── describe.rst
│ │ │ │ ├── eval.rst
│ │ │ │ ├── for.rst
│ │ │ │ ├── functions.rst
│ │ │ │ ├── group.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── insert.rst
│ │ │ │ ├── lexical.rst
│ │ │ │ ├── paths.rst
│ │ │ │ ├── select.rst
│ │ │ │ ├── sess_reset_alias.rst
│ │ │ │ ├── sess_set_alias.rst
│ │ │ │ ├── shapes.rst
│ │ │ │ ├── tx_commit.rst
│ │ │ │ ├── tx_rollback.rst
│ │ │ │ ├── tx_sp_declare.rst
│ │ │ │ ├── tx_sp_release.rst
│ │ │ │ ├── tx_sp_rollback.rst
│ │ │ │ ├── tx_start.rst
│ │ │ │ ├── update.rst
│ │ │ │ ├── volatility.rst
│ │ │ │ └── with.rst
│ │ │ └── index.rst
│ │ ├── running/
│ │ │ ├── admin/
│ │ │ │ ├── configure.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── roles.rst
│ │ │ │ ├── statistics_update.rst
│ │ │ │ └── vacuum.rst
│ │ │ ├── backend_ha.rst
│ │ │ ├── configuration.rst
│ │ │ ├── deployment/
│ │ │ │ ├── aws_aurora_ecs.rst
│ │ │ │ ├── azure_flexibleserver.rst
│ │ │ │ ├── bare_metal.rst
│ │ │ │ ├── digitalocean.rst
│ │ │ │ ├── docker.rst
│ │ │ │ ├── fly_io.rst
│ │ │ │ ├── gcp.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── note_cloud_reset_password.rst
│ │ │ ├── http.rst
│ │ │ ├── index.rst
│ │ │ └── local.rst
│ │ ├── stdlib/
│ │ │ ├── abstract.rst
│ │ │ ├── array.rst
│ │ │ ├── bool.rst
│ │ │ ├── bytes.rst
│ │ │ ├── cfg.rst
│ │ │ ├── constraint_table.rst
│ │ │ ├── constraints.rst
│ │ │ ├── datetime.rst
│ │ │ ├── deprecated.rst
│ │ │ ├── enum.rst
│ │ │ ├── fts.rst
│ │ │ ├── generic.rst
│ │ │ ├── index.rst
│ │ │ ├── json.rst
│ │ │ ├── math.rst
│ │ │ ├── math_funcops_table.rst
│ │ │ ├── net.rst
│ │ │ ├── numbers.rst
│ │ │ ├── objects.rst
│ │ │ ├── pg_trgm.rst
│ │ │ ├── pg_unaccent.rst
│ │ │ ├── pgcrypto.rst
│ │ │ ├── pgvector.rst
│ │ │ ├── postgis.rst
│ │ │ ├── range.rst
│ │ │ ├── sequence.rst
│ │ │ ├── set.rst
│ │ │ ├── string.rst
│ │ │ ├── sys.rst
│ │ │ ├── tuple.rst
│ │ │ ├── type.rst
│ │ │ └── uuid.rst
│ │ └── using/
│ │ ├── cli/
│ │ │ ├── gel.rst
│ │ │ ├── gel_analyze.rst
│ │ │ ├── gel_branch/
│ │ │ │ ├── gel_branch_create.rst
│ │ │ │ ├── gel_branch_drop.rst
│ │ │ │ ├── gel_branch_list.rst
│ │ │ │ ├── gel_branch_merge.rst
│ │ │ │ ├── gel_branch_rebase.rst
│ │ │ │ ├── gel_branch_rename.rst
│ │ │ │ ├── gel_branch_switch.rst
│ │ │ │ ├── gel_branch_wipe.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_cli_upgrade.rst
│ │ │ ├── gel_cloud/
│ │ │ │ ├── gel_cloud_login.rst
│ │ │ │ ├── gel_cloud_logout.rst
│ │ │ │ ├── gel_cloud_secretkey/
│ │ │ │ │ ├── edgedb_cloud_secretkey_create.rst
│ │ │ │ │ ├── edgedb_cloud_secretkey_list.rst
│ │ │ │ │ ├── edgedb_cloud_secretkey_revoke.rst
│ │ │ │ │ └── index.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_configure.rst
│ │ │ ├── gel_connopts.rst
│ │ │ ├── gel_database/
│ │ │ │ ├── gel_database_create.rst
│ │ │ │ ├── gel_database_drop.rst
│ │ │ │ ├── gel_database_wipe.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_describe/
│ │ │ │ ├── gel_describe_object.rst
│ │ │ │ ├── gel_describe_schema.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_dump.rst
│ │ │ ├── gel_extension/
│ │ │ │ ├── index.rst
│ │ │ │ ├── install.rst
│ │ │ │ ├── list-available.rst
│ │ │ │ ├── list.rst
│ │ │ │ └── uninstall.rst
│ │ │ ├── gel_info.rst
│ │ │ ├── gel_init.rst
│ │ │ ├── gel_instance/
│ │ │ │ ├── gel_instance_create.rst
│ │ │ │ ├── gel_instance_credentials.rst
│ │ │ │ ├── gel_instance_destroy.rst
│ │ │ │ ├── gel_instance_link.rst
│ │ │ │ ├── gel_instance_list.rst
│ │ │ │ ├── gel_instance_logs.rst
│ │ │ │ ├── gel_instance_reset_password.rst
│ │ │ │ ├── gel_instance_restart.rst
│ │ │ │ ├── gel_instance_revert.rst
│ │ │ │ ├── gel_instance_start.rst
│ │ │ │ ├── gel_instance_status.rst
│ │ │ │ ├── gel_instance_stop.rst
│ │ │ │ ├── gel_instance_unlink.rst
│ │ │ │ ├── gel_instance_upgrade.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_list.rst
│ │ │ ├── gel_migrate.rst
│ │ │ ├── gel_migration/
│ │ │ │ ├── gel_migration_apply.rst
│ │ │ │ ├── gel_migration_create.rst
│ │ │ │ ├── gel_migration_edit.rst
│ │ │ │ ├── gel_migration_extract.rst
│ │ │ │ ├── gel_migration_log.rst
│ │ │ │ ├── gel_migration_status.rst
│ │ │ │ ├── gel_migration_upgrade_check.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_project/
│ │ │ │ ├── gel_project_info.rst
│ │ │ │ ├── gel_project_init.rst
│ │ │ │ ├── gel_project_unlink.rst
│ │ │ │ ├── gel_project_upgrade.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_query.rst
│ │ │ ├── gel_restore.rst
│ │ │ ├── gel_server/
│ │ │ │ ├── gel_server_info.rst
│ │ │ │ ├── gel_server_install.rst
│ │ │ │ ├── gel_server_list_versions.rst
│ │ │ │ ├── gel_server_uninstall.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_ui.rst
│ │ │ ├── gel_watch.rst
│ │ │ ├── index.rst
│ │ │ └── network.rst
│ │ ├── clients.rst
│ │ ├── connection.rst
│ │ ├── datetime.rst
│ │ ├── graphql/
│ │ │ ├── cheatsheet.rst
│ │ │ ├── graphql.rst
│ │ │ ├── index.rst
│ │ │ ├── introspection.rst
│ │ │ └── mutations.rst
│ │ ├── http.rst
│ │ ├── index.rst
│ │ ├── js/
│ │ │ ├── client.rst
│ │ │ ├── datatypes.rst
│ │ │ ├── generation.rst
│ │ │ ├── index.rst
│ │ │ ├── interfaces.rst
│ │ │ ├── queries.rst
│ │ │ └── querybuilder.rst
│ │ ├── projects.rst
│ │ ├── python/
│ │ │ ├── api/
│ │ │ │ ├── advanced.rst
│ │ │ │ ├── codegen.rst
│ │ │ │ └── types.rst
│ │ │ ├── client.rst
│ │ │ └── index.rst
│ │ └── sql_adapter.rst
│ └── resources/
│ ├── changelog/
│ │ ├── 1_0_a2.rst
│ │ ├── 1_0_a3.rst
│ │ ├── 1_0_a4.rst
│ │ ├── 1_0_a5.rst
│ │ ├── 1_0_a6.rst
│ │ ├── 1_0_a7.rst
│ │ ├── 1_0_b1.rst
│ │ ├── 1_0_b2.rst
│ │ ├── 1_0_b3.rst
│ │ ├── 1_0_rc1.rst
│ │ ├── 1_0_rc2.rst
│ │ ├── 1_0_rc3.rst
│ │ ├── 1_0_rc4.rst
│ │ ├── 1_0_rc5.rst
│ │ ├── 1_x.rst
│ │ ├── 2_x.rst
│ │ ├── 3_x.rst
│ │ ├── 4_x.rst
│ │ ├── 5_x.rst
│ │ ├── 6_x.rst
│ │ ├── 7_x.rst
│ │ ├── deprecation.rst
│ │ └── index.rst
│ ├── cheatsheets/
│ │ ├── admin.rst
│ │ ├── aliases.rst
│ │ ├── annotations.rst
│ │ ├── boolean.rst
│ │ ├── cli.rst
│ │ ├── delete.rst
│ │ ├── functions.rst
│ │ ├── index.rst
│ │ ├── insert.rst
│ │ ├── objects.rst
│ │ ├── repl.rst
│ │ ├── select.rst
│ │ └── update.rst
│ ├── guides/
│ │ ├── contributing/
│ │ │ ├── code.rst
│ │ │ ├── documentation.rst
│ │ │ └── index.rst
│ │ ├── datamigrations/
│ │ │ ├── index.rst
│ │ │ └── postgres.rst
│ │ ├── index.rst
│ │ ├── migrations/
│ │ │ ├── guide.rst
│ │ │ ├── index.rst
│ │ │ └── tips.rst
│ │ └── tutorials/
│ │ ├── chatgpt_bot.rst
│ │ ├── cloudflare_workers.rst
│ │ ├── graphql_apis_with_strawberry.rst
│ │ ├── index.rst
│ │ ├── jupyter_notebook.rst
│ │ ├── nextjs_app_router.rst
│ │ ├── nextjs_pages_router.rst
│ │ ├── rest_apis_with_fastapi.rst
│ │ ├── rest_apis_with_flask.rst
│ │ └── trpc.rst
│ ├── index.rst
│ ├── protocol/
│ │ ├── dataformats.rst
│ │ ├── dump_format.rst
│ │ ├── errors.rst
│ │ ├── index.rst
│ │ ├── messages.rst
│ │ └── typedesc.rst
│ └── upgrading.rst
├── edb/
│ ├── .gitignore
│ ├── README.md
│ ├── __init__.py
│ ├── _edgeql_parser.pyi
│ ├── api/
│ │ ├── errors.txt
│ │ └── types.txt
│ ├── buildmeta.py
│ ├── cli/
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ └── __main__.py
│ ├── common/
│ │ ├── __init__.py
│ │ ├── _typing_inspect.py
│ │ ├── adapter.py
│ │ ├── assert_data_shape.py
│ │ ├── ast/
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── codegen.py
│ │ │ ├── transformer.py
│ │ │ └── visitor.py
│ │ ├── asyncutil.py
│ │ ├── asyncwatcher.py
│ │ ├── binwrapper.py
│ │ ├── checked.py
│ │ ├── colorsys.py
│ │ ├── compiler.py
│ │ ├── debug.py
│ │ ├── devmode.py
│ │ ├── english.py
│ │ ├── enum.py
│ │ ├── exceptions.py
│ │ ├── levenshtein.py
│ │ ├── log.py
│ │ ├── lru.py
│ │ ├── markup/
│ │ │ ├── __init__.py
│ │ │ ├── elements/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base.py
│ │ │ │ ├── code.py
│ │ │ │ ├── doc.py
│ │ │ │ └── lang.py
│ │ │ ├── format.py
│ │ │ ├── renderers/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── styles.py
│ │ │ │ └── terminal.py
│ │ │ └── serializer/
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── code.py
│ │ │ └── logging.py
│ │ ├── ordered.py
│ │ ├── ordered.pyi
│ │ ├── parametric.py
│ │ ├── parsing.py
│ │ ├── prometheus.py
│ │ ├── retryloop.py
│ │ ├── secretkey.py
│ │ ├── signalctl.py
│ │ ├── span.py
│ │ ├── struct.py
│ │ ├── supervisor.py
│ │ ├── term.py
│ │ ├── token_bucket.py
│ │ ├── topological.py
│ │ ├── traceback.py
│ │ ├── turbo_uuid.pyi
│ │ ├── typeutils.py
│ │ ├── typing_inspect.py
│ │ ├── uuidgen.py
│ │ ├── value_dispatch.py
│ │ ├── verutils.py
│ │ ├── view_patterns.py
│ │ ├── windowedsum.py
│ │ └── xdedent.py
│ ├── edgeql/
│ │ ├── __init__.py
│ │ ├── ast.py
│ │ ├── codegen.py
│ │ ├── compiler/
│ │ │ ├── __init__.py
│ │ │ ├── astutils.py
│ │ │ ├── casts.py
│ │ │ ├── clauses.py
│ │ │ ├── config.py
│ │ │ ├── config_desc.py
│ │ │ ├── conflicts.py
│ │ │ ├── context.py
│ │ │ ├── dispatch.py
│ │ │ ├── eta_expand.py
│ │ │ ├── expr.py
│ │ │ ├── func.py
│ │ │ ├── group.py
│ │ │ ├── inference/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── cardinality.py
│ │ │ │ ├── context.py
│ │ │ │ ├── multiplicity.py
│ │ │ │ ├── utils.py
│ │ │ │ └── volatility.py
│ │ │ ├── normalization.py
│ │ │ ├── options.py
│ │ │ ├── pathctx.py
│ │ │ ├── policies.py
│ │ │ ├── polyres.py
│ │ │ ├── schemactx.py
│ │ │ ├── setgen.py
│ │ │ ├── stmt.py
│ │ │ ├── stmtctx.py
│ │ │ ├── triggers.py
│ │ │ ├── tuple_args.py
│ │ │ ├── typegen.py
│ │ │ └── viewgen.py
│ │ ├── declarative.py
│ │ ├── desugar_group.py
│ │ ├── parser/
│ │ │ ├── __init__.py
│ │ │ └── grammar/
│ │ │ ├── .gitignore
│ │ │ ├── __init__.py
│ │ │ ├── commondl.py
│ │ │ ├── config.py
│ │ │ ├── ddl.py
│ │ │ ├── expressions.py
│ │ │ ├── keywords.py
│ │ │ ├── precedence.py
│ │ │ ├── sdl.py
│ │ │ ├── session.py
│ │ │ ├── start.py
│ │ │ ├── statements.py
│ │ │ └── tokens.py
│ │ ├── qltypes.py
│ │ ├── quote.py
│ │ ├── tokenizer.py
│ │ ├── tracer.py
│ │ └── utils.py
│ ├── edgeql-parser/
│ │ ├── Cargo.toml
│ │ ├── edgeql-parser-derive/
│ │ │ ├── Cargo.toml
│ │ │ └── src/
│ │ │ └── lib.rs
│ │ ├── edgeql-parser-python/
│ │ │ ├── Cargo.toml
│ │ │ ├── src/
│ │ │ │ ├── errors.rs
│ │ │ │ ├── hash.rs
│ │ │ │ ├── keywords.rs
│ │ │ │ ├── lib.rs
│ │ │ │ ├── normalize.rs
│ │ │ │ ├── parser.rs
│ │ │ │ ├── position.rs
│ │ │ │ ├── pynormalize.rs
│ │ │ │ ├── tokenizer.rs
│ │ │ │ └── unpack.rs
│ │ │ └── tests/
│ │ │ └── normalize.rs
│ │ ├── src/
│ │ │ ├── ast.rs
│ │ │ ├── expr.rs
│ │ │ ├── hash.rs
│ │ │ ├── helpers/
│ │ │ │ ├── bytes.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── strings.rs
│ │ │ ├── keywords.rs
│ │ │ ├── lib.rs
│ │ │ ├── parser/
│ │ │ │ ├── cst.rs
│ │ │ │ ├── custom_errors.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── spec.rs
│ │ │ ├── position.rs
│ │ │ ├── preparser.rs
│ │ │ ├── schema_file.rs
│ │ │ ├── tokenizer.rs
│ │ │ └── validation.rs
│ │ └── tests/
│ │ ├── expr.rs
│ │ ├── preparser.rs
│ │ └── tokenizer.rs
│ ├── errors/
│ │ ├── __init__.py
│ │ └── base.py
│ ├── graphql/
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ ├── _patch_core.py
│ │ ├── codegen.py
│ │ ├── compiler.py
│ │ ├── errors.py
│ │ ├── explore.py
│ │ ├── extension.pyx
│ │ ├── tokenizer.py
│ │ ├── translator.py
│ │ └── types.py
│ ├── graphql-rewrite/
│ │ ├── Cargo.toml
│ │ ├── _graphql_rewrite.pyi
│ │ ├── src/
│ │ │ ├── lib.rs
│ │ │ ├── py_entry.rs
│ │ │ ├── py_exception.rs
│ │ │ ├── py_token.rs
│ │ │ ├── rewrite.rs
│ │ │ └── token_vec.rs
│ │ └── tests/
│ │ └── rewrite.rs
│ ├── ir/
│ │ ├── __init__.py
│ │ ├── ast.py
│ │ ├── astexpr.py
│ │ ├── pathid.py
│ │ ├── scopetree.py
│ │ ├── staeval.py
│ │ ├── statypes.py
│ │ ├── typeutils.py
│ │ └── utils.py
│ ├── language_server/
│ │ ├── __init__.py
│ │ ├── completion.py
│ │ ├── definition.py
│ │ ├── main.py
│ │ ├── parsing.py
│ │ ├── project.py
│ │ ├── schema.py
│ │ ├── server.py
│ │ └── utils.py
│ ├── lib/
│ │ ├── __init__.py
│ │ ├── _testmode.edgeql
│ │ ├── cal.edgeql
│ │ ├── cfg.edgeql
│ │ ├── enc.edgeql
│ │ ├── ext/
│ │ │ ├── ai.edgeql
│ │ │ ├── auth.edgeql
│ │ │ ├── edgeqlhttp.edgeql
│ │ │ ├── graphql.edgeql
│ │ │ ├── notebook.edgeql
│ │ │ ├── pg_trgm.edgeql
│ │ │ ├── pg_unaccent.edgeql
│ │ │ ├── pgcrypto.edgeql
│ │ │ └── pgvector.edgeql
│ │ ├── fts.edgeql
│ │ ├── math.edgeql
│ │ ├── net.edgeql
│ │ ├── pg.edgeql
│ │ ├── schema.edgeql
│ │ ├── std/
│ │ │ ├── 00-prelude.edgeql
│ │ │ ├── 10-scalars.edgeql
│ │ │ ├── 15-attrs.edgeql
│ │ │ ├── 17-abstractops.edgeql
│ │ │ ├── 20-genericfuncs.edgeql
│ │ │ ├── 25-booloperators.edgeql
│ │ │ ├── 25-enumoperators.edgeql
│ │ │ ├── 25-numoperators.edgeql
│ │ │ ├── 25-setoperators.edgeql
│ │ │ ├── 26-bitwisefuncs.edgeql
│ │ │ ├── 30-arrayfuncs.edgeql
│ │ │ ├── 30-bytesfuncs.edgeql
│ │ │ ├── 30-datetimefuncs.edgeql
│ │ │ ├── 30-jsonfuncs.edgeql
│ │ │ ├── 30-regexpfuncs.edgeql
│ │ │ ├── 30-sequencefuncs.edgeql
│ │ │ ├── 30-strfuncs.edgeql
│ │ │ ├── 30-uuidfuncs.edgeql
│ │ │ ├── 31-rangefuncs.edgeql
│ │ │ ├── 50-constraints.edgeql
│ │ │ ├── 60-baseobject.edgeql
│ │ │ └── 70-converters.edgeql
│ │ └── sys.edgeql
│ ├── load_ext/
│ │ └── main.py
│ ├── pgsql/
│ │ ├── __init__.py
│ │ ├── ast.py
│ │ ├── codegen.py
│ │ ├── common.py
│ │ ├── compiler/
│ │ │ ├── ARCHITECTURE.md
│ │ │ ├── __init__.py
│ │ │ ├── aliases.py
│ │ │ ├── astutils.py
│ │ │ ├── clauses.py
│ │ │ ├── config.py
│ │ │ ├── context.py
│ │ │ ├── dispatch.py
│ │ │ ├── dml.py
│ │ │ ├── enums.py
│ │ │ ├── expr.py
│ │ │ ├── group.py
│ │ │ ├── output.py
│ │ │ ├── pathctx.py
│ │ │ ├── relctx.py
│ │ │ ├── relgen.py
│ │ │ ├── shapecomp.py
│ │ │ └── stmt.py
│ │ ├── dbops/
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── catalogs.py
│ │ │ ├── composites.py
│ │ │ ├── config.py
│ │ │ ├── constraints.py
│ │ │ ├── databases.py
│ │ │ ├── ddl.py
│ │ │ ├── domains.py
│ │ │ ├── enums.py
│ │ │ ├── extensions.py
│ │ │ ├── functions.py
│ │ │ ├── indexes.py
│ │ │ ├── operators.py
│ │ │ ├── ranges.py
│ │ │ ├── roles.py
│ │ │ ├── schemas.py
│ │ │ ├── sequences.py
│ │ │ ├── tables.py
│ │ │ ├── triggers.py
│ │ │ ├── types.py
│ │ │ └── views.py
│ │ ├── debug.py
│ │ ├── delta.py
│ │ ├── delta_ext_ai.py
│ │ ├── deltadbops.py
│ │ ├── deltafts.py
│ │ ├── inheritance.py
│ │ ├── keywords.py
│ │ ├── metaschema.py
│ │ ├── params.py
│ │ ├── parser/
│ │ │ ├── .gitignore
│ │ │ ├── __init__.py
│ │ │ ├── ast_builder.py
│ │ │ ├── exceptions.py
│ │ │ ├── parser.pxd
│ │ │ └── parser.pyx
│ │ ├── patches.py
│ │ ├── patches_6x.py
│ │ ├── resolver/
│ │ │ ├── __init__.py
│ │ │ ├── command.py
│ │ │ ├── context.py
│ │ │ ├── dispatch.py
│ │ │ ├── expr.py
│ │ │ ├── range_functions.py
│ │ │ ├── range_var.py
│ │ │ ├── relation.py
│ │ │ ├── sql_introspection.py
│ │ │ └── static.py
│ │ ├── schemamech.py
│ │ ├── trampoline.py
│ │ └── types.py
│ ├── protocol/
│ │ ├── .gitignore
│ │ ├── README
│ │ ├── __init__.py
│ │ ├── enums.py
│ │ ├── messages.py
│ │ ├── protocol.pxd
│ │ ├── protocol.pyi
│ │ ├── protocol.pyx
│ │ └── render_utils.py
│ ├── schema/
│ │ ├── __init__.py
│ │ ├── _types.py
│ │ ├── abc.py
│ │ ├── annos.py
│ │ ├── casts.py
│ │ ├── constraints.py
│ │ ├── database.py
│ │ ├── ddl.py
│ │ ├── defines.py
│ │ ├── delta.py
│ │ ├── expr.py
│ │ ├── expraliases.py
│ │ ├── extensions.py
│ │ ├── functions.py
│ │ ├── futures.py
│ │ ├── globals.py
│ │ ├── indexes.py
│ │ ├── inheriting.py
│ │ ├── links.py
│ │ ├── migrations.py
│ │ ├── modules.py
│ │ ├── name.py
│ │ ├── objects.py
│ │ ├── objtypes.py
│ │ ├── operators.py
│ │ ├── ordering.py
│ │ ├── permissions.py
│ │ ├── pointers.py
│ │ ├── policies.py
│ │ ├── properties.py
│ │ ├── pseudo.py
│ │ ├── referencing.py
│ │ ├── reflection/
│ │ │ ├── __init__.py
│ │ │ ├── reader.py
│ │ │ ├── structure.py
│ │ │ └── writer.py
│ │ ├── rewrites.py
│ │ ├── roles.py
│ │ ├── scalars.py
│ │ ├── schema.py
│ │ ├── sources.py
│ │ ├── std.py
│ │ ├── triggers.py
│ │ ├── types.py
│ │ ├── unknown_pointers.py
│ │ ├── utils.py
│ │ └── version.py
│ ├── server/
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ ├── _rust_native/
│ │ │ ├── Cargo.toml
│ │ │ └── src/
│ │ │ └── lib.rs
│ │ ├── args.py
│ │ ├── auth.py
│ │ ├── bootstrap.py
│ │ ├── cache/
│ │ │ ├── __init__.py
│ │ │ ├── stmt_cache.pxd
│ │ │ └── stmt_cache.pyx
│ │ ├── compiler/
│ │ │ ├── __init__.py
│ │ │ ├── compiler.py
│ │ │ ├── config.py
│ │ │ ├── dbstate.py
│ │ │ ├── ddl.py
│ │ │ ├── enums.py
│ │ │ ├── errormech.py
│ │ │ ├── explain/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── casefold.py
│ │ │ │ ├── coarse_grained.py
│ │ │ │ ├── fine_grained.py
│ │ │ │ ├── ir_analyze.py
│ │ │ │ ├── pg_tree.py
│ │ │ │ └── to_json.py
│ │ │ ├── rpc.pxd
│ │ │ ├── rpc.pyi
│ │ │ ├── rpc.pyx
│ │ │ ├── sertypes.py
│ │ │ ├── sql.py
│ │ │ └── status.py
│ │ ├── compiler_pool/
│ │ │ ├── __init__.py
│ │ │ ├── amsg.py
│ │ │ ├── multitenant_worker.py
│ │ │ ├── pool.py
│ │ │ ├── queue.py
│ │ │ ├── server.py
│ │ │ ├── state.py
│ │ │ ├── worker.py
│ │ │ └── worker_proc.py
│ │ ├── config/
│ │ │ ├── __init__.py
│ │ │ ├── ops.py
│ │ │ ├── spec.py
│ │ │ └── types.py
│ │ ├── connpool/
│ │ │ ├── __init__.py
│ │ │ ├── config.py
│ │ │ ├── pool.py
│ │ │ ├── pool2.py
│ │ │ └── rolavg.py
│ │ ├── consul.py
│ │ ├── daemon/
│ │ │ ├── __init__.py
│ │ │ ├── daemon.py
│ │ │ ├── exceptions.py
│ │ │ ├── lib.py
│ │ │ └── pidfile.py
│ │ ├── dbview/
│ │ │ ├── __init__.py
│ │ │ ├── dbview.pxd
│ │ │ ├── dbview.pyi
│ │ │ └── dbview.pyx
│ │ ├── defines.py
│ │ ├── ha/
│ │ │ ├── __init__.py
│ │ │ ├── adaptive.py
│ │ │ ├── base.py
│ │ │ └── stolon.py
│ │ ├── http.py
│ │ ├── inplace_upgrade.py
│ │ ├── instdata.py
│ │ ├── logsetup.py
│ │ ├── main.py
│ │ ├── metrics.py
│ │ ├── multitenant.py
│ │ ├── net_worker.py
│ │ ├── pgcluster.py
│ │ ├── pgcon/
│ │ │ ├── __init__.py
│ │ │ ├── connect.py
│ │ │ ├── cpythonx.pxd
│ │ │ ├── errors.py
│ │ │ ├── pgcon.pxd
│ │ │ ├── pgcon.pyi
│ │ │ ├── pgcon.pyx
│ │ │ ├── pgcon_sql.pxd
│ │ │ ├── pgcon_sql.pyx
│ │ │ └── rust_transport.py
│ │ ├── pgconnparams.py
│ │ ├── protocol/
│ │ │ ├── __init__.py
│ │ │ ├── ai_ext.py
│ │ │ ├── args_ser.pxd
│ │ │ ├── args_ser.pyx
│ │ │ ├── auth/
│ │ │ │ ├── __init__.py
│ │ │ │ └── scram.py
│ │ │ ├── auth_ext/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _static/
│ │ │ │ │ ├── interactions.js
│ │ │ │ │ ├── styles.css
│ │ │ │ │ ├── utils.js
│ │ │ │ │ ├── webauthn-authenticate.js
│ │ │ │ │ └── webauthn-register.js
│ │ │ │ ├── apple.py
│ │ │ │ ├── azure.py
│ │ │ │ ├── base.py
│ │ │ │ ├── config.py
│ │ │ │ ├── data.py
│ │ │ │ ├── discord.py
│ │ │ │ ├── email.py
│ │ │ │ ├── email_password.py
│ │ │ │ ├── errors.py
│ │ │ │ ├── github.py
│ │ │ │ ├── google.py
│ │ │ │ ├── http.py
│ │ │ │ ├── jwt.py
│ │ │ │ ├── local.py
│ │ │ │ ├── magic_link.py
│ │ │ │ ├── oauth.py
│ │ │ │ ├── otc.py
│ │ │ │ ├── pkce.py
│ │ │ │ ├── slack.py
│ │ │ │ ├── ui/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── components.py
│ │ │ │ │ └── util.py
│ │ │ │ ├── util.py
│ │ │ │ ├── webauthn.py
│ │ │ │ └── webhook.py
│ │ │ ├── auth_helpers.pxd
│ │ │ ├── auth_helpers.pyx
│ │ │ ├── binary.pxd
│ │ │ ├── binary.pyx
│ │ │ ├── consts.pxi
│ │ │ ├── cpythonx.pxd
│ │ │ ├── edgeql_ext.pyx
│ │ │ ├── execute.pxd
│ │ │ ├── execute.pyi
│ │ │ ├── execute.pyx
│ │ │ ├── frontend.pxd
│ │ │ ├── frontend.pyx
│ │ │ ├── metrics.py
│ │ │ ├── notebook_ext.pxd
│ │ │ ├── notebook_ext.pyx
│ │ │ ├── pg_ext.pxd
│ │ │ ├── pg_ext.pyx
│ │ │ ├── protocol.pxd
│ │ │ ├── protocol.pyi
│ │ │ ├── protocol.pyx
│ │ │ ├── request_scheduler.py
│ │ │ ├── server_info.py
│ │ │ ├── system_api.py
│ │ │ └── ui_ext.pyx
│ │ ├── rust_async_channel.py
│ │ ├── server.py
│ │ ├── service_manager.py
│ │ ├── smtp.py
│ │ └── tenant.py
│ ├── testbase/
│ │ ├── __init__.py
│ │ ├── asyncutils.py
│ │ ├── cluster.py
│ │ ├── connection.py
│ │ ├── experimental_interpreter.py
│ │ ├── http.py
│ │ ├── lang.py
│ │ ├── proc.py
│ │ ├── protocol/
│ │ │ ├── __init__.py
│ │ │ └── test.py
│ │ ├── serutils.py
│ │ └── server.py
│ └── tools/
│ ├── __init__.py
│ ├── __main__.py
│ ├── ast_inheritance_graph.py
│ ├── cli.py
│ ├── config.py
│ ├── dflags.py
│ ├── docs/
│ │ ├── __init__.py
│ │ ├── cli.py
│ │ ├── edb.py
│ │ ├── eql.py
│ │ ├── go.py
│ │ ├── graphql.py
│ │ ├── js.py
│ │ ├── sdl.py
│ │ └── shared.py
│ ├── edb.py
│ ├── experimental_interpreter/
│ │ ├── back_to_ql.py
│ │ ├── basis/
│ │ │ ├── 80-interpreter-internal.edgeql
│ │ │ ├── built_ins.py
│ │ │ ├── builtin_bin_ops.py
│ │ │ ├── errors.py
│ │ │ ├── reserved_ops.py
│ │ │ ├── server_funcs.py
│ │ │ └── std_funcs.py
│ │ ├── data/
│ │ │ ├── casts.py
│ │ │ ├── data_ops.py
│ │ │ ├── deduplication_insert.py
│ │ │ ├── expr_ops.py
│ │ │ ├── expr_to_str.py
│ │ │ ├── module_ops.py
│ │ │ ├── path_factor.py
│ │ │ ├── query_ops.py
│ │ │ ├── type_ops.py
│ │ │ └── val_to_json.py
│ │ ├── db_interface.py
│ │ ├── edb_entry.py
│ │ ├── elab_schema.py
│ │ ├── elaboration.py
│ │ ├── errors.py
│ │ ├── evaluation.py
│ │ ├── evaluation_tools/
│ │ │ └── storage_coercion.py
│ │ ├── helper_funcs.py
│ │ ├── interpreter_logging.py
│ │ ├── logs.py
│ │ ├── new_interpreter.py
│ │ ├── post_processing_tools/
│ │ │ ├── insert_select_optimization.py
│ │ │ └── post_processing.py
│ │ ├── schema/
│ │ │ ├── ddl_processing.py
│ │ │ ├── function_elaboration.py
│ │ │ ├── library_discovery.py
│ │ │ └── subtyping_resolution.py
│ │ ├── sqlite/
│ │ │ └── sqlite_adapter.py
│ │ └── type_checking_tools/
│ │ ├── cast_checking.py
│ │ ├── dml_checking.py
│ │ ├── function_checking.py
│ │ ├── inheritance_populate.py
│ │ ├── module_check_tools.py
│ │ ├── name_resolution.py
│ │ ├── schema_checking.py
│ │ └── typechecking.py
│ ├── fake_ai_server.py
│ ├── gen_cast_table.py
│ ├── gen_errors.py
│ ├── gen_meta_grammars.py
│ ├── gen_rust_ast.py
│ ├── gen_sql_introspection.py
│ ├── gen_test_dumps.py
│ ├── gen_types.py
│ ├── inittestdb.py
│ ├── ls.py
│ ├── ls_forbidden_functions.py
│ ├── mypy/
│ │ ├── __init__.py
│ │ └── plugin.py
│ ├── parser_demo.py
│ ├── profiling/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── cli.py
│ │ ├── profiler.py
│ │ ├── svg_helpers.js
│ │ └── tracing_singledispatch.py
│ ├── pygments/
│ │ ├── __init__.py
│ │ ├── edgeql/
│ │ │ ├── __init__.py
│ │ │ └── meta.py
│ │ └── graphql/
│ │ └── __init__.py
│ ├── railroad_diagram.py
│ ├── redo_metaschema.py
│ ├── rm_data_dir.py
│ ├── test/
│ │ ├── __init__.py
│ │ ├── cpython_state.py
│ │ ├── decorators.py
│ │ ├── loader.py
│ │ ├── mproc_fixes.py
│ │ ├── results.py
│ │ ├── runner.py
│ │ └── styles.py
│ ├── test_extension.py
│ ├── toy_eval_model.py
│ └── wipe.py
├── edb_stat_statements/
│ ├── .gitignore
│ ├── Makefile
│ ├── edb_stat_statements--1.0.sql
│ ├── edb_stat_statements.c
│ ├── edb_stat_statements.control
│ ├── expected/
│ │ ├── cleanup.out
│ │ ├── cursors.out
│ │ ├── dml.out.17
│ │ ├── dml.out.18
│ │ ├── entry_timestamp.out
│ │ ├── extended.out
│ │ ├── level_tracking.out.17
│ │ ├── level_tracking.out.18
│ │ ├── oldextversions.out
│ │ ├── parallel.out.17
│ │ ├── parallel.out.18
│ │ ├── planning.out
│ │ ├── privileges.out
│ │ ├── select.out
│ │ ├── user_activity.out
│ │ ├── utility.out.16
│ │ ├── utility.out.17
│ │ ├── wal.out.17
│ │ └── wal.out.18
│ ├── sql/
│ │ ├── cleanup.sql
│ │ ├── cursors.sql
│ │ ├── dml.sql
│ │ ├── entry_timestamp.sql
│ │ ├── extended.sql
│ │ ├── level_tracking.sql
│ │ ├── oldextversions.sql
│ │ ├── parallel.sql
│ │ ├── planning.sql
│ │ ├── privileges.sql
│ │ ├── select.sql
│ │ ├── user_activity.sql
│ │ ├── utility.sql
│ │ └── wal.sql
│ └── t/
│ └── 010_restart.pl
├── pyproject.toml
├── rust/
│ ├── conn_pool/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── src/
│ │ ├── algo.rs
│ │ ├── bin/
│ │ │ └── optimizer.rs
│ │ ├── block.rs
│ │ ├── conn.rs
│ │ ├── drain.rs
│ │ ├── lib.rs
│ │ ├── metrics.rs
│ │ ├── pool.rs
│ │ ├── python.rs
│ │ ├── test/
│ │ │ ├── mod.rs
│ │ │ └── spec.rs
│ │ └── waitqueue.rs
│ ├── gel-http/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── cache.rs
│ │ ├── lib.rs
│ │ └── python.rs
│ ├── pgrust/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── errors/
│ │ │ ├── edgedb.rs
│ │ │ └── mod.rs
│ │ ├── lib.rs
│ │ └── python/
│ │ └── mod.rs
│ └── pyo3_util/
│ ├── Cargo.toml
│ └── src/
│ ├── channel.rs
│ ├── lib.rs
│ └── logging.rs
├── rust-toolchain.toml
├── setup.py
└── tests/
├── __init__.py
├── certs/
│ ├── .gitignore
│ ├── ca.cert.pem
│ ├── ca.conf
│ ├── ca.crl.pem
│ ├── ca.key.pem
│ ├── client.cert.pem
│ ├── client.key.pem
│ ├── client.key.protected.pem
│ ├── client_ca.cert.pem
│ ├── client_ca.key.pem
│ ├── gen.py
│ ├── gen.sh
│ ├── server.cert.pem
│ └── server.key.pem
├── common/
│ ├── __init__.py
│ ├── test_ast.py
│ ├── test_asyncutil.py
│ ├── test_checked.py
│ ├── test_debug.py
│ ├── test_lru.py
│ ├── test_markup.py
│ ├── test_parametric.py
│ ├── test_prometheus.py
│ ├── test_signalctl.py
│ ├── test_struct.py
│ ├── test_supervisor.py
│ ├── test_term.py
│ ├── test_token_bucket.py
│ ├── test_value_dispatch.py
│ ├── test_windowedsum.py
│ └── test_xdedent.py
├── dumps/
│ ├── dump01/
│ │ ├── 1_4.dump
│ │ ├── 2_0.dump
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dump02/
│ │ ├── 1_4.dump
│ │ ├── 2_0.dump
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dump03/
│ │ ├── 1_4.dump
│ │ ├── 2_0.dump
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dumpv2/
│ │ ├── 2_0.dump
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dumpv3/
│ │ ├── .gitignore
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dumpv4/
│ │ ├── .gitignore
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dumpv5/
│ │ ├── .gitignore
│ │ └── 6_0.dump
│ ├── dumpv6/
│ │ ├── .gitignore
│ │ └── 6_0.dump
│ └── dumpv7/
│ └── .gitignore
├── edgeql/
│ ├── __init__.py
│ └── test_quote.py
├── extension-testing/
│ ├── .gitignore
│ ├── ext_test/
│ │ ├── MANIFEST.toml
│ │ ├── Makefile
│ │ ├── get_sum.edgeql
│ │ └── sql/
│ │ ├── Makefile
│ │ ├── get_sum--0.0.1.sql
│ │ ├── get_sum.c
│ │ └── get_sum.control
│ └── exts.mk
├── inplace-testing/
│ ├── prep-upgrades.py
│ ├── test-old.sh
│ ├── test.sh
│ └── upgrade.patch
├── patch-testing/
│ ├── test.sh
│ └── upgrade.patch
├── schemas/
│ ├── advtypes.esdl
│ ├── cards.esdl
│ ├── cards_ir_inference.esdl
│ ├── cards_setup.edgeql
│ ├── casts.esdl
│ ├── casts_setup.edgeql
│ ├── constraints.esdl
│ ├── constraints_migration/
│ │ ├── schema.esdl
│ │ └── updated_schema.esdl
│ ├── dump01_default.esdl
│ ├── dump01_setup.edgeql
│ ├── dump01_test.esdl
│ ├── dump02_default.esdl
│ ├── dump02_setup.edgeql
│ ├── dump03_default.esdl
│ ├── dump03_setup.edgeql
│ ├── dump_v2_default.esdl
│ ├── dump_v2_setup.edgeql
│ ├── dump_v3_default.esdl
│ ├── dump_v3_setup.edgeql
│ ├── dump_v4_default.esdl
│ ├── dump_v4_setup.edgeql
│ ├── dump_v5_default.esdl
│ ├── dump_v5_setup.edgeql
│ ├── dump_v6_default.esdl
│ ├── dump_v6_setup.edgeql
│ ├── dump_v7_default.esdl
│ ├── dump_v7_setup.edgeql
│ ├── enums.esdl
│ ├── explain.esdl
│ ├── explain_bug5758.esdl
│ ├── explain_bug5791.esdl
│ ├── explain_setup.edgeql
│ ├── ext_ai.esdl
│ ├── fts.esdl
│ ├── fts_setup.edgeql
│ ├── graphql.esdl
│ ├── graphql_other.esdl
│ ├── graphql_schema.esdl
│ ├── graphql_schema_other.esdl
│ ├── graphql_schema_other_deep.esdl
│ ├── graphql_setup.edgeql
│ ├── insert.esdl
│ ├── interpreter_disambiguation.esdl
│ ├── interpreter_disambiguation_setup.edgeql
│ ├── inventory.esdl
│ ├── inventory_setup.edgeql
│ ├── issues.esdl
│ ├── issues_coalesce_setup.edgeql
│ ├── issues_filter_setup.edgeql
│ ├── issues_setup.edgeql
│ ├── json.esdl
│ ├── json_setup.edgeql
│ ├── link_tgt_del.esdl
│ ├── link_tgt_del_migrated.esdl
│ ├── links_1.esdl
│ ├── links_1_migrated.esdl
│ ├── movies.esdl
│ ├── movies_setup.edgeql
│ ├── pg_dump01_default.esdl
│ ├── pg_dump01_setup.edgeql
│ ├── pg_dump02_default.esdl
│ ├── pg_dump02_setup.edgeql
│ ├── pg_trgm.esdl
│ ├── pg_trgm_setup.edgeql
│ ├── pg_unaccent.esdl
│ ├── pgvector.esdl
│ ├── pgvector_setup.edgeql
│ ├── smoke_test_interp.esdl
│ ├── smoke_test_interp_setup.edgeql
│ ├── tree.esdl
│ ├── tree_setup.edgeql
│ ├── updates.edgeql
│ ├── updates.esdl
│ ├── volatility.esdl
│ └── volatility_setup.edgeql
├── test_api_errors.py
├── test_backend_connect.py
├── test_backend_ha.py
├── test_constraints.py
├── test_database.py
├── test_docs.py
├── test_docs_sphinx_ext.py
├── test_dump01.py
├── test_dump02.py
├── test_dump03.py
├── test_dump_basic.py
├── test_dump_v2.py
├── test_dump_v3.py
├── test_dump_v4.py
├── test_dump_v5.py
├── test_dump_v6.py
├── test_dump_v7.py
├── test_edgeql_advtypes.py
├── test_edgeql_calls.py
├── test_edgeql_casts.py
├── test_edgeql_coalesce.py
├── test_edgeql_data_migration.py
├── test_edgeql_datatypes.py
├── test_edgeql_ddl.py
├── test_edgeql_delete.py
├── test_edgeql_enums.py
├── test_edgeql_explain.py
├── test_edgeql_expr_aliases.py
├── test_edgeql_expressions.py
├── test_edgeql_ext_pg_trgm.py
├── test_edgeql_ext_pg_unaccent.py
├── test_edgeql_ext_pgcrypto.py
├── test_edgeql_extensions.py
├── test_edgeql_filter.py
├── test_edgeql_for.py
├── test_edgeql_fts.py
├── test_edgeql_fts_schema.py
├── test_edgeql_functions.py
├── test_edgeql_functions_inline.py
├── test_edgeql_globals.py
├── test_edgeql_group.py
├── test_edgeql_insert.py
├── test_edgeql_internal_group.py
├── test_edgeql_introspection.py
├── test_edgeql_ir_card_inference.py
├── test_edgeql_ir_mult_inference.py
├── test_edgeql_ir_pathid.py
├── test_edgeql_ir_scopetree.py
├── test_edgeql_ir_type_inference.py
├── test_edgeql_ir_volatility_inference.py
├── test_edgeql_json.py
├── test_edgeql_linkatoms.py
├── test_edgeql_linkprops.py
├── test_edgeql_net_schema.py
├── test_edgeql_permissions.py
├── test_edgeql_policies.py
├── test_edgeql_rewrites.py
├── test_edgeql_scope.py
├── test_edgeql_select.py
├── test_edgeql_select_interpreter.py
├── test_edgeql_sql_codegen.py
├── test_edgeql_syntax.py
├── test_edgeql_sys.py
├── test_edgeql_tree.py
├── test_edgeql_triggers.py
├── test_edgeql_tutorial.py
├── test_edgeql_update.py
├── test_edgeql_userddl.py
├── test_edgeql_vector.py
├── test_edgeql_volatility.py
├── test_eval_model.py
├── test_eval_model_group.py
├── test_eval_model_new_interpreter.py
├── test_ext_ai.py
├── test_http.py
├── test_http_auth.py
├── test_http_edgeql.py
├── test_http_ext_auth.py
├── test_http_graphql_mutation.py
├── test_http_graphql_query.py
├── test_http_graphql_schema.py
├── test_http_notebook.py
├── test_http_std_net.py
├── test_indexes.py
├── test_interpreter_disambiguation.py
├── test_language_server.py
├── test_link_target_delete.py
├── test_pg_dump.py
├── test_pgext.py
├── test_profiling.py
├── test_protocol.py
├── test_schema.py
├── test_schema_syntax.py
├── test_server_auth.py
├── test_server_compiler.py
├── test_server_concurrency.py
├── test_server_config.py
├── test_server_ops.py
├── test_server_param_conversions.py
├── test_server_permissions.py
├── test_server_pool.py
├── test_server_proto.py
├── test_server_request_scheduler.py
├── test_server_unit.py
├── test_session.py
├── test_sourcecode.py
├── test_sql_dml.py
├── test_sql_parse.py
├── test_sql_query.py
└── test_tracer.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
root = true
[*]
trim_trailing_whitespace = true
insert_final_newline = true
[*.{py,pyx,pxd,pxi,h}]
indent_size = 4
indent_style = space
[*.yml]
indent_size = 2
indent_style = space
[edb_stat_statements/*.{c,h,l,y,pl,pm}]
indent_style = tab
indent_size = tab
tab_width = 4
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
---
<!-- Please search existing issues to avoid creating duplicates. -->
<!--
For the Gel Version: run `gel query 'select sys::get_version_as_str()'` from your project directory (or run `select sys::get_version_as_str();` in the Gel interactive shell).
For the Gel CLI Version: Run `gel --version` from anywhere
-->
- Gel Version:
- Gel CLI Version:
- OS Version:
Steps to Reproduce:
1.
2.
<!-- If the issue is about a query error, please also provide your schema -->
Schema:
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Problem with Gel UI
url: https://github.com/geldata/gel-ui/issues
about: If you've found a bug or have a feature request for Gel UI, please open an issue in the gel-ui repo.
- name: Long question or idea
url: https://github.com/geldata/gel/discussions
about: Ask long-form questions and discuss ideas.
- name: Quick questions or chat
url: https://www.geldata.com/p/discord
about: Ask quick questions or simply chat on the Gel Discord server.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest a feature for Gel
---
<!-- Please search existing issues to avoid creating duplicates. -->
<!-- Describe the feature you'd like to see implemented in Gel. -->
================================================
FILE: .github/Makefile
================================================
.PHONY: all
ROOT = $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
all: \
workflows/build.nightly.yml \
workflows/build.release.yml \
workflows/build.testing.yml \
workflows/build.dryrun.yml \
workflows/build.ls-nightly.yml \
workflows/tests.yml \
workflows/tests.pool.yml \
workflows/tests.managed-pg.yml \
workflows/tests.ha.yml \
workflows/tests.pg-versions.yml \
workflows/tests.patches.yml \
workflows/tests.inplace.yml \
workflows/tests.inplace7x.yml \
workflows/tests.reflection.yml \
workflows/build.%.yml: workflows.src/build.%.tpl.yml workflows.src/build.%.targets.yml workflows.src/build.inc.yml
$(ROOT)/workflows.src/render.py --workflow=build build.$* build.$*.targets.yml
workflows/tests.yml: workflows.src/tests.tpl.yml workflows.src/tests.targets.yml workflows.src/tests.inc.yml
$(ROOT)/workflows.src/render.py --workflow=test tests tests.targets.yml
workflows/tests.%.yml: workflows.src/tests.%.tpl.yml workflows.src/tests.%.targets.yml workflows.src/tests.inc.yml
$(ROOT)/workflows.src/render.py --workflow=test tests.$* tests.$*.targets.yml
================================================
FILE: .github/aws-aurora/.gitignore
================================================
/.terraform/
/terraform.tfstate*
/.terraform.lock.hcl
/.terraform.tfstate.lock.info
================================================
FILE: .github/aws-aurora/main.tf
================================================
variable "vpc_id" {
description = "VPC ID"
}
variable "sg_id" {
description = "security group ID"
}
variable "password" {
description = "password, provide through your ENV variables"
}
module "aurora" {
source = "terraform-aws-modules/rds-aurora/aws"
version = "~> 5.0"
name = "aws-aurora-instance"
engine = "aurora-postgresql"
engine_version = "13.4"
instance_type = "db.r6g.large"
vpc_id = var.vpc_id
db_subnet_group_name = "default"
replica_count = 1
create_security_group = false
vpc_security_group_ids = [var.sg_id]
storage_encrypted = true
apply_immediately = true
username = "edbtest"
password = var.password
create_random_password = false
enabled_cloudwatch_logs_exports = ["postgresql"]
publicly_accessible = true
skip_final_snapshot = true
tags = {
Environment = "dev"
Terraform = "true"
}
}
output "rds_cluster_endpoint" {
description = "The cluster endpoint"
value = module.aurora.rds_cluster_endpoint
}
================================================
FILE: .github/aws-rds/.gitignore
================================================
/.terraform/
/terraform.tfstate*
================================================
FILE: .github/aws-rds/.terraform.lock.hcl
================================================
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.
provider "registry.terraform.io/hashicorp/aws" {
version = "3.31.0"
hashes = [
"h1:Wou3ZnO10ZvN+n1iwyuaxn3zyGMFj9KYL+9IFb0gGkw=",
"zh:07f5b2f4cfaa25e26a4062ac675e3e5aaf65bb21b94b8fd7f30d576398e7410f",
"zh:08a2154ad29ae130ea9e46948b7b332ec4b45321b4852b45ba60adcfd049f8d6",
"zh:35ed643c2b999021ad56b49f7d9d3a77c98d152477fe54b5c8a68f696bb1a0b7",
"zh:3a8dc51b4be1c04130fd76cda4280019020b276336d307e7074ad52f35d4fdda",
"zh:3c910c4f25e3ffd6d84f051c32161f03d1843753cd545e769757d7b42d654003",
"zh:5d23f316f89937cbda36207271bbe150f633298f96d4644fd02063fc6bf0c28f",
"zh:61fedb2915c5188c6550677a10acb955f32834bbe99ba0cafb2a118be282827b",
"zh:65076a6899c0781ce95064d47d587ad07f80becd1510e4c475e4554131caec09",
"zh:acca833c2d9985e46298323222285b370ea7cf5299b131dbdfc7c3e66fa32401",
"zh:c212cf8ba7fdf64e75accf7e745f76d2349b00553ebd928cc6cafbfda99d97b7",
"zh:cd3f5e89ac5f5cf3f8fed3aca4cc50261d537b60a3490feaddf9ba2f06e5e7aa",
]
}
================================================
FILE: .github/aws-rds/main.tf
================================================
resource "aws_db_instance" "default" {
allocated_storage = 10
engine = "postgres"
engine_version = "13.4"
instance_class = "db.m6g.large"
name = "edbtest"
username = "edbtest"
password = var.password
parameter_group_name = "default.postgres13"
skip_final_snapshot = true
auto_minor_version_upgrade = false
publicly_accessible = true
vpc_security_group_ids = [var.sg_id]
}
================================================
FILE: .github/aws-rds/outputs.tf
================================================
output "db_instance_id" {
value = aws_db_instance.default.id
}
output "db_instance_address" {
value = aws_db_instance.default.address
}
================================================
FILE: .github/aws-rds/variables.tf
================================================
variable "sg_id" {
description = "security group ID"
}
variable "password" {
description = "password, provide through your ENV variables"
}
================================================
FILE: .github/do-database/.gitignore
================================================
/.terraform/
/terraform.tfstate*
================================================
FILE: .github/do-database/.terraform.lock.hcl
================================================
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.
provider "registry.terraform.io/digitalocean/digitalocean" {
version = "2.6.0"
constraints = "2.6.0"
hashes = [
"h1:P1C7e6RlhLpi6KuE/sMruDdM5zZisJwMuKGbnxg8tAw=",
"zh:088c2a4eb9579947d50d8bcd722e75f2f1839acae302c8d43133b1da9926dae3",
"zh:323ba833d011371ca6d953752b133c0acad6462176cd2f804077a5f9d892cd2e",
"zh:3fbc64f1fabe57b6df49511c0d8753f1bbf776d5824ba060a51961d2a4265097",
"zh:4c90a933e23288ee2db2228e4e30055882d91bed831c2191cbecd849b27e44cb",
"zh:62f1cf4c82e5fcaf1a17e39cb96638f006b303758813a6c5ecb08bc93cd93364",
"zh:68ad1354e9f925477dc41e658e84a4996ba662920bbc61a2680235b94811169b",
"zh:9119b573c59429c2dfacb7d95b39c4e021783b8281ecd68f1621ad4a17c112cd",
"zh:9c15e3660f2399c25ee3ad53bd54927a6529d1393a54f1e1c2a523e0369dea46",
"zh:bc88f68bf6a6b5e803734f06731e31d61a5977ed1a638bfe102a54094c4d4030",
"zh:c2b013a5d7e60b31211b0f8c0dd898840b8f1aa7225318da05def33b5edb9388",
"zh:e46e21f6ffa7aac11ade8ab4b87a28ac405ef40a35793cef1f1fd6db6d8e5a0a",
"zh:e879643369e03abc192fbcf7ab06611bb8f36d37ceb5641ba05d58869f10ab7c",
"zh:ee9b56400e545ce1805842b795179a004313b8a947bd8f3490f5c5a0cb7703e5",
"zh:fb44861ae0b58b594aa4e565e0ed06bce939753b14a20b4abd3e8276e839e7a7",
]
}
================================================
FILE: .github/do-database/main.tf
================================================
terraform {
required_providers {
digitalocean = {
source = "digitalocean/digitalocean"
version = "2.6.0"
}
}
}
variable "do_token" {}
provider "digitalocean" {
token = var.do_token
}
resource "digitalocean_database_cluster" "default" {
name = "edbtest"
engine = "pg"
version = "13"
size = "db-s-4vcpu-8gb"
region = "nyc1"
node_count = 1
}
================================================
FILE: .github/do-database/outputs.tf
================================================
output "db_instance_address" {
value = digitalocean_database_cluster.default.host
}
output "db_instance_port" {
value = digitalocean_database_cluster.default.port
}
output "db_instance_user" {
value = digitalocean_database_cluster.default.user
}
output "db_instance_password" {
value = digitalocean_database_cluster.default.password
sensitive = true
}
output "db_instance_database" {
value = digitalocean_database_cluster.default.database
}
================================================
FILE: .github/gcp-cloud-sql/.gitignore
================================================
/.terraform/
/terraform.tfstate*
================================================
FILE: .github/gcp-cloud-sql/.terraform.lock.hcl
================================================
# This file is maintained automatically by "terraform init".
# Manual edits may be lost in future updates.
provider "registry.terraform.io/hashicorp/google" {
version = "3.62.0"
hashes = [
"h1:FgfQz6EhKglcoU7vu1srYqEQFXy1Dti9MoZCxW8HL/w=",
"zh:26e44482924c9d22624054dcebf23c89b102aee6b5c66675747cf2f7274cf703",
"zh:518ebd73eb8f286f60a0c74970cd4e06883962c4af57f2899bc790d89e04038f",
"zh:814036d49d5034cf26fd2239fc57075b42982e1f76ab703fa1cd7609802d979f",
"zh:822dce72d1a77e1418b0e9187b4fe6f3e47b38ea5e51b81e5912074a8be3a7b7",
"zh:981fc6780e1e9c756390727b94ebd822490f7504a05a26c818922da5635ff9b8",
"zh:9a1a7e76ac6c37922261bdb148052fcdcbaf1f521ade68e26b430c106f1974b1",
"zh:cb67b6abed58b6d1b789a72690154fcf35707f65c3fca1936bf72c0c819a03dd",
"zh:cb87e8425b0eb97d80627243a37a67f0f81640499416ad32f1b786cc9d78c6f4",
"zh:d3754c3f05dc9bbd4933b45676144c2dd456de775bff0252c058e0cff94b8f21",
"zh:e2d8b0a78d698e92035e339782b299108d6021768ea4d97d150106c524f84ca1",
]
}
================================================
FILE: .github/gcp-cloud-sql/main.tf
================================================
variable "password" {}
provider "google" {
region = "us-east1"
}
resource "google_sql_database_instance" "default" {
database_version = "POSTGRES_13"
deletion_protection = false
settings {
tier = "db-custom-1-3840"
ip_configuration {
authorized_networks {
value = "0.0.0.0/0"
}
}
}
}
resource "google_sql_user" "users" {
instance = google_sql_database_instance.default.name
name = "postgres"
password = var.password
deletion_policy = "ABANDON"
}
output "db_instance_address" {
value = google_sql_database_instance.default.public_ip_address
}
================================================
FILE: .github/heroku-postgres/.gitignore
================================================
/.terraform/
/terraform.tfstate*
/.terraform.lock.hcl
/.terraform.tfstate.lock.info
================================================
FILE: .github/heroku-postgres/main.tf
================================================
terraform {
required_providers {
heroku = {
source = "heroku/heroku"
version = "~> 4.0"
}
}
}
resource "heroku_addon" "database" {
app = "edgedb-heroku-ci"
plan = "heroku-postgresql:mini"
config = {
version = "14"
}
}
output "heroku_postgres_dsn" {
value = heroku_addon.database.config_var_values.DATABASE_URL
sensitive = true
}
================================================
FILE: .github/scripts/docs/preview-deploy.js
================================================
const DOCS_SITE_REPO = {
org: "edgedb",
repo: "edgedb.com",
ref: "master",
};
module.exports = async ({ github, context }) => {
const { VERCEL_TOKEN, VERCEL_TEAM_ID } = process.env;
if (!VERCEL_TOKEN || !VERCEL_TEAM_ID) {
throw new Error(
`cannot run docs preview deploy workflow, ` +
`VERCEL_TOKEN or VERCEL_TEAM_ID secrets are missing`
);
}
const prBranch = context.payload.pull_request.head.ref;
const commitSHA = context.payload.pull_request.head.sha;
const shortCommitSHA = commitSHA.slice(0, 8);
const existingComments = (
await github.rest.issues.listComments({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
})
).data;
const commentHeader = `### Docs preview deploy\n`;
let commentMessage = commentHeader;
let updateComment = existingComments.find(
(c) =>
c.performed_via_github_app?.slug === "github-actions" &&
c.body?.startsWith(commentHeader)
);
let deploymentError = null;
let deployment;
try {
deployment = await vercelFetch("https://api.vercel.com/v13/deployments", {
name: "edgedb-docs",
gitSource: {
type: "github",
...DOCS_SITE_REPO,
},
projectSettings: {
buildCommand: `EDGEDB_REPO_BRANCH=${prBranch} EDGEDB_REPO_SHA=${commitSHA} yarn vercel-build`,
},
});
commentMessage += `\n🔄 Deploying docs preview for commit ${shortCommitSHA}:\n\n<https://${deployment.url}>`;
} catch (e) {
deploymentError = e;
commentMessage += `\n❌ Failed to deploy docs preview for commit ${shortCommitSHA}:\n\n\`\`\`\n${e.message}\n\`\`\``;
}
commentMessage += `\n\n(Last updated: ${formatDatetime(new Date())})`;
if (updateComment) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: updateComment.id,
body: commentMessage,
});
} else {
updateComment = (
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: commentMessage,
})
).data;
}
if (deploymentError) {
throw new Error(`Docs preview deployment failed: ${e.message}`);
}
let i = 0;
while (i < 40) {
await sleep(15_000);
i++;
const status = (
await vercelFetch(
`https://api.vercel.com/v13/deployments/${deployment.id}`
)
).status;
const latestComment = await github.rest.issues.getComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: updateComment.id,
});
if (!latestComment.data.body.includes(shortCommitSHA)) {
console.log("Skipping further updates, new deployment has started");
return;
}
if (status === "READY" || status === "ERROR" || status === "CANCELED") {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: updateComment.id,
body: `${commentHeader}${
status === "READY"
? `\n✅ Successfully deployed docs preview for commit ${shortCommitSHA}:`
: `\n❌ Docs preview deployment ${
status === "CANCELED" ? "was canceled" : "failed"
} for commit ${shortCommitSHA}:`
}\n\n<https://${deployment.url}>\n\n(Last updated: ${formatDatetime(
new Date()
)})`,
});
if (status !== "READY") {
throw new Error(
`Docs preview deployment failed with status ${status}: https://${deployment.url}`
);
}
return;
}
}
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: updateComment.id,
body: `${commentHeader}
❌ Timed out waiting for deployment status to succeed or fail for commit ${shortCommitSHA}:\n\n<https://${
deployment.url
}>\n\n(Last updated: ${formatDatetime(new Date())})`,
});
throw new Error("Timed out waiting for deployment status to succeed or fail");
};
async function vercelFetch(url, body) {
const { VERCEL_TOKEN, VERCEL_TEAM_ID } = process.env;
const _url = new URL(url);
url = `${_url.origin}${_url.pathname}?${new URLSearchParams({
teamId: VERCEL_TEAM_ID,
})}`;
let res;
try {
res = await fetch(url, {
body: body ? JSON.stringify(body) : undefined,
headers: {
Authorization: `Bearer ${VERCEL_TOKEN}`,
"Content-Type": body ? "application/json" : undefined,
},
method: body ? "post" : "get",
});
} catch (e) {
throw new Error(`vercel api request failed: ${e}`);
}
if (res.ok) {
return await res.json();
} else {
let body;
try {
body = await res.text();
} catch (e) {
// ignore
}
throw new Error(
`vercel api request failed: ${res.status} ${res.statusText}, ${body}`
);
}
}
function formatDatetime(date) {
return date.toLocaleString("en-US", {
year: "numeric",
month: "short",
day: "numeric",
hour: "numeric",
minute: "numeric",
second: "numeric",
hourCycle: "h24",
timeZoneName: "short",
});
}
function sleep(milliseconds) {
return new Promise((resolve) => setTimeout(resolve, milliseconds));
}
================================================
FILE: .github/scripts/patches/compute-ipu-versions.py
================================================
# Compute prior minor versions to test upgrading from
import json
import os
import pathlib
import re
import sys
from urllib import request
sys.path.append(str(pathlib.Path(__file__).parent.parent.parent.parent))
import edb.buildmeta
base = 'https://packages.geldata.com'
u = f'{base}/archive/.jsonindexes/x86_64-unknown-linux-gnu.json'
data = json.loads(request.urlopen(u).read())
u = f'{base}/archive/.jsonindexes/x86_64-unknown-linux-gnu.testing.json'
data_testing = json.loads(request.urlopen(u).read())
version = edb.buildmeta.EDGEDB_MAJOR_VERSION - 1
versions = []
prerelease_versions = []
for obj in data['packages'] + data_testing['packages']:
if (
obj['basename'] == 'gel-server'
and obj['version_details']['major'] == version
and (
not obj['version_details']['prerelease']
or obj['version_details']['prerelease'][0]['phase'] in ('beta', 'rc')
)
):
l = (
versions if not obj['version_details']['prerelease']
else prerelease_versions
)
l.append((
obj['version'],
obj['basename'],
base + obj['installrefs'][0]['ref'],
))
prerelease_versions.sort(key=lambda x: x[0])
if not versions:
# Some 7.x prerelease versions are busted due to having taken
# extension patches that we don't intend to bundle with 8.x.
# Only look at the last.
versions = prerelease_versions[-1:]
versions.sort(key=lambda x: x[0])
if len(versions) > 3:
# We want to try 6.0 and 6.2
versions = [versions[0], versions[2], versions[-1]]
elif len(versions) > 1:
versions = [versions[0], versions[-1]]
matrix = {
"include": [
{"edgedb-version": v, "edgedb-url": url, "edgedb-basename": base}
for v, base, url in versions
]
}
print("matrix:", matrix)
if output := os.getenv('GITHUB_OUTPUT'):
with open(output, 'a') as f:
print(f'matrix={json.dumps(matrix)}', file=f)
================================================
FILE: .github/scripts/patches/compute-versions.py
================================================
# Compute prior minor versions to test upgrading from
import json
import os
import re
from urllib import request
base = 'https://packages.edgedb.com'
u = f'{base}/archive/.jsonindexes/x86_64-unknown-linux-gnu.json'
data = json.loads(request.urlopen(u).read())
u = f'{base}/archive/.jsonindexes/x86_64-unknown-linux-gnu.testing.json'
data_testing = json.loads(request.urlopen(u).read())
branch = os.getenv('GITHUB_BASE_REF') or os.getenv('GITHUB_REF_NAME')
print("BRANCH", branch)
version = int(re.findall(r'\d+', branch)[0])
versions = []
for obj in data['packages'] + data_testing['packages']:
if (
obj['basename'] in {'gel-server', 'edgedb-server'}
and obj['version_details']['major'] == version
and (
not obj['version_details']['prerelease']
or obj['version_details']['prerelease'][0]['phase'] in ('beta', 'rc')
)
):
versions.append((
obj['version'],
obj['basename'],
base + obj['installrefs'][0]['ref'],
))
matrix = {
"include": [
{"edgedb-version": v, "edgedb-url": url, "edgedb-basename": base, "make-dbs": mk}
for v, base, url in versions
for mk in [True, False]
]
}
print("matrix:", matrix)
if output := os.getenv('GITHUB_OUTPUT'):
with open(output, 'a') as f:
print(f'matrix={json.dumps(matrix)}', file=f)
================================================
FILE: .github/scripts/patches/create-databases.py
================================================
# Create databases on the older edgedb version
import edgedb
import subprocess
import sys
cmd = [
sys.argv[1], '-D' 'test-dir',
'--testmode', '--security', 'insecure_dev_mode', '--port', '10000',
]
proc = subprocess.Popen(cmd)
try:
db = edgedb.create_client(
host='localhost', port=10000, tls_security='insecure'
)
for name in [
'json', 'functions', 'expressions', 'casts', 'policies', 'vector',
'scope', 'httpextauth',
]:
db.execute(f'create database {name};')
# For the scope database, let's actually migrate to it. This
# will test that the migrations can still work after the upgrade.
db2 = edgedb.create_client(
host='localhost', port=10000, tls_security='insecure', database='scope'
)
with open("tests/schemas/cards.esdl") as f:
body = f.read()
db2.execute(f'''
START MIGRATION TO {{
module default {{
{body}
}}
}};
POPULATE MIGRATION;
COMMIT MIGRATION;
''')
# Put something in the query cache
db2.query(r'''
SELECT User {
name,
id
}
ORDER BY User.name;
''')
db2.close()
# Compile a query from the CLI.
# (At one point, having a cached query with proto version 1 caused
# trouble...)
cli_base = [
'gel',
'query',
'-H',
'localhost',
'-P',
'10000',
'-b',
'json',
'--tls-security',
'insecure',
]
subprocess.run(
[*cli_base, 'select 1+1'],
check=True,
)
# For the httpextauth database, create the proper extensions, so
# that patching of the auth extension in place can get tested.
db2 = edgedb.create_client(
host='localhost', port=10000, tls_security='insecure',
database='httpextauth'
)
db2.execute(f'''
create extension pgcrypto;
create extension auth;
''')
db2.close()
finally:
proc.terminate()
proc.wait()
================================================
FILE: .github/scripts/patches/test-downgrade.py
================================================
# Test downgrading a database after an upgrade
import edgedb
import os
import subprocess
import json
version = os.getenv('EDGEDB_VERSION')
cmd = [
f'edgedb-server-{version}/bin/edgedb-server', '-D' 'test-dir',
'--testmode', '--security', 'insecure_dev_mode', '--port', '10000',
]
proc = subprocess.Popen(cmd)
db = edgedb.create_client(
host='localhost', port=10000, tls_security='insecure',
database='policies',
)
try:
# Test that a basic query works
res = json.loads(db.query_json('''
select Issue { name, number, watchers: {name} }
filter .number = "1"
'''))
expected = [{
"name": "Release EdgeDB",
"number": "1",
"watchers": [{"name": "Yury"}],
}]
assert res == expected, res
finally:
proc.terminate()
proc.wait()
================================================
FILE: .github/workflows/.gitattributes
================================================
*.yml linguist-generated=true
================================================
FILE: .github/workflows/build.dryrun.yml
================================================
name: Package Build Dry Run
on:
workflow_dispatch:
inputs:
gelpkg_ref:
description: "gel-pkg git ref used to build the packages"
default: "master"
metapkg_ref:
description: "metapkg git ref used to build the packages"
default: "master"
jobs:
prep:
runs-on: ubuntu-latest
outputs:
if_debian_buster_x86_64: ${{ steps.scm.outputs.if_debian_buster_x86_64 }}
if_debian_buster_aarch64: ${{ steps.scm.outputs.if_debian_buster_aarch64 }}
if_debian_bullseye_x86_64: ${{ steps.scm.outputs.if_debian_bullseye_x86_64 }}
if_debian_bullseye_aarch64: ${{ steps.scm.outputs.if_debian_bullseye_aarch64 }}
if_debian_bookworm_x86_64: ${{ steps.scm.outputs.if_debian_bookworm_x86_64 }}
if_debian_bookworm_aarch64: ${{ steps.scm.outputs.if_debian_bookworm_aarch64 }}
if_ubuntu_focal_x86_64: ${{ steps.scm.outputs.if_ubuntu_focal_x86_64 }}
if_ubuntu_focal_aarch64: ${{ steps.scm.outputs.if_ubuntu_focal_aarch64 }}
if_ubuntu_jammy_x86_64: ${{ steps.scm.outputs.if_ubuntu_jammy_x86_64 }}
if_ubuntu_jammy_aarch64: ${{ steps.scm.outputs.if_ubuntu_jammy_aarch64 }}
if_ubuntu_noble_x86_64: ${{ steps.scm.outputs.if_ubuntu_noble_x86_64 }}
if_ubuntu_noble_aarch64: ${{ steps.scm.outputs.if_ubuntu_noble_aarch64 }}
if_centos_8_x86_64: ${{ steps.scm.outputs.if_centos_8_x86_64 }}
if_centos_8_aarch64: ${{ steps.scm.outputs.if_centos_8_aarch64 }}
if_rockylinux_9_x86_64: ${{ steps.scm.outputs.if_rockylinux_9_x86_64 }}
if_rockylinux_9_aarch64: ${{ steps.scm.outputs.if_rockylinux_9_aarch64 }}
if_linux_x86_64: ${{ steps.scm.outputs.if_linux_x86_64 }}
if_linux_aarch64: ${{ steps.scm.outputs.if_linux_aarch64 }}
if_linuxmusl_x86_64: ${{ steps.scm.outputs.if_linuxmusl_x86_64 }}
if_linuxmusl_aarch64: ${{ steps.scm.outputs.if_linuxmusl_aarch64 }}
if_macos_x86_64: ${{ steps.scm.outputs.if_macos_x86_64 }}
if_macos_aarch64: ${{ steps.scm.outputs.if_macos_aarch64 }}
steps:
- uses: actions/checkout@v4
- name: Determine SCM revision
id: scm
shell: bash
run: |
rev=$(git rev-parse HEAD)
jq_filter='.packages[] | select(.basename == "gel-server") | select(.architecture == $ARCH) | .version_details.metadata.scm_revision | . as $rev | select(($rev != null) and ($REV | startswith($rev)))'
key="debian-buster-x86_64"
val=true
idx_file=buster.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-buster-aarch64"
val=true
idx_file=buster.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-bullseye-x86_64"
val=true
idx_file=bullseye.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-bullseye-aarch64"
val=true
idx_file=bullseye.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-bookworm-x86_64"
val=true
idx_file=bookworm.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-bookworm-aarch64"
val=true
idx_file=bookworm.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-focal-x86_64"
val=true
idx_file=focal.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-focal-aarch64"
val=true
idx_file=focal.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-jammy-x86_64"
val=true
idx_file=jammy.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-jammy-aarch64"
val=true
idx_file=jammy.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-noble-x86_64"
val=true
idx_file=noble.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-noble-aarch64"
val=true
idx_file=noble.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="centos-8-x86_64"
val=true
idx_file=el8.nightly.json
url=https://packages.edgedb.com/rpm/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="centos-8-aarch64"
val=true
idx_file=el8.nightly.json
url=https://packages.edgedb.com/rpm/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="rockylinux-9-x86_64"
val=true
idx_file=el9.nightly.json
url=https://packages.edgedb.com/rpm/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="rockylinux-9-aarch64"
val=true
idx_file=el9.nightly.json
url=https://packages.edgedb.com/rpm/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linux-x86_64"
val=true
idx_file=x86_64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linux-aarch64"
val=true
idx_file=aarch64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linuxmusl-x86_64"
val=true
idx_file=x86_64-unknown-linux-musl.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linuxmusl-aarch64"
val=true
idx_file=aarch64-unknown-linux-musl.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="macos-x86_64"
val=true
idx_file=x86_64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="macos-aarch64"
val=true
idx_file=aarch64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
build-debian-buster-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_debian_buster_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-buster:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-buster-x86_64
path: artifacts/debian-buster
build-debian-buster-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_debian_buster_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-buster:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-buster-aarch64
path: artifacts/debian-buster
build-debian-bullseye-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_debian_bullseye_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-bullseye:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-bullseye-x86_64
path: artifacts/debian-bullseye
build-debian-bullseye-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_debian_bullseye_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-bullseye:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-bullseye-aarch64
path: artifacts/debian-bullseye
build-debian-bookworm-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_debian_bookworm_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-bookworm:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-bookworm-x86_64
path: artifacts/debian-bookworm
build-debian-bookworm-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_debian_bookworm_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-bookworm:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-bookworm-aarch64
path: artifacts/debian-bookworm
build-ubuntu-focal-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_ubuntu_focal_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-focal:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-focal-x86_64
path: artifacts/ubuntu-focal
build-ubuntu-focal-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_ubuntu_focal_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-focal:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-focal-aarch64
path: artifacts/ubuntu-focal
build-ubuntu-jammy-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_ubuntu_jammy_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-jammy:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-jammy-x86_64
path: artifacts/ubuntu-jammy
build-ubuntu-jammy-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_ubuntu_jammy_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-jammy:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-jammy-aarch64
path: artifacts/ubuntu-jammy
build-ubuntu-noble-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_ubuntu_noble_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-noble:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-noble-x86_64
path: artifacts/ubuntu-noble
build-ubuntu-noble-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_ubuntu_noble_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-noble:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-noble-aarch64
path: artifacts/ubuntu-noble
build-centos-8-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_centos_8_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-centos-8:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-centos-8-x86_64
path: artifacts/centos-8
build-centos-8-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_centos_8_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-centos-8:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-centos-8-aarch64
path: artifacts/centos-8
build-rockylinux-9-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_rockylinux_9_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-rockylinux-9:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-rockylinux-9-x86_64
path: artifacts/rockylinux-9
build-rockylinux-9-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_rockylinux_9_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-rockylinux-9:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-rockylinux-9-aarch64
path: artifacts/rockylinux-9
build-linux-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_linux_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linux-x86_64:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
build-linux-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_linux_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linux-aarch64:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
build-linuxmusl-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_linuxmusl_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linuxmusl-x86_64:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
PKG_PLATFORM_LIBC: "musl"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
build-linuxmusl-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_linuxmusl_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linuxmusl-aarch64:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
PKG_PLATFORM_LIBC: "musl"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
build-macos-x86_64:
runs-on: ['macos-13']
needs: prep
if: needs.prep.outputs.if_macos_x86_64 == 'true'
steps:
- name: Update Homebrew before installing Rust toolchain
run: |
# Homebrew renamed `rustup-init` to `rustup`:
# https://github.com/Homebrew/homebrew-core/pull/177840
# But the GitHub Action runner is not updated with this change yet.
# This caused the later `brew update` in step `Build` to relink Rust
# toolchain executables, overwriting the custom toolchain installed by
# `dsherret/rust-toolchain-file`. So let's just run `brew update` early.
brew update
- uses: actions/checkout@v4
if: true
with:
sparse-checkout: |
rust-toolchain.toml
sparse-checkout-cone-mode: false
- name: Install Rust toolchain
uses: dsherret/rust-toolchain-file@v1
if: true
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Set up Python
uses: actions/setup-python@v5
if: true
with:
python-version: "3.12"
- name: Set up NodeJS
uses: actions/setup-node@v4
if: true
with:
node-version: '20'
- name: Install dependencies
if: true
run: |
env HOMEBREW_NO_AUTO_UPDATE=1 brew install libmagic
- name: Install an alias
# This is probably not strictly needed, but sentencepiece build script reports
# errors without it.
if: true
run: |
printf '#!/bin/sh\n\nexec sysctl -n hw.logicalcpu' > /usr/local/bin/nproc
chmod +x /usr/local/bin/nproc
- name: Build
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_ARCH: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
BUILD_GENERIC: true
CMAKE_POLICY_VERSION_MINIMUM: '3.5'
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
run: |
edgedb-pkg/integration/macos/build.sh
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-macos-x86_64
path: artifacts/macos-x86_64
build-macos-aarch64:
runs-on: ['macos-14']
needs: prep
if: needs.prep.outputs.if_macos_aarch64 == 'true'
steps:
- name: Update Homebrew before installing Rust toolchain
run: |
# Homebrew renamed `rustup-init` to `rustup`:
# https://github.com/Homebrew/homebrew-core/pull/177840
# But the GitHub Action runner is not updated with this change yet.
# This caused the later `brew update` in step `Build` to relink Rust
# toolchain executables, overwriting the custom toolchain installed by
# `dsherret/rust-toolchain-file`. So let's just run `brew update` early.
brew update
- uses: actions/checkout@v4
if: true
with:
sparse-checkout: |
rust-toolchain.toml
sparse-checkout-cone-mode: false
- name: Install Rust toolchain
uses: dsherret/rust-toolchain-file@v1
if: true
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Set up Python
uses: actions/setup-python@v5
if: true
with:
python-version: "3.12"
- name: Set up NodeJS
uses: actions/setup-node@v4
if: true
with:
node-version: '20'
- name: Install dependencies
if: true
run: |
env HOMEBREW_NO_AUTO_UPDATE=1 brew install libmagic
- name: Install an alias
# This is probably not strictly needed, but sentencepiece build script reports
# errors without it.
if: true
run: |
printf '#!/bin/sh\n\nexec sysctl -n hw.logicalcpu' > /usr/local/bin/nproc
chmod +x /usr/local/bin/nproc
- name: Build
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_ARCH: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
BUILD_GENERIC: true
CMAKE_POLICY_VERSION_MINIMUM: '3.5'
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
run: |
edgedb-pkg/integration/macos/build.sh
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-macos-aarch64
path: artifacts/macos-aarch64
test-debian-buster-x86_64:
needs: [build-debian-buster-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-buster-x86_64
path: artifacts/debian-buster
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-buster:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-buster-aarch64:
needs: [build-debian-buster-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-buster-aarch64
path: artifacts/debian-buster
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-buster:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-bullseye-x86_64:
needs: [build-debian-bullseye-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bullseye-x86_64
path: artifacts/debian-bullseye
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-bullseye:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-bullseye-aarch64:
needs: [build-debian-bullseye-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bullseye-aarch64
path: artifacts/debian-bullseye
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-bullseye:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-bookworm-x86_64:
needs: [build-debian-bookworm-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bookworm-x86_64
path: artifacts/debian-bookworm
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-bookworm:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-bookworm-aarch64:
needs: [build-debian-bookworm-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bookworm-aarch64
path: artifacts/debian-bookworm
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-bookworm:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-focal-x86_64:
needs: [build-ubuntu-focal-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-focal-x86_64
path: artifacts/ubuntu-focal
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-focal:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-focal-aarch64:
needs: [build-ubuntu-focal-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-focal-aarch64
path: artifacts/ubuntu-focal
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-focal:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-jammy-x86_64:
needs: [build-ubuntu-jammy-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-jammy-x86_64
path: artifacts/ubuntu-jammy
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-jammy:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-jammy-aarch64:
needs: [build-ubuntu-jammy-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-jammy-aarch64
path: artifacts/ubuntu-jammy
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-jammy:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-noble-x86_64:
needs: [build-ubuntu-noble-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-noble-x86_64
path: artifacts/ubuntu-noble
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-noble:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-noble-aarch64:
needs: [build-ubuntu-noble-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-noble-aarch64
path: artifacts/ubuntu-noble
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-noble:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-centos-8-x86_64:
needs: [build-centos-8-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-centos-8-x86_64
path: artifacts/centos-8
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-centos-8:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-centos-8-aarch64:
needs: [build-centos-8-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-centos-8-aarch64
path: artifacts/centos-8
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-centos-8:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-rockylinux-9-x86_64:
needs: [build-rockylinux-9-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-rockylinux-9-x86_64
path: artifacts/rockylinux-9
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-rockylinux-9:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-rockylinux-9-aarch64:
needs: [build-rockylinux-9-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-rockylinux-9-aarch64
path: artifacts/rockylinux-9
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-rockylinux-9:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-linux-x86_64:
needs: [build-linux-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-linux-aarch64:
needs: [build-linux-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-linux-aarch64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-linuxmusl-x86_64:
needs: [build-linuxmusl-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-linuxmusl-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_LIBC: "musl"
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-linuxmusl-aarch64:
needs: [build-linuxmusl-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-linuxmusl-aarch64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_LIBC: "musl"
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-macos-x86_64:
needs: [build-macos-x86_64]
runs-on: ['macos-13']
steps:
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-macos-x86_64
path: artifacts/macos-x86_64
- name: Test
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "x86_64"
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " test_dump*.py test_backend_*.py test_database.py test_server_*.py test_edgeql_ddl.py test_session.py
"
run: |
# Bump shmmax and shmall to avoid test failures.
sudo sysctl -w kern.sysv.shmmax=12582912
sudo sysctl -w kern.sysv.shmall=12582912
edgedb-pkg/integration/macos/test.sh
test-macos-aarch64:
needs: [build-macos-aarch64]
runs-on: ['macos-14']
steps:
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-macos-aarch64
path: artifacts/macos-aarch64
- name: Test
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "aarch64"
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
run: |
edgedb-pkg/integration/macos/test.sh
workflow-notifications:
if: failure() && github.event_name != 'pull_request'
name: Notify in Slack on failures
needs:
- prep
- build-debian-buster-x86_64
- test-debian-buster-x86_64
- build-debian-buster-aarch64
- test-debian-buster-aarch64
- build-debian-bullseye-x86_64
- test-debian-bullseye-x86_64
- build-debian-bullseye-aarch64
- test-debian-bullseye-aarch64
- build-debian-bookworm-x86_64
- test-debian-bookworm-x86_64
- build-debian-bookworm-aarch64
- test-debian-bookworm-aarch64
- build-ubuntu-focal-x86_64
- test-ubuntu-focal-x86_64
- build-ubuntu-focal-aarch64
- test-ubuntu-focal-aarch64
- build-ubuntu-jammy-x86_64
- test-ubuntu-jammy-x86_64
- build-ubuntu-jammy-aarch64
- test-ubuntu-jammy-aarch64
- build-ubuntu-noble-x86_64
- test-ubuntu-noble-x86_64
- build-ubuntu-noble-aarch64
- test-ubuntu-noble-aarch64
- build-centos-8-x86_64
- test-centos-8-x86_64
- build-centos-8-aarch64
- test-centos-8-aarch64
- build-rockylinux-9-x86_64
- test-rockylinux-9-x86_64
- build-rockylinux-9-aarch64
- test-rockylinux-9-aarch64
- build-linux-x86_64
- test-linux-x86_64
- build-linux-aarch64
- test-linux-aarch64
- build-linuxmusl-x86_64
- test-linuxmusl-x86_64
- build-linuxmusl-aarch64
- test-linuxmusl-aarch64
- build-macos-x86_64
- test-macos-x86_64
- build-macos-aarch64
- test-macos-aarch64
runs-on: ubuntu-latest
permissions:
actions: 'read'
steps:
- name: Slack Workflow Notification
uses: Gamesight/slack-workflow-status@26a36836c887f260477432e4314ec3490a84f309
with:
repo_token: ${{secrets.GITHUB_TOKEN}}
slack_webhook_url: ${{secrets.ACTIONS_SLACK_WEBHOOK_URL}}
name: 'Workflow notifications'
icon_emoji: ':hammer:'
include_jobs: 'on-failure'
================================================
FILE: .github/workflows/build.ls-nightly.yml
================================================
name: 'ls: Build and Publish Nightly Packages'
on:
schedule:
- cron: "0 1 * * *"
workflow_dispatch:
inputs:
gelpkg_ref:
description: "gel-pkg git ref used to build the packages"
default: "master"
metapkg_ref:
description: "metapkg git ref used to build the packages"
default: "master"
push:
branches:
- nightly
jobs:
prep:
runs-on: ubuntu-latest
outputs:
if_linux_x86_64: ${{ steps.scm.outputs.if_linux_x86_64 }}
if_linux_aarch64: ${{ steps.scm.outputs.if_linux_aarch64 }}
if_linuxmusl_x86_64: ${{ steps.scm.outputs.if_linuxmusl_x86_64 }}
if_linuxmusl_aarch64: ${{ steps.scm.outputs.if_linuxmusl_aarch64 }}
if_macos_x86_64: ${{ steps.scm.outputs.if_macos_x86_64 }}
if_macos_aarch64: ${{ steps.scm.outputs.if_macos_aarch64 }}
steps:
- uses: actions/checkout@v4
- name: Determine SCM revision
id: scm
shell: bash
run: |
rev=$(git rev-parse HEAD)
jq_filter='.packages[] | select(.basename == "gel-ls") | select(.architecture == $ARCH) | .version_details.metadata.scm_revision | . as $rev | select(($rev != null) and ($REV | startswith($rev)))'
key="linux-x86_64"
val=true
idx_file=x86_64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linux-aarch64"
val=true
idx_file=aarch64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linuxmusl-x86_64"
val=true
idx_file=x86_64-unknown-linux-musl.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linuxmusl-aarch64"
val=true
idx_file=aarch64-unknown-linux-musl.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="macos-x86_64"
val=true
idx_file=x86_64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="macos-aarch64"
val=true
idx_file=aarch64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
build-linux-x86_64:
runs-on: ['self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_linux_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linux-x86_64:latest
env:
PACKAGE: "edgedbpkg.edgedb_ls:EdgeDBLanguageServer"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
build-linux-aarch64:
runs-on: ['self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_linux_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linux-aarch64:latest
env:
PACKAGE: "edgedbpkg.edgedb_ls:EdgeDBLanguageServer"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
build-linuxmusl-x86_64:
runs-on: ['self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_linuxmusl_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linuxmusl-x86_64:latest
env:
PACKAGE: "edgedbpkg.edgedb_ls:EdgeDBLanguageServer"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
PKG_PLATFORM_LIBC: "musl"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
build-linuxmusl-aarch64:
runs-on: ['self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_linuxmusl_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linuxmusl-aarch64:latest
env:
PACKAGE: "edgedbpkg.edgedb_ls:EdgeDBLanguageServer"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
PKG_PLATFORM_LIBC: "musl"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
build-macos-x86_64:
runs-on: ['macos-13']
needs: prep
if: needs.prep.outputs.if_macos_x86_64 == 'true'
steps:
- name: Update Homebrew before installing Rust toolchain
run: |
# Homebrew renamed `rustup-init` to `rustup`:
# https://github.com/Homebrew/homebrew-core/pull/177840
# But the GitHub Action runner is not updated with this change yet.
# This caused the later `brew update` in step `Build` to relink Rust
# toolchain executables, overwriting the custom toolchain installed by
# `dsherret/rust-toolchain-file`. So let's just run `brew update` early.
brew update
- uses: actions/checkout@v4
if: true
with:
sparse-checkout: |
rust-toolchain.toml
sparse-checkout-cone-mode: false
- name: Install Rust toolchain
uses: dsherret/rust-toolchain-file@v1
if: true
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Set up Python
uses: actions/setup-python@v5
if: true
with:
python-version: "3.12"
- name: Set up NodeJS
uses: actions/setup-node@v4
if: true
with:
node-version: '20'
- name: Install dependencies
if: true
run: |
env HOMEBREW_NO_AUTO_UPDATE=1 brew install libmagic
- name: Install an alias
# This is probably not strictly needed, but sentencepiece build script reports
# errors without it.
if: true
run: |
printf '#!/bin/sh\n\nexec sysctl -n hw.logicalcpu' > /usr/local/bin/nproc
chmod +x /usr/local/bin/nproc
- name: Build
env:
PACKAGE: "edgedbpkg.edgedb_ls:EdgeDBLanguageServer"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_ARCH: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
BUILD_GENERIC: true
CMAKE_POLICY_VERSION_MINIMUM: '3.5'
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
run: |
edgedb-pkg/integration/macos/build.sh
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-macos-x86_64
path: artifacts/macos-x86_64
build-macos-aarch64:
runs-on: ['macos-14']
needs: prep
if: needs.prep.outputs.if_macos_aarch64 == 'true'
steps:
- name: Update Homebrew before installing Rust toolchain
run: |
# Homebrew renamed `rustup-init` to `rustup`:
# https://github.com/Homebrew/homebrew-core/pull/177840
# But the GitHub Action runner is not updated with this change yet.
# This caused the later `brew update` in step `Build` to relink Rust
# toolchain executables, overwriting the custom toolchain installed by
# `dsherret/rust-toolchain-file`. So let's just run `brew update` early.
brew update
- uses: actions/checkout@v4
if: true
with:
sparse-checkout: |
rust-toolchain.toml
sparse-checkout-cone-mode: false
- name: Install Rust toolchain
uses: dsherret/rust-toolchain-file@v1
if: true
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Set up Python
uses: actions/setup-python@v5
if: true
with:
python-version: "3.12"
- name: Set up NodeJS
uses: actions/setup-node@v4
if: true
with:
node-version: '20'
- name: Install dependencies
if: true
run: |
env HOMEBREW_NO_AUTO_UPDATE=1 brew install libmagic
- name: Install an alias
# This is probably not strictly needed, but sentencepiece build script reports
# errors without it.
if: true
run: |
printf '#!/bin/sh\n\nexec sysctl -n hw.logicalcpu' > /usr/local/bin/nproc
chmod +x /usr/local/bin/nproc
- name: Build
env:
PACKAGE: "edgedbpkg.edgedb_ls:EdgeDBLanguageServer"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_ARCH: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
BUILD_GENERIC: true
CMAKE_POLICY_VERSION_MINIMUM: '3.5'
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
run: |
edgedb-pkg/integration/macos/build.sh
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-macos-aarch64
path: artifacts/macos-aarch64
publish-linux-x86_64:
needs: [build-linux-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-linux-x86_64:
needs: [publish-linux-x86_64]
runs-on: ['self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: linux-x86_64
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-linux-x86_64:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-linux-aarch64:
needs: [build-linux-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-linux-aarch64:
needs: [publish-linux-aarch64]
runs-on: ['self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: linux-aarch64
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-linux-aarch64:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-linuxmusl-x86_64:
needs: [build-linuxmusl-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_LIBC: "musl"
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-linuxmusl-x86_64:
needs: [publish-linuxmusl-x86_64]
runs-on: ['self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: linuxmusl-x86_64
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-linuxmusl-x86_64:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-linuxmusl-aarch64:
needs: [build-linuxmusl-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_LIBC: "musl"
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-linuxmusl-aarch64:
needs: [publish-linuxmusl-aarch64]
runs-on: ['self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: linuxmusl-aarch64
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-linuxmusl-aarch64:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-macos-x86_64:
needs: [build-macos-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-macos-x86_64
path: artifacts/macos-x86_64
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: macos-x86_64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "x86_64"
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
publish-macos-aarch64:
needs: [build-macos-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-macos-aarch64
path: artifacts/macos-aarch64
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: macos-aarch64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "aarch64"
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
workflow-notifications:
if: failure() && github.event_name != 'pull_request'
name: Notify in Slack on failures
needs:
- prep
- build-linux-x86_64
- publish-linux-x86_64
- check-published-linux-x86_64
- build-linux-aarch64
- publish-linux-aarch64
- check-published-linux-aarch64
- build-linuxmusl-x86_64
- publish-linuxmusl-x86_64
- check-published-linuxmusl-x86_64
- build-linuxmusl-aarch64
- publish-linuxmusl-aarch64
- check-published-linuxmusl-aarch64
- build-macos-x86_64
- publish-macos-x86_64
- build-macos-aarch64
- publish-macos-aarch64
runs-on: ubuntu-latest
permissions:
actions: 'read'
steps:
- name: Slack Workflow Notification
uses: Gamesight/slack-workflow-status@26a36836c887f260477432e4314ec3490a84f309
with:
repo_token: ${{secrets.GITHUB_TOKEN}}
slack_webhook_url: ${{secrets.ACTIONS_SLACK_WEBHOOK_URL}}
name: 'Workflow notifications'
icon_emoji: ':hammer:'
include_jobs: 'on-failure'
================================================
FILE: .github/workflows/build.nightly.yml
================================================
name: Build Test and Publish Nightly Packages
on:
schedule:
- cron: "0 1 * * *"
workflow_dispatch:
inputs:
gelpkg_ref:
description: "gel-pkg git ref used to build the packages"
default: "master"
metapkg_ref:
description: "metapkg git ref used to build the packages"
default: "master"
push:
branches:
- nightly
jobs:
prep:
runs-on: ubuntu-latest
outputs:
if_debian_buster_x86_64: ${{ steps.scm.outputs.if_debian_buster_x86_64 }}
if_debian_buster_aarch64: ${{ steps.scm.outputs.if_debian_buster_aarch64 }}
if_debian_bullseye_x86_64: ${{ steps.scm.outputs.if_debian_bullseye_x86_64 }}
if_debian_bullseye_aarch64: ${{ steps.scm.outputs.if_debian_bullseye_aarch64 }}
if_debian_bookworm_x86_64: ${{ steps.scm.outputs.if_debian_bookworm_x86_64 }}
if_debian_bookworm_aarch64: ${{ steps.scm.outputs.if_debian_bookworm_aarch64 }}
if_ubuntu_focal_x86_64: ${{ steps.scm.outputs.if_ubuntu_focal_x86_64 }}
if_ubuntu_focal_aarch64: ${{ steps.scm.outputs.if_ubuntu_focal_aarch64 }}
if_ubuntu_jammy_x86_64: ${{ steps.scm.outputs.if_ubuntu_jammy_x86_64 }}
if_ubuntu_jammy_aarch64: ${{ steps.scm.outputs.if_ubuntu_jammy_aarch64 }}
if_ubuntu_noble_x86_64: ${{ steps.scm.outputs.if_ubuntu_noble_x86_64 }}
if_ubuntu_noble_aarch64: ${{ steps.scm.outputs.if_ubuntu_noble_aarch64 }}
if_centos_8_x86_64: ${{ steps.scm.outputs.if_centos_8_x86_64 }}
if_centos_8_aarch64: ${{ steps.scm.outputs.if_centos_8_aarch64 }}
if_rockylinux_9_x86_64: ${{ steps.scm.outputs.if_rockylinux_9_x86_64 }}
if_rockylinux_9_aarch64: ${{ steps.scm.outputs.if_rockylinux_9_aarch64 }}
if_linux_x86_64: ${{ steps.scm.outputs.if_linux_x86_64 }}
if_linux_aarch64: ${{ steps.scm.outputs.if_linux_aarch64 }}
if_linuxmusl_x86_64: ${{ steps.scm.outputs.if_linuxmusl_x86_64 }}
if_linuxmusl_aarch64: ${{ steps.scm.outputs.if_linuxmusl_aarch64 }}
if_macos_x86_64: ${{ steps.scm.outputs.if_macos_x86_64 }}
if_macos_aarch64: ${{ steps.scm.outputs.if_macos_aarch64 }}
steps:
- uses: actions/checkout@v4
- name: Determine SCM revision
id: scm
shell: bash
run: |
rev=$(git rev-parse HEAD)
jq_filter='.packages[] | select(.basename == "gel-server") | select(.architecture == $ARCH) | .version_details.metadata.scm_revision | . as $rev | select(($rev != null) and ($REV | startswith($rev)))'
key="debian-buster-x86_64"
val=true
idx_file=buster.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-buster-aarch64"
val=true
idx_file=buster.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-bullseye-x86_64"
val=true
idx_file=bullseye.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-bullseye-aarch64"
val=true
idx_file=bullseye.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-bookworm-x86_64"
val=true
idx_file=bookworm.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="debian-bookworm-aarch64"
val=true
idx_file=bookworm.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-focal-x86_64"
val=true
idx_file=focal.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-focal-aarch64"
val=true
idx_file=focal.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-jammy-x86_64"
val=true
idx_file=jammy.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-jammy-aarch64"
val=true
idx_file=jammy.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-noble-x86_64"
val=true
idx_file=noble.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="ubuntu-noble-aarch64"
val=true
idx_file=noble.nightly.json
url=https://packages.edgedb.com/apt/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="centos-8-x86_64"
val=true
idx_file=el8.nightly.json
url=https://packages.edgedb.com/rpm/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="centos-8-aarch64"
val=true
idx_file=el8.nightly.json
url=https://packages.edgedb.com/rpm/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="rockylinux-9-x86_64"
val=true
idx_file=el9.nightly.json
url=https://packages.edgedb.com/rpm/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="rockylinux-9-aarch64"
val=true
idx_file=el9.nightly.json
url=https://packages.edgedb.com/rpm/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linux-x86_64"
val=true
idx_file=x86_64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linux-aarch64"
val=true
idx_file=aarch64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linuxmusl-x86_64"
val=true
idx_file=x86_64-unknown-linux-musl.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="linuxmusl-aarch64"
val=true
idx_file=aarch64-unknown-linux-musl.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="macos-x86_64"
val=true
idx_file=x86_64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "x86_64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
key="macos-aarch64"
val=true
idx_file=aarch64-unknown-linux-gnu.nightly.json
url=https://packages.edgedb.com/archive/.jsonindexes/$idx_file
tmp_file="/tmp/$idx_file"
if [ ! -e "$tmp_file" ]; then
curl --fail -o $tmp_file -s $url || true
fi
if [ -e "$tmp_file" ]; then
out=$(< "$tmp_file" jq -r --arg REV "$rev" --arg ARCH "aarch64" "$jq_filter")
if [ -n "$out" ]; then
echo "Skip rebuilding existing ${key}"
val=false
fi
fi
echo if_${key//-/_}="$val" >> $GITHUB_OUTPUT
build-debian-buster-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_debian_buster_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-buster:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-buster-x86_64
path: artifacts/debian-buster
build-debian-buster-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_debian_buster_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-buster:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-buster-aarch64
path: artifacts/debian-buster
build-debian-bullseye-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_debian_bullseye_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-bullseye:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-bullseye-x86_64
path: artifacts/debian-bullseye
build-debian-bullseye-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_debian_bullseye_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-bullseye:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-bullseye-aarch64
path: artifacts/debian-bullseye
build-debian-bookworm-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_debian_bookworm_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-bookworm:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-bookworm-x86_64
path: artifacts/debian-bookworm
build-debian-bookworm-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_debian_bookworm_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-debian-bookworm:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-debian-bookworm-aarch64
path: artifacts/debian-bookworm
build-ubuntu-focal-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_ubuntu_focal_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-focal:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-focal-x86_64
path: artifacts/ubuntu-focal
build-ubuntu-focal-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_ubuntu_focal_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-focal:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-focal-aarch64
path: artifacts/ubuntu-focal
build-ubuntu-jammy-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_ubuntu_jammy_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-jammy:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-jammy-x86_64
path: artifacts/ubuntu-jammy
build-ubuntu-jammy-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_ubuntu_jammy_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-jammy:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-jammy-aarch64
path: artifacts/ubuntu-jammy
build-ubuntu-noble-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_ubuntu_noble_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-noble:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-noble-x86_64
path: artifacts/ubuntu-noble
build-ubuntu-noble-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_ubuntu_noble_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-ubuntu-noble:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-ubuntu-noble-aarch64
path: artifacts/ubuntu-noble
build-centos-8-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_centos_8_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-centos-8:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-centos-8-x86_64
path: artifacts/centos-8
build-centos-8-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_centos_8_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-centos-8:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-centos-8-aarch64
path: artifacts/centos-8
build-rockylinux-9-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_rockylinux_9_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-rockylinux-9:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-rockylinux-9-x86_64
path: artifacts/rockylinux-9
build-rockylinux-9-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_rockylinux_9_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-rockylinux-9:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-rockylinux-9-aarch64
path: artifacts/rockylinux-9
build-linux-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_linux_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linux-x86_64:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
build-linux-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_linux_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linux-aarch64:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
build-linuxmusl-x86_64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
needs: prep
if: needs.prep.outputs.if_linuxmusl_x86_64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linuxmusl-x86_64:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
PKG_PLATFORM_LIBC: "musl"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
build-linuxmusl-aarch64:
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
needs: prep
if: needs.prep.outputs.if_linuxmusl_aarch64 == 'true'
steps:
- name: Build
uses: docker://ghcr.io/geldata/gelpkg-build-linuxmusl-aarch64:latest
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
BUILD_GENERIC: true
PKG_PLATFORM_LIBC: "musl"
METAPKG_GIT_CACHE: disabled
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
build-macos-x86_64:
runs-on: ['macos-13']
needs: prep
if: needs.prep.outputs.if_macos_x86_64 == 'true'
steps:
- name: Update Homebrew before installing Rust toolchain
run: |
# Homebrew renamed `rustup-init` to `rustup`:
# https://github.com/Homebrew/homebrew-core/pull/177840
# But the GitHub Action runner is not updated with this change yet.
# This caused the later `brew update` in step `Build` to relink Rust
# toolchain executables, overwriting the custom toolchain installed by
# `dsherret/rust-toolchain-file`. So let's just run `brew update` early.
brew update
- uses: actions/checkout@v4
if: true
with:
sparse-checkout: |
rust-toolchain.toml
sparse-checkout-cone-mode: false
- name: Install Rust toolchain
uses: dsherret/rust-toolchain-file@v1
if: true
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Set up Python
uses: actions/setup-python@v5
if: true
with:
python-version: "3.12"
- name: Set up NodeJS
uses: actions/setup-node@v4
if: true
with:
node-version: '20'
- name: Install dependencies
if: true
run: |
env HOMEBREW_NO_AUTO_UPDATE=1 brew install libmagic
- name: Install an alias
# This is probably not strictly needed, but sentencepiece build script reports
# errors without it.
if: true
run: |
printf '#!/bin/sh\n\nexec sysctl -n hw.logicalcpu' > /usr/local/bin/nproc
chmod +x /usr/local/bin/nproc
- name: Build
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_ARCH: "x86_64"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
BUILD_GENERIC: true
CMAKE_POLICY_VERSION_MINIMUM: '3.5'
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
run: |
edgedb-pkg/integration/macos/build.sh
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-macos-x86_64
path: artifacts/macos-x86_64
build-macos-aarch64:
runs-on: ['macos-14']
needs: prep
if: needs.prep.outputs.if_macos_aarch64 == 'true'
steps:
- name: Update Homebrew before installing Rust toolchain
run: |
# Homebrew renamed `rustup-init` to `rustup`:
# https://github.com/Homebrew/homebrew-core/pull/177840
# But the GitHub Action runner is not updated with this change yet.
# This caused the later `brew update` in step `Build` to relink Rust
# toolchain executables, overwriting the custom toolchain installed by
# `dsherret/rust-toolchain-file`. So let's just run `brew update` early.
brew update
- uses: actions/checkout@v4
if: true
with:
sparse-checkout: |
rust-toolchain.toml
sparse-checkout-cone-mode: false
- name: Install Rust toolchain
uses: dsherret/rust-toolchain-file@v1
if: true
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Set up Python
uses: actions/setup-python@v5
if: true
with:
python-version: "3.12"
- name: Set up NodeJS
uses: actions/setup-node@v4
if: true
with:
node-version: '20'
- name: Install dependencies
if: true
run: |
env HOMEBREW_NO_AUTO_UPDATE=1 brew install libmagic
- name: Install an alias
# This is probably not strictly needed, but sentencepiece build script reports
# errors without it.
if: true
run: |
printf '#!/bin/sh\n\nexec sysctl -n hw.logicalcpu' > /usr/local/bin/nproc
chmod +x /usr/local/bin/nproc
- name: Build
env:
PACKAGE: "edgedbpkg.edgedb:Gel"
SRC_REF: "${{ github.sha }}"
PKG_REVISION: "<current-date>"
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_ARCH: "aarch64"
EXTRA_OPTIMIZATIONS: "true"
METAPKG_GIT_CACHE: disabled
BUILD_GENERIC: true
CMAKE_POLICY_VERSION_MINIMUM: '3.5'
GEL_PKG_REF: ${{ inputs.gelpkg_ref }}
METAPKG_REF: ${{ inputs.metapkg_ref }}
run: |
edgedb-pkg/integration/macos/build.sh
- uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: builds-macos-aarch64
path: artifacts/macos-aarch64
test-debian-buster-x86_64:
needs: [build-debian-buster-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-buster-x86_64
path: artifacts/debian-buster
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-buster:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-buster-aarch64:
needs: [build-debian-buster-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-buster-aarch64
path: artifacts/debian-buster
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-buster:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-bullseye-x86_64:
needs: [build-debian-bullseye-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bullseye-x86_64
path: artifacts/debian-bullseye
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-bullseye:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-bullseye-aarch64:
needs: [build-debian-bullseye-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bullseye-aarch64
path: artifacts/debian-bullseye
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-bullseye:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-bookworm-x86_64:
needs: [build-debian-bookworm-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bookworm-x86_64
path: artifacts/debian-bookworm
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-bookworm:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-debian-bookworm-aarch64:
needs: [build-debian-bookworm-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bookworm-aarch64
path: artifacts/debian-bookworm
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-debian-bookworm:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-focal-x86_64:
needs: [build-ubuntu-focal-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-focal-x86_64
path: artifacts/ubuntu-focal
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-focal:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-focal-aarch64:
needs: [build-ubuntu-focal-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-focal-aarch64
path: artifacts/ubuntu-focal
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-focal:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-jammy-x86_64:
needs: [build-ubuntu-jammy-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-jammy-x86_64
path: artifacts/ubuntu-jammy
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-jammy:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-jammy-aarch64:
needs: [build-ubuntu-jammy-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-jammy-aarch64
path: artifacts/ubuntu-jammy
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-jammy:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-noble-x86_64:
needs: [build-ubuntu-noble-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-noble-x86_64
path: artifacts/ubuntu-noble
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-noble:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-ubuntu-noble-aarch64:
needs: [build-ubuntu-noble-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-noble-aarch64
path: artifacts/ubuntu-noble
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-ubuntu-noble:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-centos-8-x86_64:
needs: [build-centos-8-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-centos-8-x86_64
path: artifacts/centos-8
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-centos-8:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-centos-8-aarch64:
needs: [build-centos-8-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-centos-8-aarch64
path: artifacts/centos-8
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-centos-8:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-rockylinux-9-x86_64:
needs: [build-rockylinux-9-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-rockylinux-9-x86_64
path: artifacts/rockylinux-9
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-rockylinux-9:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-rockylinux-9-aarch64:
needs: [build-rockylinux-9-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-rockylinux-9-aarch64
path: artifacts/rockylinux-9
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-rockylinux-9:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-linux-x86_64:
needs: [build-linux-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-linux-aarch64:
needs: [build-linux-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-linux-aarch64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_LIBC: ""
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-linuxmusl-x86_64:
needs: [build-linuxmusl-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-linuxmusl-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_LIBC: "musl"
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-linuxmusl-aarch64:
needs: [build-linuxmusl-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
- name: Test
uses: docker://ghcr.io/geldata/gelpkg-test-linuxmusl-aarch64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_LIBC: "musl"
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
# edb test with -j higher than 1 seems to result in workflow
# jobs getting killed arbitrarily by Github.
PKG_TEST_JOBS: 0
test-macos-x86_64:
needs: [build-macos-x86_64]
runs-on: ['macos-13']
steps:
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-macos-x86_64
path: artifacts/macos-x86_64
- name: Test
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "x86_64"
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " test_dump*.py test_backend_*.py test_database.py test_server_*.py test_edgeql_ddl.py test_session.py
"
run: |
# Bump shmmax and shmall to avoid test failures.
sudo sysctl -w kern.sysv.shmmax=12582912
sudo sysctl -w kern.sysv.shmall=12582912
edgedb-pkg/integration/macos/test.sh
test-macos-aarch64:
needs: [build-macos-aarch64]
runs-on: ['macos-14']
steps:
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-macos-aarch64
path: artifacts/macos-aarch64
- name: Test
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "aarch64"
PKG_TEST_SELECT: ""
PKG_TEST_EXCLUDE: ""
PKG_TEST_FILES: " "
run: |
edgedb-pkg/integration/macos/test.sh
publish-debian-buster-x86_64:
needs: [test-debian-buster-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-buster-x86_64
path: artifacts/debian-buster
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-debian-buster-x86_64:
needs: [publish-debian-buster-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-buster-x86_64
path: artifacts/debian-buster
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: debian-buster
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-debian-buster:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-debian-buster-aarch64:
needs: [test-debian-buster-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-buster-aarch64
path: artifacts/debian-buster
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-debian-buster-aarch64:
needs: [publish-debian-buster-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-buster-aarch64
path: artifacts/debian-buster
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: debian-buster
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-debian-buster:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "buster"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-debian-bullseye-x86_64:
needs: [test-debian-bullseye-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bullseye-x86_64
path: artifacts/debian-bullseye
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-debian-bullseye-x86_64:
needs: [publish-debian-bullseye-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bullseye-x86_64
path: artifacts/debian-bullseye
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: debian-bullseye
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-debian-bullseye:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-debian-bullseye-aarch64:
needs: [test-debian-bullseye-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bullseye-aarch64
path: artifacts/debian-bullseye
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-debian-bullseye-aarch64:
needs: [publish-debian-bullseye-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bullseye-aarch64
path: artifacts/debian-bullseye
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: debian-bullseye
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-debian-bullseye:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bullseye"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-debian-bookworm-x86_64:
needs: [test-debian-bookworm-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bookworm-x86_64
path: artifacts/debian-bookworm
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-debian-bookworm-x86_64:
needs: [publish-debian-bookworm-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bookworm-x86_64
path: artifacts/debian-bookworm
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: debian-bookworm
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-debian-bookworm:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-debian-bookworm-aarch64:
needs: [test-debian-bookworm-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bookworm-aarch64
path: artifacts/debian-bookworm
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-debian-bookworm-aarch64:
needs: [publish-debian-bookworm-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-debian-bookworm-aarch64
path: artifacts/debian-bookworm
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: debian-bookworm
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-debian-bookworm:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "debian"
PKG_PLATFORM_VERSION: "bookworm"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-ubuntu-focal-x86_64:
needs: [test-ubuntu-focal-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-focal-x86_64
path: artifacts/ubuntu-focal
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-ubuntu-focal-x86_64:
needs: [publish-ubuntu-focal-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-focal-x86_64
path: artifacts/ubuntu-focal
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: ubuntu-focal
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-ubuntu-focal:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-ubuntu-focal-aarch64:
needs: [test-ubuntu-focal-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-focal-aarch64
path: artifacts/ubuntu-focal
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-ubuntu-focal-aarch64:
needs: [publish-ubuntu-focal-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-focal-aarch64
path: artifacts/ubuntu-focal
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: ubuntu-focal
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-ubuntu-focal:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "focal"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-ubuntu-jammy-x86_64:
needs: [test-ubuntu-jammy-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-jammy-x86_64
path: artifacts/ubuntu-jammy
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-ubuntu-jammy-x86_64:
needs: [publish-ubuntu-jammy-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-jammy-x86_64
path: artifacts/ubuntu-jammy
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: ubuntu-jammy
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-ubuntu-jammy:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-ubuntu-jammy-aarch64:
needs: [test-ubuntu-jammy-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-jammy-aarch64
path: artifacts/ubuntu-jammy
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-ubuntu-jammy-aarch64:
needs: [publish-ubuntu-jammy-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-jammy-aarch64
path: artifacts/ubuntu-jammy
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: ubuntu-jammy
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-ubuntu-jammy:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "jammy"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-ubuntu-noble-x86_64:
needs: [test-ubuntu-noble-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-noble-x86_64
path: artifacts/ubuntu-noble
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-ubuntu-noble-x86_64:
needs: [publish-ubuntu-noble-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-noble-x86_64
path: artifacts/ubuntu-noble
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: ubuntu-noble
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-ubuntu-noble:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-ubuntu-noble-aarch64:
needs: [test-ubuntu-noble-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-noble-aarch64
path: artifacts/ubuntu-noble
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-ubuntu-noble-aarch64:
needs: [publish-ubuntu-noble-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-ubuntu-noble-aarch64
path: artifacts/ubuntu-noble
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: ubuntu-noble
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-ubuntu-noble:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "ubuntu"
PKG_PLATFORM_VERSION: "noble"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-centos-8-x86_64:
needs: [test-centos-8-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-centos-8-x86_64
path: artifacts/centos-8
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-centos-8-x86_64:
needs: [publish-centos-8-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-centos-8-x86_64
path: artifacts/centos-8
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: centos-8
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-centos-8:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-centos-8-aarch64:
needs: [test-centos-8-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-centos-8-aarch64
path: artifacts/centos-8
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-centos-8-aarch64:
needs: [publish-centos-8-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-centos-8-aarch64
path: artifacts/centos-8
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: centos-8
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-centos-8:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "centos"
PKG_PLATFORM_VERSION: "8"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-rockylinux-9-x86_64:
needs: [test-rockylinux-9-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-rockylinux-9-x86_64
path: artifacts/rockylinux-9
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-rockylinux-9-x86_64:
needs: [publish-rockylinux-9-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-rockylinux-9-x86_64
path: artifacts/rockylinux-9
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: rockylinux-9
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-rockylinux-9:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-rockylinux-9-aarch64:
needs: [test-rockylinux-9-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-rockylinux-9-aarch64
path: artifacts/rockylinux-9
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-rockylinux-9-aarch64:
needs: [publish-rockylinux-9-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-rockylinux-9-aarch64
path: artifacts/rockylinux-9
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: rockylinux-9
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-rockylinux-9:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "rockylinux"
PKG_PLATFORM_VERSION: "9"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-linux-x86_64:
needs: [test-linux-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-linux-x86_64:
needs: [publish-linux-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-x86_64
path: artifacts/linux-x86_64
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: linux-x86_64
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-linux-x86_64:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-linux-aarch64:
needs: [test-linux-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_LIBC: ""
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-linux-aarch64:
needs: [publish-linux-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linux-aarch64
path: artifacts/linux-aarch64
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: linux-aarch64
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-linux-aarch64:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-linuxmusl-x86_64:
needs: [test-linuxmusl-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_PLATFORM_LIBC: "musl"
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-linuxmusl-x86_64:
needs: [publish-linuxmusl-x86_64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'x64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-x86_64
path: artifacts/linuxmusl-x86_64
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: linuxmusl-x86_64
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-linuxmusl-x86_64:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "x86_64"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-linuxmusl-aarch64:
needs: [test-linuxmusl-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_PLATFORM_LIBC: "musl"
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
check-published-linuxmusl-aarch64:
needs: [publish-linuxmusl-aarch64]
runs-on: ['package-builder', 'self-hosted', 'linux', 'arm64']
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-linuxmusl-aarch64
path: artifacts/linuxmusl-aarch64
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: linuxmusl-aarch64
- name: Test Published
uses: docker://ghcr.io/geldata/gelpkg-testpublished-linuxmusl-aarch64:latest
env:
PKG_NAME: "${{ steps.describe.outputs.name }}"
PKG_SUBDIST: "nightly"
PACKAGE_SERVER: sftp://uploader@package-upload.edgedb.net:22/
PKG_PLATFORM: "linux"
PKG_PLATFORM_VERSION: "aarch64"
PKG_INSTALL_REF: "${{ steps.describe.outputs.install-ref }}"
PKG_VERSION_SLOT: "${{ steps.describe.outputs.version-slot }}"
outputs:
version-slot: ${{ steps.describe.outputs.version-slot }}
version-core: ${{ steps.describe.outputs.version-core }}
catalog-version: ${{ steps.describe.outputs.catalog-version }}
publish-macos-x86_64:
needs: [test-macos-x86_64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-macos-x86_64
path: artifacts/macos-x86_64
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: macos-x86_64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "x86_64"
PACKAGE_UPLOAD_SSH_KEY: "${{ secrets.PACKAGE_UPLOAD_SSH_KEY }}"
publish-macos-aarch64:
needs: [test-macos-aarch64]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: builds-macos-aarch64
path: artifacts/macos-aarch64
- uses: actions/checkout@v4
with:
repository: edgedb/edgedb-pkg
ref: master
path: edgedb-pkg
- name: Describe
id: describe
uses: edgedb/edgedb-pkg/integration/actions/describe-artifact@master
with:
target: macos-aarch64
- name: Publish
uses: docker://ghcr.io/geldata/gelpkg-upload-linux-x86_64:latest
env:
PKG_SUBDIST: "nightly"
PKG_PLATFORM: "macos"
PKG_PLATFORM_VERSION: "aarch64"
PACKAGE_UPLOAD_SSH_KEY: "$
gitextract_9xzfwvrg/
├── .editorconfig
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── Makefile
│ ├── aws-aurora/
│ │ ├── .gitignore
│ │ └── main.tf
│ ├── aws-rds/
│ │ ├── .gitignore
│ │ ├── .terraform.lock.hcl
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ ├── do-database/
│ │ ├── .gitignore
│ │ ├── .terraform.lock.hcl
│ │ ├── main.tf
│ │ └── outputs.tf
│ ├── gcp-cloud-sql/
│ │ ├── .gitignore
│ │ ├── .terraform.lock.hcl
│ │ └── main.tf
│ ├── heroku-postgres/
│ │ ├── .gitignore
│ │ └── main.tf
│ ├── scripts/
│ │ ├── docs/
│ │ │ └── preview-deploy.js
│ │ └── patches/
│ │ ├── compute-ipu-versions.py
│ │ ├── compute-versions.py
│ │ ├── create-databases.py
│ │ └── test-downgrade.py
│ ├── workflows/
│ │ ├── .gitattributes
│ │ ├── build.dryrun.yml
│ │ ├── build.ls-nightly.yml
│ │ ├── build.nightly.yml
│ │ ├── build.release.yml
│ │ ├── build.testing.yml
│ │ ├── docs-preview-deploy.yml
│ │ ├── docs.yml
│ │ ├── pull-request-meta.yml
│ │ ├── tests.ha.yml
│ │ ├── tests.inplace.yml
│ │ ├── tests.inplace7x.yml
│ │ ├── tests.managed-pg.yml
│ │ ├── tests.patches.yml
│ │ ├── tests.pg-versions.yml
│ │ ├── tests.pool.yml
│ │ ├── tests.reflection.yml
│ │ └── tests.yml
│ └── workflows.src/
│ ├── build.dryrun.tpl.yml
│ ├── build.inc.yml
│ ├── build.ls-nightly.tpl.yml
│ ├── build.ls.targets.yml
│ ├── build.nightly.tpl.yml
│ ├── build.release.tpl.yml
│ ├── build.targets.yml
│ ├── build.testing.tpl.yml
│ ├── render.py
│ ├── tests.ha.targets.yml
│ ├── tests.ha.tpl.yml
│ ├── tests.inc.yml
│ ├── tests.inplace.targets.yml
│ ├── tests.inplace.tpl.yml
│ ├── tests.inplace7x.targets.yml
│ ├── tests.inplace7x.tpl.yml
│ ├── tests.managed-pg.targets.yml
│ ├── tests.managed-pg.tpl.yml
│ ├── tests.patches.targets.yml
│ ├── tests.patches.tpl.yml
│ ├── tests.pg-versions.targets.yml
│ ├── tests.pg-versions.tpl.yml
│ ├── tests.pool.targets.yml
│ ├── tests.pool.tpl.yml
│ ├── tests.reflection.targets.yml
│ ├── tests.reflection.tpl.yml
│ ├── tests.targets.yml
│ └── tests.tpl.yml
├── .gitignore
├── .gitmodules
├── .mailmap
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.rst
├── Cargo.toml
├── LICENSE
├── MANIFEST.in
├── Makefile
├── NOTICE
├── README.md
├── build_backend.py
├── dev-notes/
│ ├── concurrent-indexes.py
│ ├── inplace-upgrades.md
│ ├── newtype-checklist.md
│ └── release-process.md
├── docs/
│ ├── .gitignore
│ ├── Makefile
│ ├── cloud/
│ │ ├── cli.rst
│ │ ├── deploy/
│ │ │ ├── fly.rst
│ │ │ ├── index.rst
│ │ │ ├── netlify.rst
│ │ │ ├── railway.rst
│ │ │ ├── render.rst
│ │ │ └── vercel.rst
│ │ ├── http_gql.rst
│ │ ├── index.rst
│ │ ├── migrate_from.rst
│ │ └── web.rst
│ ├── conf.py
│ ├── index.rst
│ ├── intro/
│ │ ├── branches.rst
│ │ ├── cli.rst
│ │ ├── clients.rst
│ │ ├── edgeql.rst
│ │ ├── guides/
│ │ │ ├── ai/
│ │ │ │ ├── edgeql.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── python.rst
│ │ │ ├── drizzle/
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ └── index.rst
│ │ ├── index.rst
│ │ ├── install_table.rst
│ │ ├── installation.rst
│ │ ├── instances.rst
│ │ ├── localdev.rst
│ │ ├── migrations.rst
│ │ ├── projects.rst
│ │ ├── quickstart/
│ │ │ ├── ai/
│ │ │ │ ├── fastapi.rst
│ │ │ │ └── index.rst
│ │ │ ├── connecting/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ ├── index.rst
│ │ │ ├── inheritance/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ ├── modeling/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ ├── overview/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ ├── setup/
│ │ │ │ ├── fastapi.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── nextjs.rst
│ │ │ └── working/
│ │ │ ├── fastapi.rst
│ │ │ ├── index.rst
│ │ │ └── nextjs.rst
│ │ ├── schema.rst
│ │ └── tutorials/
│ │ ├── ai_fastapi_searchbot.rst
│ │ ├── gel_drizzle_booknotes.rst
│ │ └── index.rst
│ ├── redirects
│ ├── redirects.js
│ ├── reference/
│ │ ├── ai/
│ │ │ ├── extai.rst
│ │ │ ├── extvectorstore.rst
│ │ │ ├── http.rst
│ │ │ ├── index.rst
│ │ │ ├── javascript.rst
│ │ │ ├── python.rst
│ │ │ └── vectorstore_python.rst
│ │ ├── auth/
│ │ │ ├── built_in_ui.rst
│ │ │ ├── email_password.rst
│ │ │ ├── http.rst
│ │ │ ├── index.rst
│ │ │ ├── magic_link.rst
│ │ │ ├── oauth.rst
│ │ │ ├── webauthn.rst
│ │ │ └── webhooks.rst
│ │ ├── datamodel/
│ │ │ ├── access_policies.rst
│ │ │ ├── aliases.rst
│ │ │ ├── annotations.rst
│ │ │ ├── branches.rst
│ │ │ ├── comparison.rst
│ │ │ ├── computeds.rst
│ │ │ ├── constraints.rst
│ │ │ ├── extensions.rst
│ │ │ ├── functions.rst
│ │ │ ├── future.rst
│ │ │ ├── globals.rst
│ │ │ ├── index.rst
│ │ │ ├── indexes.rst
│ │ │ ├── inheritance.rst
│ │ │ ├── introspection/
│ │ │ │ ├── casts.rst
│ │ │ │ ├── colltypes.rst
│ │ │ │ ├── constraints.rst
│ │ │ │ ├── functions.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── indexes.rst
│ │ │ │ ├── mutation_rewrites.rst
│ │ │ │ ├── objects.rst
│ │ │ │ ├── operators.rst
│ │ │ │ ├── scalars.rst
│ │ │ │ └── triggers.rst
│ │ │ ├── linkprops.rst
│ │ │ ├── links.rst
│ │ │ ├── migrations.rst
│ │ │ ├── modules.rst
│ │ │ ├── mutation_rewrites.rst
│ │ │ ├── objects.rst
│ │ │ ├── permissions.rst
│ │ │ ├── primitives.rst
│ │ │ ├── properties.rst
│ │ │ └── triggers.rst
│ │ ├── edgeql/
│ │ │ ├── analyze.rst
│ │ │ ├── delete.rst
│ │ │ ├── for.rst
│ │ │ ├── group.rst
│ │ │ ├── index.rst
│ │ │ ├── insert.rst
│ │ │ ├── literals.rst
│ │ │ ├── parameters.rst
│ │ │ ├── path_resolution.rst
│ │ │ ├── paths.rst
│ │ │ ├── select.rst
│ │ │ ├── sets.rst
│ │ │ ├── transactions.rst
│ │ │ ├── types.rst
│ │ │ ├── update.rst
│ │ │ └── with.rst
│ │ ├── index.rst
│ │ ├── reference/
│ │ │ ├── edgeql/
│ │ │ │ ├── analyze.rst
│ │ │ │ ├── cardinality.rst
│ │ │ │ ├── casts.csv
│ │ │ │ ├── casts.rst
│ │ │ │ ├── delete.rst
│ │ │ │ ├── describe.rst
│ │ │ │ ├── eval.rst
│ │ │ │ ├── for.rst
│ │ │ │ ├── functions.rst
│ │ │ │ ├── group.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── insert.rst
│ │ │ │ ├── lexical.rst
│ │ │ │ ├── paths.rst
│ │ │ │ ├── select.rst
│ │ │ │ ├── sess_reset_alias.rst
│ │ │ │ ├── sess_set_alias.rst
│ │ │ │ ├── shapes.rst
│ │ │ │ ├── tx_commit.rst
│ │ │ │ ├── tx_rollback.rst
│ │ │ │ ├── tx_sp_declare.rst
│ │ │ │ ├── tx_sp_release.rst
│ │ │ │ ├── tx_sp_rollback.rst
│ │ │ │ ├── tx_start.rst
│ │ │ │ ├── update.rst
│ │ │ │ ├── volatility.rst
│ │ │ │ └── with.rst
│ │ │ └── index.rst
│ │ ├── running/
│ │ │ ├── admin/
│ │ │ │ ├── configure.rst
│ │ │ │ ├── index.rst
│ │ │ │ ├── roles.rst
│ │ │ │ ├── statistics_update.rst
│ │ │ │ └── vacuum.rst
│ │ │ ├── backend_ha.rst
│ │ │ ├── configuration.rst
│ │ │ ├── deployment/
│ │ │ │ ├── aws_aurora_ecs.rst
│ │ │ │ ├── azure_flexibleserver.rst
│ │ │ │ ├── bare_metal.rst
│ │ │ │ ├── digitalocean.rst
│ │ │ │ ├── docker.rst
│ │ │ │ ├── fly_io.rst
│ │ │ │ ├── gcp.rst
│ │ │ │ ├── index.rst
│ │ │ │ └── note_cloud_reset_password.rst
│ │ │ ├── http.rst
│ │ │ ├── index.rst
│ │ │ └── local.rst
│ │ ├── stdlib/
│ │ │ ├── abstract.rst
│ │ │ ├── array.rst
│ │ │ ├── bool.rst
│ │ │ ├── bytes.rst
│ │ │ ├── cfg.rst
│ │ │ ├── constraint_table.rst
│ │ │ ├── constraints.rst
│ │ │ ├── datetime.rst
│ │ │ ├── deprecated.rst
│ │ │ ├── enum.rst
│ │ │ ├── fts.rst
│ │ │ ├── generic.rst
│ │ │ ├── index.rst
│ │ │ ├── json.rst
│ │ │ ├── math.rst
│ │ │ ├── math_funcops_table.rst
│ │ │ ├── net.rst
│ │ │ ├── numbers.rst
│ │ │ ├── objects.rst
│ │ │ ├── pg_trgm.rst
│ │ │ ├── pg_unaccent.rst
│ │ │ ├── pgcrypto.rst
│ │ │ ├── pgvector.rst
│ │ │ ├── postgis.rst
│ │ │ ├── range.rst
│ │ │ ├── sequence.rst
│ │ │ ├── set.rst
│ │ │ ├── string.rst
│ │ │ ├── sys.rst
│ │ │ ├── tuple.rst
│ │ │ ├── type.rst
│ │ │ └── uuid.rst
│ │ └── using/
│ │ ├── cli/
│ │ │ ├── gel.rst
│ │ │ ├── gel_analyze.rst
│ │ │ ├── gel_branch/
│ │ │ │ ├── gel_branch_create.rst
│ │ │ │ ├── gel_branch_drop.rst
│ │ │ │ ├── gel_branch_list.rst
│ │ │ │ ├── gel_branch_merge.rst
│ │ │ │ ├── gel_branch_rebase.rst
│ │ │ │ ├── gel_branch_rename.rst
│ │ │ │ ├── gel_branch_switch.rst
│ │ │ │ ├── gel_branch_wipe.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_cli_upgrade.rst
│ │ │ ├── gel_cloud/
│ │ │ │ ├── gel_cloud_login.rst
│ │ │ │ ├── gel_cloud_logout.rst
│ │ │ │ ├── gel_cloud_secretkey/
│ │ │ │ │ ├── edgedb_cloud_secretkey_create.rst
│ │ │ │ │ ├── edgedb_cloud_secretkey_list.rst
│ │ │ │ │ ├── edgedb_cloud_secretkey_revoke.rst
│ │ │ │ │ └── index.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_configure.rst
│ │ │ ├── gel_connopts.rst
│ │ │ ├── gel_database/
│ │ │ │ ├── gel_database_create.rst
│ │ │ │ ├── gel_database_drop.rst
│ │ │ │ ├── gel_database_wipe.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_describe/
│ │ │ │ ├── gel_describe_object.rst
│ │ │ │ ├── gel_describe_schema.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_dump.rst
│ │ │ ├── gel_extension/
│ │ │ │ ├── index.rst
│ │ │ │ ├── install.rst
│ │ │ │ ├── list-available.rst
│ │ │ │ ├── list.rst
│ │ │ │ └── uninstall.rst
│ │ │ ├── gel_info.rst
│ │ │ ├── gel_init.rst
│ │ │ ├── gel_instance/
│ │ │ │ ├── gel_instance_create.rst
│ │ │ │ ├── gel_instance_credentials.rst
│ │ │ │ ├── gel_instance_destroy.rst
│ │ │ │ ├── gel_instance_link.rst
│ │ │ │ ├── gel_instance_list.rst
│ │ │ │ ├── gel_instance_logs.rst
│ │ │ │ ├── gel_instance_reset_password.rst
│ │ │ │ ├── gel_instance_restart.rst
│ │ │ │ ├── gel_instance_revert.rst
│ │ │ │ ├── gel_instance_start.rst
│ │ │ │ ├── gel_instance_status.rst
│ │ │ │ ├── gel_instance_stop.rst
│ │ │ │ ├── gel_instance_unlink.rst
│ │ │ │ ├── gel_instance_upgrade.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_list.rst
│ │ │ ├── gel_migrate.rst
│ │ │ ├── gel_migration/
│ │ │ │ ├── gel_migration_apply.rst
│ │ │ │ ├── gel_migration_create.rst
│ │ │ │ ├── gel_migration_edit.rst
│ │ │ │ ├── gel_migration_extract.rst
│ │ │ │ ├── gel_migration_log.rst
│ │ │ │ ├── gel_migration_status.rst
│ │ │ │ ├── gel_migration_upgrade_check.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_project/
│ │ │ │ ├── gel_project_info.rst
│ │ │ │ ├── gel_project_init.rst
│ │ │ │ ├── gel_project_unlink.rst
│ │ │ │ ├── gel_project_upgrade.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_query.rst
│ │ │ ├── gel_restore.rst
│ │ │ ├── gel_server/
│ │ │ │ ├── gel_server_info.rst
│ │ │ │ ├── gel_server_install.rst
│ │ │ │ ├── gel_server_list_versions.rst
│ │ │ │ ├── gel_server_uninstall.rst
│ │ │ │ └── index.rst
│ │ │ ├── gel_ui.rst
│ │ │ ├── gel_watch.rst
│ │ │ ├── index.rst
│ │ │ └── network.rst
│ │ ├── clients.rst
│ │ ├── connection.rst
│ │ ├── datetime.rst
│ │ ├── graphql/
│ │ │ ├── cheatsheet.rst
│ │ │ ├── graphql.rst
│ │ │ ├── index.rst
│ │ │ ├── introspection.rst
│ │ │ └── mutations.rst
│ │ ├── http.rst
│ │ ├── index.rst
│ │ ├── js/
│ │ │ ├── client.rst
│ │ │ ├── datatypes.rst
│ │ │ ├── generation.rst
│ │ │ ├── index.rst
│ │ │ ├── interfaces.rst
│ │ │ ├── queries.rst
│ │ │ └── querybuilder.rst
│ │ ├── projects.rst
│ │ ├── python/
│ │ │ ├── api/
│ │ │ │ ├── advanced.rst
│ │ │ │ ├── codegen.rst
│ │ │ │ └── types.rst
│ │ │ ├── client.rst
│ │ │ └── index.rst
│ │ └── sql_adapter.rst
│ └── resources/
│ ├── changelog/
│ │ ├── 1_0_a2.rst
│ │ ├── 1_0_a3.rst
│ │ ├── 1_0_a4.rst
│ │ ├── 1_0_a5.rst
│ │ ├── 1_0_a6.rst
│ │ ├── 1_0_a7.rst
│ │ ├── 1_0_b1.rst
│ │ ├── 1_0_b2.rst
│ │ ├── 1_0_b3.rst
│ │ ├── 1_0_rc1.rst
│ │ ├── 1_0_rc2.rst
│ │ ├── 1_0_rc3.rst
│ │ ├── 1_0_rc4.rst
│ │ ├── 1_0_rc5.rst
│ │ ├── 1_x.rst
│ │ ├── 2_x.rst
│ │ ├── 3_x.rst
│ │ ├── 4_x.rst
│ │ ├── 5_x.rst
│ │ ├── 6_x.rst
│ │ ├── 7_x.rst
│ │ ├── deprecation.rst
│ │ └── index.rst
│ ├── cheatsheets/
│ │ ├── admin.rst
│ │ ├── aliases.rst
│ │ ├── annotations.rst
│ │ ├── boolean.rst
│ │ ├── cli.rst
│ │ ├── delete.rst
│ │ ├── functions.rst
│ │ ├── index.rst
│ │ ├── insert.rst
│ │ ├── objects.rst
│ │ ├── repl.rst
│ │ ├── select.rst
│ │ └── update.rst
│ ├── guides/
│ │ ├── contributing/
│ │ │ ├── code.rst
│ │ │ ├── documentation.rst
│ │ │ └── index.rst
│ │ ├── datamigrations/
│ │ │ ├── index.rst
│ │ │ └── postgres.rst
│ │ ├── index.rst
│ │ ├── migrations/
│ │ │ ├── guide.rst
│ │ │ ├── index.rst
│ │ │ └── tips.rst
│ │ └── tutorials/
│ │ ├── chatgpt_bot.rst
│ │ ├── cloudflare_workers.rst
│ │ ├── graphql_apis_with_strawberry.rst
│ │ ├── index.rst
│ │ ├── jupyter_notebook.rst
│ │ ├── nextjs_app_router.rst
│ │ ├── nextjs_pages_router.rst
│ │ ├── rest_apis_with_fastapi.rst
│ │ ├── rest_apis_with_flask.rst
│ │ └── trpc.rst
│ ├── index.rst
│ ├── protocol/
│ │ ├── dataformats.rst
│ │ ├── dump_format.rst
│ │ ├── errors.rst
│ │ ├── index.rst
│ │ ├── messages.rst
│ │ └── typedesc.rst
│ └── upgrading.rst
├── edb/
│ ├── .gitignore
│ ├── README.md
│ ├── __init__.py
│ ├── _edgeql_parser.pyi
│ ├── api/
│ │ ├── errors.txt
│ │ └── types.txt
│ ├── buildmeta.py
│ ├── cli/
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ └── __main__.py
│ ├── common/
│ │ ├── __init__.py
│ │ ├── _typing_inspect.py
│ │ ├── adapter.py
│ │ ├── assert_data_shape.py
│ │ ├── ast/
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── codegen.py
│ │ │ ├── transformer.py
│ │ │ └── visitor.py
│ │ ├── asyncutil.py
│ │ ├── asyncwatcher.py
│ │ ├── binwrapper.py
│ │ ├── checked.py
│ │ ├── colorsys.py
│ │ ├── compiler.py
│ │ ├── debug.py
│ │ ├── devmode.py
│ │ ├── english.py
│ │ ├── enum.py
│ │ ├── exceptions.py
│ │ ├── levenshtein.py
│ │ ├── log.py
│ │ ├── lru.py
│ │ ├── markup/
│ │ │ ├── __init__.py
│ │ │ ├── elements/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── base.py
│ │ │ │ ├── code.py
│ │ │ │ ├── doc.py
│ │ │ │ └── lang.py
│ │ │ ├── format.py
│ │ │ ├── renderers/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── styles.py
│ │ │ │ └── terminal.py
│ │ │ └── serializer/
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── code.py
│ │ │ └── logging.py
│ │ ├── ordered.py
│ │ ├── ordered.pyi
│ │ ├── parametric.py
│ │ ├── parsing.py
│ │ ├── prometheus.py
│ │ ├── retryloop.py
│ │ ├── secretkey.py
│ │ ├── signalctl.py
│ │ ├── span.py
│ │ ├── struct.py
│ │ ├── supervisor.py
│ │ ├── term.py
│ │ ├── token_bucket.py
│ │ ├── topological.py
│ │ ├── traceback.py
│ │ ├── turbo_uuid.pyi
│ │ ├── typeutils.py
│ │ ├── typing_inspect.py
│ │ ├── uuidgen.py
│ │ ├── value_dispatch.py
│ │ ├── verutils.py
│ │ ├── view_patterns.py
│ │ ├── windowedsum.py
│ │ └── xdedent.py
│ ├── edgeql/
│ │ ├── __init__.py
│ │ ├── ast.py
│ │ ├── codegen.py
│ │ ├── compiler/
│ │ │ ├── __init__.py
│ │ │ ├── astutils.py
│ │ │ ├── casts.py
│ │ │ ├── clauses.py
│ │ │ ├── config.py
│ │ │ ├── config_desc.py
│ │ │ ├── conflicts.py
│ │ │ ├── context.py
│ │ │ ├── dispatch.py
│ │ │ ├── eta_expand.py
│ │ │ ├── expr.py
│ │ │ ├── func.py
│ │ │ ├── group.py
│ │ │ ├── inference/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── cardinality.py
│ │ │ │ ├── context.py
│ │ │ │ ├── multiplicity.py
│ │ │ │ ├── utils.py
│ │ │ │ └── volatility.py
│ │ │ ├── normalization.py
│ │ │ ├── options.py
│ │ │ ├── pathctx.py
│ │ │ ├── policies.py
│ │ │ ├── polyres.py
│ │ │ ├── schemactx.py
│ │ │ ├── setgen.py
│ │ │ ├── stmt.py
│ │ │ ├── stmtctx.py
│ │ │ ├── triggers.py
│ │ │ ├── tuple_args.py
│ │ │ ├── typegen.py
│ │ │ └── viewgen.py
│ │ ├── declarative.py
│ │ ├── desugar_group.py
│ │ ├── parser/
│ │ │ ├── __init__.py
│ │ │ └── grammar/
│ │ │ ├── .gitignore
│ │ │ ├── __init__.py
│ │ │ ├── commondl.py
│ │ │ ├── config.py
│ │ │ ├── ddl.py
│ │ │ ├── expressions.py
│ │ │ ├── keywords.py
│ │ │ ├── precedence.py
│ │ │ ├── sdl.py
│ │ │ ├── session.py
│ │ │ ├── start.py
│ │ │ ├── statements.py
│ │ │ └── tokens.py
│ │ ├── qltypes.py
│ │ ├── quote.py
│ │ ├── tokenizer.py
│ │ ├── tracer.py
│ │ └── utils.py
│ ├── edgeql-parser/
│ │ ├── Cargo.toml
│ │ ├── edgeql-parser-derive/
│ │ │ ├── Cargo.toml
│ │ │ └── src/
│ │ │ └── lib.rs
│ │ ├── edgeql-parser-python/
│ │ │ ├── Cargo.toml
│ │ │ ├── src/
│ │ │ │ ├── errors.rs
│ │ │ │ ├── hash.rs
│ │ │ │ ├── keywords.rs
│ │ │ │ ├── lib.rs
│ │ │ │ ├── normalize.rs
│ │ │ │ ├── parser.rs
│ │ │ │ ├── position.rs
│ │ │ │ ├── pynormalize.rs
│ │ │ │ ├── tokenizer.rs
│ │ │ │ └── unpack.rs
│ │ │ └── tests/
│ │ │ └── normalize.rs
│ │ ├── src/
│ │ │ ├── ast.rs
│ │ │ ├── expr.rs
│ │ │ ├── hash.rs
│ │ │ ├── helpers/
│ │ │ │ ├── bytes.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── strings.rs
│ │ │ ├── keywords.rs
│ │ │ ├── lib.rs
│ │ │ ├── parser/
│ │ │ │ ├── cst.rs
│ │ │ │ ├── custom_errors.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── spec.rs
│ │ │ ├── position.rs
│ │ │ ├── preparser.rs
│ │ │ ├── schema_file.rs
│ │ │ ├── tokenizer.rs
│ │ │ └── validation.rs
│ │ └── tests/
│ │ ├── expr.rs
│ │ ├── preparser.rs
│ │ └── tokenizer.rs
│ ├── errors/
│ │ ├── __init__.py
│ │ └── base.py
│ ├── graphql/
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ ├── _patch_core.py
│ │ ├── codegen.py
│ │ ├── compiler.py
│ │ ├── errors.py
│ │ ├── explore.py
│ │ ├── extension.pyx
│ │ ├── tokenizer.py
│ │ ├── translator.py
│ │ └── types.py
│ ├── graphql-rewrite/
│ │ ├── Cargo.toml
│ │ ├── _graphql_rewrite.pyi
│ │ ├── src/
│ │ │ ├── lib.rs
│ │ │ ├── py_entry.rs
│ │ │ ├── py_exception.rs
│ │ │ ├── py_token.rs
│ │ │ ├── rewrite.rs
│ │ │ └── token_vec.rs
│ │ └── tests/
│ │ └── rewrite.rs
│ ├── ir/
│ │ ├── __init__.py
│ │ ├── ast.py
│ │ ├── astexpr.py
│ │ ├── pathid.py
│ │ ├── scopetree.py
│ │ ├── staeval.py
│ │ ├── statypes.py
│ │ ├── typeutils.py
│ │ └── utils.py
│ ├── language_server/
│ │ ├── __init__.py
│ │ ├── completion.py
│ │ ├── definition.py
│ │ ├── main.py
│ │ ├── parsing.py
│ │ ├── project.py
│ │ ├── schema.py
│ │ ├── server.py
│ │ └── utils.py
│ ├── lib/
│ │ ├── __init__.py
│ │ ├── _testmode.edgeql
│ │ ├── cal.edgeql
│ │ ├── cfg.edgeql
│ │ ├── enc.edgeql
│ │ ├── ext/
│ │ │ ├── ai.edgeql
│ │ │ ├── auth.edgeql
│ │ │ ├── edgeqlhttp.edgeql
│ │ │ ├── graphql.edgeql
│ │ │ ├── notebook.edgeql
│ │ │ ├── pg_trgm.edgeql
│ │ │ ├── pg_unaccent.edgeql
│ │ │ ├── pgcrypto.edgeql
│ │ │ └── pgvector.edgeql
│ │ ├── fts.edgeql
│ │ ├── math.edgeql
│ │ ├── net.edgeql
│ │ ├── pg.edgeql
│ │ ├── schema.edgeql
│ │ ├── std/
│ │ │ ├── 00-prelude.edgeql
│ │ │ ├── 10-scalars.edgeql
│ │ │ ├── 15-attrs.edgeql
│ │ │ ├── 17-abstractops.edgeql
│ │ │ ├── 20-genericfuncs.edgeql
│ │ │ ├── 25-booloperators.edgeql
│ │ │ ├── 25-enumoperators.edgeql
│ │ │ ├── 25-numoperators.edgeql
│ │ │ ├── 25-setoperators.edgeql
│ │ │ ├── 26-bitwisefuncs.edgeql
│ │ │ ├── 30-arrayfuncs.edgeql
│ │ │ ├── 30-bytesfuncs.edgeql
│ │ │ ├── 30-datetimefuncs.edgeql
│ │ │ ├── 30-jsonfuncs.edgeql
│ │ │ ├── 30-regexpfuncs.edgeql
│ │ │ ├── 30-sequencefuncs.edgeql
│ │ │ ├── 30-strfuncs.edgeql
│ │ │ ├── 30-uuidfuncs.edgeql
│ │ │ ├── 31-rangefuncs.edgeql
│ │ │ ├── 50-constraints.edgeql
│ │ │ ├── 60-baseobject.edgeql
│ │ │ └── 70-converters.edgeql
│ │ └── sys.edgeql
│ ├── load_ext/
│ │ └── main.py
│ ├── pgsql/
│ │ ├── __init__.py
│ │ ├── ast.py
│ │ ├── codegen.py
│ │ ├── common.py
│ │ ├── compiler/
│ │ │ ├── ARCHITECTURE.md
│ │ │ ├── __init__.py
│ │ │ ├── aliases.py
│ │ │ ├── astutils.py
│ │ │ ├── clauses.py
│ │ │ ├── config.py
│ │ │ ├── context.py
│ │ │ ├── dispatch.py
│ │ │ ├── dml.py
│ │ │ ├── enums.py
│ │ │ ├── expr.py
│ │ │ ├── group.py
│ │ │ ├── output.py
│ │ │ ├── pathctx.py
│ │ │ ├── relctx.py
│ │ │ ├── relgen.py
│ │ │ ├── shapecomp.py
│ │ │ └── stmt.py
│ │ ├── dbops/
│ │ │ ├── __init__.py
│ │ │ ├── base.py
│ │ │ ├── catalogs.py
│ │ │ ├── composites.py
│ │ │ ├── config.py
│ │ │ ├── constraints.py
│ │ │ ├── databases.py
│ │ │ ├── ddl.py
│ │ │ ├── domains.py
│ │ │ ├── enums.py
│ │ │ ├── extensions.py
│ │ │ ├── functions.py
│ │ │ ├── indexes.py
│ │ │ ├── operators.py
│ │ │ ├── ranges.py
│ │ │ ├── roles.py
│ │ │ ├── schemas.py
│ │ │ ├── sequences.py
│ │ │ ├── tables.py
│ │ │ ├── triggers.py
│ │ │ ├── types.py
│ │ │ └── views.py
│ │ ├── debug.py
│ │ ├── delta.py
│ │ ├── delta_ext_ai.py
│ │ ├── deltadbops.py
│ │ ├── deltafts.py
│ │ ├── inheritance.py
│ │ ├── keywords.py
│ │ ├── metaschema.py
│ │ ├── params.py
│ │ ├── parser/
│ │ │ ├── .gitignore
│ │ │ ├── __init__.py
│ │ │ ├── ast_builder.py
│ │ │ ├── exceptions.py
│ │ │ ├── parser.pxd
│ │ │ └── parser.pyx
│ │ ├── patches.py
│ │ ├── patches_6x.py
│ │ ├── resolver/
│ │ │ ├── __init__.py
│ │ │ ├── command.py
│ │ │ ├── context.py
│ │ │ ├── dispatch.py
│ │ │ ├── expr.py
│ │ │ ├── range_functions.py
│ │ │ ├── range_var.py
│ │ │ ├── relation.py
│ │ │ ├── sql_introspection.py
│ │ │ └── static.py
│ │ ├── schemamech.py
│ │ ├── trampoline.py
│ │ └── types.py
│ ├── protocol/
│ │ ├── .gitignore
│ │ ├── README
│ │ ├── __init__.py
│ │ ├── enums.py
│ │ ├── messages.py
│ │ ├── protocol.pxd
│ │ ├── protocol.pyi
│ │ ├── protocol.pyx
│ │ └── render_utils.py
│ ├── schema/
│ │ ├── __init__.py
│ │ ├── _types.py
│ │ ├── abc.py
│ │ ├── annos.py
│ │ ├── casts.py
│ │ ├── constraints.py
│ │ ├── database.py
│ │ ├── ddl.py
│ │ ├── defines.py
│ │ ├── delta.py
│ │ ├── expr.py
│ │ ├── expraliases.py
│ │ ├── extensions.py
│ │ ├── functions.py
│ │ ├── futures.py
│ │ ├── globals.py
│ │ ├── indexes.py
│ │ ├── inheriting.py
│ │ ├── links.py
│ │ ├── migrations.py
│ │ ├── modules.py
│ │ ├── name.py
│ │ ├── objects.py
│ │ ├── objtypes.py
│ │ ├── operators.py
│ │ ├── ordering.py
│ │ ├── permissions.py
│ │ ├── pointers.py
│ │ ├── policies.py
│ │ ├── properties.py
│ │ ├── pseudo.py
│ │ ├── referencing.py
│ │ ├── reflection/
│ │ │ ├── __init__.py
│ │ │ ├── reader.py
│ │ │ ├── structure.py
│ │ │ └── writer.py
│ │ ├── rewrites.py
│ │ ├── roles.py
│ │ ├── scalars.py
│ │ ├── schema.py
│ │ ├── sources.py
│ │ ├── std.py
│ │ ├── triggers.py
│ │ ├── types.py
│ │ ├── unknown_pointers.py
│ │ ├── utils.py
│ │ └── version.py
│ ├── server/
│ │ ├── .gitignore
│ │ ├── __init__.py
│ │ ├── _rust_native/
│ │ │ ├── Cargo.toml
│ │ │ └── src/
│ │ │ └── lib.rs
│ │ ├── args.py
│ │ ├── auth.py
│ │ ├── bootstrap.py
│ │ ├── cache/
│ │ │ ├── __init__.py
│ │ │ ├── stmt_cache.pxd
│ │ │ └── stmt_cache.pyx
│ │ ├── compiler/
│ │ │ ├── __init__.py
│ │ │ ├── compiler.py
│ │ │ ├── config.py
│ │ │ ├── dbstate.py
│ │ │ ├── ddl.py
│ │ │ ├── enums.py
│ │ │ ├── errormech.py
│ │ │ ├── explain/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── casefold.py
│ │ │ │ ├── coarse_grained.py
│ │ │ │ ├── fine_grained.py
│ │ │ │ ├── ir_analyze.py
│ │ │ │ ├── pg_tree.py
│ │ │ │ └── to_json.py
│ │ │ ├── rpc.pxd
│ │ │ ├── rpc.pyi
│ │ │ ├── rpc.pyx
│ │ │ ├── sertypes.py
│ │ │ ├── sql.py
│ │ │ └── status.py
│ │ ├── compiler_pool/
│ │ │ ├── __init__.py
│ │ │ ├── amsg.py
│ │ │ ├── multitenant_worker.py
│ │ │ ├── pool.py
│ │ │ ├── queue.py
│ │ │ ├── server.py
│ │ │ ├── state.py
│ │ │ ├── worker.py
│ │ │ └── worker_proc.py
│ │ ├── config/
│ │ │ ├── __init__.py
│ │ │ ├── ops.py
│ │ │ ├── spec.py
│ │ │ └── types.py
│ │ ├── connpool/
│ │ │ ├── __init__.py
│ │ │ ├── config.py
│ │ │ ├── pool.py
│ │ │ ├── pool2.py
│ │ │ └── rolavg.py
│ │ ├── consul.py
│ │ ├── daemon/
│ │ │ ├── __init__.py
│ │ │ ├── daemon.py
│ │ │ ├── exceptions.py
│ │ │ ├── lib.py
│ │ │ └── pidfile.py
│ │ ├── dbview/
│ │ │ ├── __init__.py
│ │ │ ├── dbview.pxd
│ │ │ ├── dbview.pyi
│ │ │ └── dbview.pyx
│ │ ├── defines.py
│ │ ├── ha/
│ │ │ ├── __init__.py
│ │ │ ├── adaptive.py
│ │ │ ├── base.py
│ │ │ └── stolon.py
│ │ ├── http.py
│ │ ├── inplace_upgrade.py
│ │ ├── instdata.py
│ │ ├── logsetup.py
│ │ ├── main.py
│ │ ├── metrics.py
│ │ ├── multitenant.py
│ │ ├── net_worker.py
│ │ ├── pgcluster.py
│ │ ├── pgcon/
│ │ │ ├── __init__.py
│ │ │ ├── connect.py
│ │ │ ├── cpythonx.pxd
│ │ │ ├── errors.py
│ │ │ ├── pgcon.pxd
│ │ │ ├── pgcon.pyi
│ │ │ ├── pgcon.pyx
│ │ │ ├── pgcon_sql.pxd
│ │ │ ├── pgcon_sql.pyx
│ │ │ └── rust_transport.py
│ │ ├── pgconnparams.py
│ │ ├── protocol/
│ │ │ ├── __init__.py
│ │ │ ├── ai_ext.py
│ │ │ ├── args_ser.pxd
│ │ │ ├── args_ser.pyx
│ │ │ ├── auth/
│ │ │ │ ├── __init__.py
│ │ │ │ └── scram.py
│ │ │ ├── auth_ext/
│ │ │ │ ├── __init__.py
│ │ │ │ ├── _static/
│ │ │ │ │ ├── interactions.js
│ │ │ │ │ ├── styles.css
│ │ │ │ │ ├── utils.js
│ │ │ │ │ ├── webauthn-authenticate.js
│ │ │ │ │ └── webauthn-register.js
│ │ │ │ ├── apple.py
│ │ │ │ ├── azure.py
│ │ │ │ ├── base.py
│ │ │ │ ├── config.py
│ │ │ │ ├── data.py
│ │ │ │ ├── discord.py
│ │ │ │ ├── email.py
│ │ │ │ ├── email_password.py
│ │ │ │ ├── errors.py
│ │ │ │ ├── github.py
│ │ │ │ ├── google.py
│ │ │ │ ├── http.py
│ │ │ │ ├── jwt.py
│ │ │ │ ├── local.py
│ │ │ │ ├── magic_link.py
│ │ │ │ ├── oauth.py
│ │ │ │ ├── otc.py
│ │ │ │ ├── pkce.py
│ │ │ │ ├── slack.py
│ │ │ │ ├── ui/
│ │ │ │ │ ├── __init__.py
│ │ │ │ │ ├── components.py
│ │ │ │ │ └── util.py
│ │ │ │ ├── util.py
│ │ │ │ ├── webauthn.py
│ │ │ │ └── webhook.py
│ │ │ ├── auth_helpers.pxd
│ │ │ ├── auth_helpers.pyx
│ │ │ ├── binary.pxd
│ │ │ ├── binary.pyx
│ │ │ ├── consts.pxi
│ │ │ ├── cpythonx.pxd
│ │ │ ├── edgeql_ext.pyx
│ │ │ ├── execute.pxd
│ │ │ ├── execute.pyi
│ │ │ ├── execute.pyx
│ │ │ ├── frontend.pxd
│ │ │ ├── frontend.pyx
│ │ │ ├── metrics.py
│ │ │ ├── notebook_ext.pxd
│ │ │ ├── notebook_ext.pyx
│ │ │ ├── pg_ext.pxd
│ │ │ ├── pg_ext.pyx
│ │ │ ├── protocol.pxd
│ │ │ ├── protocol.pyi
│ │ │ ├── protocol.pyx
│ │ │ ├── request_scheduler.py
│ │ │ ├── server_info.py
│ │ │ ├── system_api.py
│ │ │ └── ui_ext.pyx
│ │ ├── rust_async_channel.py
│ │ ├── server.py
│ │ ├── service_manager.py
│ │ ├── smtp.py
│ │ └── tenant.py
│ ├── testbase/
│ │ ├── __init__.py
│ │ ├── asyncutils.py
│ │ ├── cluster.py
│ │ ├── connection.py
│ │ ├── experimental_interpreter.py
│ │ ├── http.py
│ │ ├── lang.py
│ │ ├── proc.py
│ │ ├── protocol/
│ │ │ ├── __init__.py
│ │ │ └── test.py
│ │ ├── serutils.py
│ │ └── server.py
│ └── tools/
│ ├── __init__.py
│ ├── __main__.py
│ ├── ast_inheritance_graph.py
│ ├── cli.py
│ ├── config.py
│ ├── dflags.py
│ ├── docs/
│ │ ├── __init__.py
│ │ ├── cli.py
│ │ ├── edb.py
│ │ ├── eql.py
│ │ ├── go.py
│ │ ├── graphql.py
│ │ ├── js.py
│ │ ├── sdl.py
│ │ └── shared.py
│ ├── edb.py
│ ├── experimental_interpreter/
│ │ ├── back_to_ql.py
│ │ ├── basis/
│ │ │ ├── 80-interpreter-internal.edgeql
│ │ │ ├── built_ins.py
│ │ │ ├── builtin_bin_ops.py
│ │ │ ├── errors.py
│ │ │ ├── reserved_ops.py
│ │ │ ├── server_funcs.py
│ │ │ └── std_funcs.py
│ │ ├── data/
│ │ │ ├── casts.py
│ │ │ ├── data_ops.py
│ │ │ ├── deduplication_insert.py
│ │ │ ├── expr_ops.py
│ │ │ ├── expr_to_str.py
│ │ │ ├── module_ops.py
│ │ │ ├── path_factor.py
│ │ │ ├── query_ops.py
│ │ │ ├── type_ops.py
│ │ │ └── val_to_json.py
│ │ ├── db_interface.py
│ │ ├── edb_entry.py
│ │ ├── elab_schema.py
│ │ ├── elaboration.py
│ │ ├── errors.py
│ │ ├── evaluation.py
│ │ ├── evaluation_tools/
│ │ │ └── storage_coercion.py
│ │ ├── helper_funcs.py
│ │ ├── interpreter_logging.py
│ │ ├── logs.py
│ │ ├── new_interpreter.py
│ │ ├── post_processing_tools/
│ │ │ ├── insert_select_optimization.py
│ │ │ └── post_processing.py
│ │ ├── schema/
│ │ │ ├── ddl_processing.py
│ │ │ ├── function_elaboration.py
│ │ │ ├── library_discovery.py
│ │ │ └── subtyping_resolution.py
│ │ ├── sqlite/
│ │ │ └── sqlite_adapter.py
│ │ └── type_checking_tools/
│ │ ├── cast_checking.py
│ │ ├── dml_checking.py
│ │ ├── function_checking.py
│ │ ├── inheritance_populate.py
│ │ ├── module_check_tools.py
│ │ ├── name_resolution.py
│ │ ├── schema_checking.py
│ │ └── typechecking.py
│ ├── fake_ai_server.py
│ ├── gen_cast_table.py
│ ├── gen_errors.py
│ ├── gen_meta_grammars.py
│ ├── gen_rust_ast.py
│ ├── gen_sql_introspection.py
│ ├── gen_test_dumps.py
│ ├── gen_types.py
│ ├── inittestdb.py
│ ├── ls.py
│ ├── ls_forbidden_functions.py
│ ├── mypy/
│ │ ├── __init__.py
│ │ └── plugin.py
│ ├── parser_demo.py
│ ├── profiling/
│ │ ├── README.md
│ │ ├── __init__.py
│ │ ├── cli.py
│ │ ├── profiler.py
│ │ ├── svg_helpers.js
│ │ └── tracing_singledispatch.py
│ ├── pygments/
│ │ ├── __init__.py
│ │ ├── edgeql/
│ │ │ ├── __init__.py
│ │ │ └── meta.py
│ │ └── graphql/
│ │ └── __init__.py
│ ├── railroad_diagram.py
│ ├── redo_metaschema.py
│ ├── rm_data_dir.py
│ ├── test/
│ │ ├── __init__.py
│ │ ├── cpython_state.py
│ │ ├── decorators.py
│ │ ├── loader.py
│ │ ├── mproc_fixes.py
│ │ ├── results.py
│ │ ├── runner.py
│ │ └── styles.py
│ ├── test_extension.py
│ ├── toy_eval_model.py
│ └── wipe.py
├── edb_stat_statements/
│ ├── .gitignore
│ ├── Makefile
│ ├── edb_stat_statements--1.0.sql
│ ├── edb_stat_statements.c
│ ├── edb_stat_statements.control
│ ├── expected/
│ │ ├── cleanup.out
│ │ ├── cursors.out
│ │ ├── dml.out.17
│ │ ├── dml.out.18
│ │ ├── entry_timestamp.out
│ │ ├── extended.out
│ │ ├── level_tracking.out.17
│ │ ├── level_tracking.out.18
│ │ ├── oldextversions.out
│ │ ├── parallel.out.17
│ │ ├── parallel.out.18
│ │ ├── planning.out
│ │ ├── privileges.out
│ │ ├── select.out
│ │ ├── user_activity.out
│ │ ├── utility.out.16
│ │ ├── utility.out.17
│ │ ├── wal.out.17
│ │ └── wal.out.18
│ ├── sql/
│ │ ├── cleanup.sql
│ │ ├── cursors.sql
│ │ ├── dml.sql
│ │ ├── entry_timestamp.sql
│ │ ├── extended.sql
│ │ ├── level_tracking.sql
│ │ ├── oldextversions.sql
│ │ ├── parallel.sql
│ │ ├── planning.sql
│ │ ├── privileges.sql
│ │ ├── select.sql
│ │ ├── user_activity.sql
│ │ ├── utility.sql
│ │ └── wal.sql
│ └── t/
│ └── 010_restart.pl
├── pyproject.toml
├── rust/
│ ├── conn_pool/
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ └── src/
│ │ ├── algo.rs
│ │ ├── bin/
│ │ │ └── optimizer.rs
│ │ ├── block.rs
│ │ ├── conn.rs
│ │ ├── drain.rs
│ │ ├── lib.rs
│ │ ├── metrics.rs
│ │ ├── pool.rs
│ │ ├── python.rs
│ │ ├── test/
│ │ │ ├── mod.rs
│ │ │ └── spec.rs
│ │ └── waitqueue.rs
│ ├── gel-http/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── cache.rs
│ │ ├── lib.rs
│ │ └── python.rs
│ ├── pgrust/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── errors/
│ │ │ ├── edgedb.rs
│ │ │ └── mod.rs
│ │ ├── lib.rs
│ │ └── python/
│ │ └── mod.rs
│ └── pyo3_util/
│ ├── Cargo.toml
│ └── src/
│ ├── channel.rs
│ ├── lib.rs
│ └── logging.rs
├── rust-toolchain.toml
├── setup.py
└── tests/
├── __init__.py
├── certs/
│ ├── .gitignore
│ ├── ca.cert.pem
│ ├── ca.conf
│ ├── ca.crl.pem
│ ├── ca.key.pem
│ ├── client.cert.pem
│ ├── client.key.pem
│ ├── client.key.protected.pem
│ ├── client_ca.cert.pem
│ ├── client_ca.key.pem
│ ├── gen.py
│ ├── gen.sh
│ ├── server.cert.pem
│ └── server.key.pem
├── common/
│ ├── __init__.py
│ ├── test_ast.py
│ ├── test_asyncutil.py
│ ├── test_checked.py
│ ├── test_debug.py
│ ├── test_lru.py
│ ├── test_markup.py
│ ├── test_parametric.py
│ ├── test_prometheus.py
│ ├── test_signalctl.py
│ ├── test_struct.py
│ ├── test_supervisor.py
│ ├── test_term.py
│ ├── test_token_bucket.py
│ ├── test_value_dispatch.py
│ ├── test_windowedsum.py
│ └── test_xdedent.py
├── dumps/
│ ├── dump01/
│ │ ├── 1_4.dump
│ │ ├── 2_0.dump
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dump02/
│ │ ├── 1_4.dump
│ │ ├── 2_0.dump
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dump03/
│ │ ├── 1_4.dump
│ │ ├── 2_0.dump
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dumpv2/
│ │ ├── 2_0.dump
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dumpv3/
│ │ ├── .gitignore
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dumpv4/
│ │ ├── .gitignore
│ │ ├── 3_0.dump
│ │ ├── 4_0.dump
│ │ └── 6_0.dump
│ ├── dumpv5/
│ │ ├── .gitignore
│ │ └── 6_0.dump
│ ├── dumpv6/
│ │ ├── .gitignore
│ │ └── 6_0.dump
│ └── dumpv7/
│ └── .gitignore
├── edgeql/
│ ├── __init__.py
│ └── test_quote.py
├── extension-testing/
│ ├── .gitignore
│ ├── ext_test/
│ │ ├── MANIFEST.toml
│ │ ├── Makefile
│ │ ├── get_sum.edgeql
│ │ └── sql/
│ │ ├── Makefile
│ │ ├── get_sum--0.0.1.sql
│ │ ├── get_sum.c
│ │ └── get_sum.control
│ └── exts.mk
├── inplace-testing/
│ ├── prep-upgrades.py
│ ├── test-old.sh
│ ├── test.sh
│ └── upgrade.patch
├── patch-testing/
│ ├── test.sh
│ └── upgrade.patch
├── schemas/
│ ├── advtypes.esdl
│ ├── cards.esdl
│ ├── cards_ir_inference.esdl
│ ├── cards_setup.edgeql
│ ├── casts.esdl
│ ├── casts_setup.edgeql
│ ├── constraints.esdl
│ ├── constraints_migration/
│ │ ├── schema.esdl
│ │ └── updated_schema.esdl
│ ├── dump01_default.esdl
│ ├── dump01_setup.edgeql
│ ├── dump01_test.esdl
│ ├── dump02_default.esdl
│ ├── dump02_setup.edgeql
│ ├── dump03_default.esdl
│ ├── dump03_setup.edgeql
│ ├── dump_v2_default.esdl
│ ├── dump_v2_setup.edgeql
│ ├── dump_v3_default.esdl
│ ├── dump_v3_setup.edgeql
│ ├── dump_v4_default.esdl
│ ├── dump_v4_setup.edgeql
│ ├── dump_v5_default.esdl
│ ├── dump_v5_setup.edgeql
│ ├── dump_v6_default.esdl
│ ├── dump_v6_setup.edgeql
│ ├── dump_v7_default.esdl
│ ├── dump_v7_setup.edgeql
│ ├── enums.esdl
│ ├── explain.esdl
│ ├── explain_bug5758.esdl
│ ├── explain_bug5791.esdl
│ ├── explain_setup.edgeql
│ ├── ext_ai.esdl
│ ├── fts.esdl
│ ├── fts_setup.edgeql
│ ├── graphql.esdl
│ ├── graphql_other.esdl
│ ├── graphql_schema.esdl
│ ├── graphql_schema_other.esdl
│ ├── graphql_schema_other_deep.esdl
│ ├── graphql_setup.edgeql
│ ├── insert.esdl
│ ├── interpreter_disambiguation.esdl
│ ├── interpreter_disambiguation_setup.edgeql
│ ├── inventory.esdl
│ ├── inventory_setup.edgeql
│ ├── issues.esdl
│ ├── issues_coalesce_setup.edgeql
│ ├── issues_filter_setup.edgeql
│ ├── issues_setup.edgeql
│ ├── json.esdl
│ ├── json_setup.edgeql
│ ├── link_tgt_del.esdl
│ ├── link_tgt_del_migrated.esdl
│ ├── links_1.esdl
│ ├── links_1_migrated.esdl
│ ├── movies.esdl
│ ├── movies_setup.edgeql
│ ├── pg_dump01_default.esdl
│ ├── pg_dump01_setup.edgeql
│ ├── pg_dump02_default.esdl
│ ├── pg_dump02_setup.edgeql
│ ├── pg_trgm.esdl
│ ├── pg_trgm_setup.edgeql
│ ├── pg_unaccent.esdl
│ ├── pgvector.esdl
│ ├── pgvector_setup.edgeql
│ ├── smoke_test_interp.esdl
│ ├── smoke_test_interp_setup.edgeql
│ ├── tree.esdl
│ ├── tree_setup.edgeql
│ ├── updates.edgeql
│ ├── updates.esdl
│ ├── volatility.esdl
│ └── volatility_setup.edgeql
├── test_api_errors.py
├── test_backend_connect.py
├── test_backend_ha.py
├── test_constraints.py
├── test_database.py
├── test_docs.py
├── test_docs_sphinx_ext.py
├── test_dump01.py
├── test_dump02.py
├── test_dump03.py
├── test_dump_basic.py
├── test_dump_v2.py
├── test_dump_v3.py
├── test_dump_v4.py
├── test_dump_v5.py
├── test_dump_v6.py
├── test_dump_v7.py
├── test_edgeql_advtypes.py
├── test_edgeql_calls.py
├── test_edgeql_casts.py
├── test_edgeql_coalesce.py
├── test_edgeql_data_migration.py
├── test_edgeql_datatypes.py
├── test_edgeql_ddl.py
├── test_edgeql_delete.py
├── test_edgeql_enums.py
├── test_edgeql_explain.py
├── test_edgeql_expr_aliases.py
├── test_edgeql_expressions.py
├── test_edgeql_ext_pg_trgm.py
├── test_edgeql_ext_pg_unaccent.py
├── test_edgeql_ext_pgcrypto.py
├── test_edgeql_extensions.py
├── test_edgeql_filter.py
├── test_edgeql_for.py
├── test_edgeql_fts.py
├── test_edgeql_fts_schema.py
├── test_edgeql_functions.py
├── test_edgeql_functions_inline.py
├── test_edgeql_globals.py
├── test_edgeql_group.py
├── test_edgeql_insert.py
├── test_edgeql_internal_group.py
├── test_edgeql_introspection.py
├── test_edgeql_ir_card_inference.py
├── test_edgeql_ir_mult_inference.py
├── test_edgeql_ir_pathid.py
├── test_edgeql_ir_scopetree.py
├── test_edgeql_ir_type_inference.py
├── test_edgeql_ir_volatility_inference.py
├── test_edgeql_json.py
├── test_edgeql_linkatoms.py
├── test_edgeql_linkprops.py
├── test_edgeql_net_schema.py
├── test_edgeql_permissions.py
├── test_edgeql_policies.py
├── test_edgeql_rewrites.py
├── test_edgeql_scope.py
├── test_edgeql_select.py
├── test_edgeql_select_interpreter.py
├── test_edgeql_sql_codegen.py
├── test_edgeql_syntax.py
├── test_edgeql_sys.py
├── test_edgeql_tree.py
├── test_edgeql_triggers.py
├── test_edgeql_tutorial.py
├── test_edgeql_update.py
├── test_edgeql_userddl.py
├── test_edgeql_vector.py
├── test_edgeql_volatility.py
├── test_eval_model.py
├── test_eval_model_group.py
├── test_eval_model_new_interpreter.py
├── test_ext_ai.py
├── test_http.py
├── test_http_auth.py
├── test_http_edgeql.py
├── test_http_ext_auth.py
├── test_http_graphql_mutation.py
├── test_http_graphql_query.py
├── test_http_graphql_schema.py
├── test_http_notebook.py
├── test_http_std_net.py
├── test_indexes.py
├── test_interpreter_disambiguation.py
├── test_language_server.py
├── test_link_target_delete.py
├── test_pg_dump.py
├── test_pgext.py
├── test_profiling.py
├── test_protocol.py
├── test_schema.py
├── test_schema_syntax.py
├── test_server_auth.py
├── test_server_compiler.py
├── test_server_concurrency.py
├── test_server_config.py
├── test_server_ops.py
├── test_server_param_conversions.py
├── test_server_permissions.py
├── test_server_pool.py
├── test_server_proto.py
├── test_server_request_scheduler.py
├── test_server_unit.py
├── test_session.py
├── test_sourcecode.py
├── test_sql_dml.py
├── test_sql_parse.py
├── test_sql_query.py
└── test_tracer.py
Showing preview only (1,285K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (16078 symbols across 569 files)
FILE: .github/scripts/docs/preview-deploy.js
constant DOCS_SITE_REPO (line 1) | const DOCS_SITE_REPO = {
function vercelFetch (line 140) | async function vercelFetch(url, body) {
function formatDatetime (line 176) | function formatDatetime(date) {
function sleep (line 189) | function sleep(milliseconds) {
FILE: .github/workflows.src/render.py
function die (line 20) | def die(msg):
function _expand_test_spec (line 25) | def _expand_test_spec(target):
function _render (line 38) | def _render(tpl_path, data):
function main (line 45) | def main():
FILE: dev-notes/concurrent-indexes.py
function create_concurrent_indexes (line 6) | def create_concurrent_indexes(db, msg_callback=print):
function main (line 34) | def main():
FILE: edb/_edgeql_parser.pyi
class SyntaxError (line 3) | class SyntaxError(Exception): ...
class ParserResult (line 5) | class ParserResult:
method pack (line 16) | def pack(self) -> bytes: ...
class Hasher (line 18) | class Hasher:
method start_migration (line 20) | def start_migration(parent_id: str) -> Hasher: ...
method add_source (line 21) | def add_source(self, data: str) -> None: ...
method make_migration_id (line 22) | def make_migration_id(self) -> str: ...
class Entry (line 29) | class Entry:
method get_variables (line 40) | def get_variables(self) -> dict[str, typing.Any]: ...
method pack (line 41) | def pack(self) -> bytes: ...
function normalize (line 43) | def normalize(text: str) -> Entry: ...
function parse (line 44) | def parse(
function suggest_next_keywords (line 49) | def suggest_next_keywords(
function preload_spec (line 52) | def preload_spec(spec_filepath: str) -> None: ...
function save_spec (line 53) | def save_spec(spec_json: str, dst: str) -> None: ...
class CSTNode (line 55) | class CSTNode:
class Production (line 59) | class Production:
class Terminal (line 65) | class Terminal:
class SourcePoint (line 71) | class SourcePoint:
method from_offsets (line 80) | def from_offsets(
method from_lines_cols (line 85) | def from_lines_cols(
function offset_of_line (line 89) | def offset_of_line(text: str, target: int) -> int: ...
class OpaqueToken (line 91) | class OpaqueToken:
method span_start (line 93) | def span_start(self) -> int: ...
method span_end (line 94) | def span_end(self) -> int: ...
method is_ident (line 95) | def is_ident(self) -> bool: ...
function tokenize (line 97) | def tokenize(s: str) -> ParserResult: ...
function unpickle_token (line 98) | def unpickle_token(bytes: bytes) -> OpaqueToken: ...
function unpack (line 99) | def unpack(serialized: bytes) -> Entry | list[OpaqueToken]: ...
FILE: edb/buildmeta.py
class MetadataError (line 64) | class MetadataError(Exception):
class BackendVersion (line 68) | class BackendVersion(NamedTuple):
class VersionMetadata (line 77) | class VersionMetadata(TypedDict):
function get_build_metadata_value (line 85) | def get_build_metadata_value(prop: str) -> str:
function _get_devmode_pg_config_path (line 101) | def _get_devmode_pg_config_path() -> pathlib.Path:
function get_pg_config_path (line 118) | def get_pg_config_path() -> pathlib.Path:
function parse_pg_version (line 146) | def parse_pg_version(version_string: str) -> BackendVersion:
function get_pg_version (line 165) | def get_pg_version() -> BackendVersion:
function get_runstate_path (line 196) | def get_runstate_path(data_dir: pathlib.Path) -> pathlib.Path:
function get_shared_data_dir_path (line 207) | def get_shared_data_dir_path() -> pathlib.Path:
function get_extension_dir_path (line 214) | def get_extension_dir_path() -> pathlib.Path:
function hash_dirs (line 219) | def hash_dirs(
function read_data_cache (line 253) | def read_data_cache(
function write_data_cache (line 278) | def write_data_cache(
function get_version (line 309) | def get_version() -> verutils.Version:
function get_version_build_id (line 324) | def get_version_build_id(
function get_version_dict (line 350) | def get_version_dict() -> Mapping[str, Any]:
function get_version_json (line 369) | def get_version_json() -> str:
function get_version_string (line 376) | def get_version_string(short: bool = True) -> str:
function get_version_metadata (line 387) | def get_version_metadata() -> VersionMetadata:
function _decode_build_target (line 417) | def _decode_build_target(val: str) -> str:
function _decode_build_date (line 423) | def _decode_build_date(val: str) -> datetime.datetime:
function get_version_from_scm (line 428) | def get_version_from_scm(root: pathlib.Path) -> str:
function get_cache_src_dirs (line 582) | def get_cache_src_dirs():
function get_default_tenant_id (line 595) | def get_default_tenant_id() -> str:
function get_version_line (line 599) | def get_version_line() -> str:
FILE: edb/cli/__init__.py
function rustcli (line 27) | def rustcli(*, args: Optional[list[str]]=None) -> NoReturn:
FILE: edb/common/_typing_inspect.py
function is_classvar (line 50) | def is_classvar(t) -> bool:
function is_typevar (line 54) | def is_typevar(t) -> bool:
function is_generic_type (line 58) | def is_generic_type(t) -> bool:
function is_union_type (line 68) | def is_union_type(t) -> bool:
function is_tuple_type (line 76) | def is_tuple_type(t) -> bool:
function get_args (line 87) | def get_args(t, evaluate: bool = True) -> Any:
function get_generic_bases (line 101) | def get_generic_bases(t) -> tuple[type, ...]:
function get_parameters (line 105) | def get_parameters(t) -> tuple[TypeVar, ...]:
function get_origin (line 117) | def get_origin(t) -> Optional[type]:
function _is_genericalias (line 125) | def _is_genericalias(t) -> bool:
FILE: edb/common/adapter.py
class AdapterError (line 24) | class AdapterError(Exception):
class Adapter (line 31) | class Adapter(type):
method __new__ (line 34) | def __new__[Adapter_T: Adapter](
method __init__ (line 63) | def __init__(
method _match_adapter (line 75) | def _match_adapter(
method _get_adapter (line 90) | def _get_adapter(
method get_adapter (line 111) | def get_adapter(mcls, obj: Any) -> Optional[Adapter]:
method adapt (line 128) | def adapt[T](mcls, obj: T) -> T:
method get_adaptee (line 141) | def get_adaptee(cls) -> type:
method has_adaptee (line 147) | def has_adaptee(cls) -> bool:
FILE: edb/common/assert_data_shape.py
class bag (line 33) | class bag(list):
method __repr__ (line 35) | def __repr__(self):
function sort_results (line 39) | def sort_results(results, sort):
function assert_data_shape (line 63) | def assert_data_shape(
FILE: edb/common/ast/base.py
class ASTError (line 41) | class ASTError(Exception):
class _Field (line 45) | class _Field:
method __init__ (line 46) | def __init__(
class _FieldSpec (line 63) | class _FieldSpec:
method __init__ (line 64) | def __init__(self, factory):
function field (line 68) | def field[T](*, factory: Callable[[], T]) -> T:
function _check_type_passthrough (line 72) | def _check_type_passthrough(type_, value, raise_error):
function _check_type_real (line 76) | def _check_type_real(type_, value, raise_error):
class AST (line 123) | class AST:
method _collect_direct_fields (line 130) | def _collect_direct_fields(cls):
method __init_subclass__ (line 205) | def __init_subclass__(cls, **kwargs):
method get_field (line 233) | def get_field(cls, name):
method __init__ (line 237) | def __init__(self, **kwargs):
method __copy__ (line 255) | def __copy__(self):
method __deepcopy__ (line 265) | def __deepcopy__(self, memo):
method _init_copy (line 271) | def _init_copy(self):
method replace (line 274) | def replace[T](self: T, **changes) -> T:
method _checked_setattr (line 280) | def _checked_setattr(self, name, value):
method check_field_type (line 291) | def check_field_type(self, field, value):
method dump (line 300) | def dump(self, *, meta=True):
class ImmutableASTMixin (line 304) | class ImmutableASTMixin:
method __init__ (line 310) | def __init__(self, **kwargs):
method __setattr__ (line 318) | def __setattr__(self, name, value):
function serialize_to_markup (line 326) | def serialize_to_markup(ast, *, ctx):
function _is_ast_node_type (line 350) | def _is_ast_node_type(cls):
function is_ast_node (line 354) | def is_ast_node(obj):
function iter_fields (line 361) | def iter_fields(node, *, include_meta=True, exclude_unset=False):
function _is_optional (line 379) | def _is_optional(type_):
function _check_container_type (line 384) | def _check_container_type(type_, value, raise_error, instance_type):
function _check_tuple_type (line 394) | def _check_tuple_type(type_, value, raise_error, instance_type):
function _check_mapping_type (line 413) | def _check_mapping_type(type_, value, raise_error, instance_type):
FILE: edb/common/ast/codegen.py
class Options (line 32) | class Options:
class SourceGenerator (line 38) | class SourceGenerator(NodeVisitor):
method __init__ (line 43) | def __init__(
method node_visit (line 58) | def node_visit(self, node: base.AST) -> None:
method visit_indented (line 63) | def visit_indented(
method write (line 79) | def write(self, *x: str, delimiter: Optional[str] = None) -> None:
method visit_list (line 105) | def visit_list(
method newline (line 127) | def newline(self, node=None, extra=0):
method finish (line 133) | def finish(self) -> str:
method to_source (line 137) | def to_source(
method indent_text (line 150) | def indent_text(self, text: str) -> str:
FILE: edb/common/ast/transformer.py
class NodeTransformer (line 28) | class NodeTransformer(visitor.NodeVisitor):
method generic_visit (line 62) | def generic_visit(self, node):
FILE: edb/common/ast/visitor.py
class SkipNode (line 31) | class SkipNode(Exception):
function find_children (line 35) | def find_children[_T](
class NodeVisitor (line 89) | class NodeVisitor:
method __init__ (line 109) | def __init__(self, *, context=None, memo=None):
method memo (line 117) | def memo(self):
method run (line 121) | def run(cls, node, **kwargs):
method container_visit (line 125) | def container_visit(self, node) -> dict[Any, Any] | Iterable[Any]:
method repeated_node_visit (line 151) | def repeated_node_visit(self, node):
method node_visit (line 158) | def node_visit(self, node):
method visit (line 175) | def visit(self, node):
method generic_visit (line 181) | def generic_visit(self, node, *, combine_results=None):
method combine_field_results (line 200) | def combine_field_results(self, results):
function nodes_equal (line 204) | def nodes_equal(n1, n2):
FILE: edb/common/asyncutil.py
function deferred_shield (line 36) | async def deferred_shield[T](arg: Awaitable[T]) -> T:
function debounce (line 74) | async def debounce[T](
class ExclusiveTask (line 157) | class ExclusiveTask:
method __init__ (line 165) | def __init__(self, handler: HandlerFunction) -> None:
method scheduled (line 172) | def scheduled(self) -> bool:
method _run (line 175) | async def _run(self) -> None:
method schedule (line 188) | def schedule(self) -> None:
method stop (line 201) | async def stop(self) -> None:
class ExclusiveTaskProperty (line 214) | class ExclusiveTaskProperty:
method __init__ (line 218) | def __init__(
method __set_name__ (line 224) | def __set_name__(self, owner: type[_Owner], name: str) -> None:
method __get__ (line 237) | def __get__(self, instance: None, owner: type[_Owner]) -> Self: ...
method __get__ (line 240) | def __get__(
method __get__ (line 244) | def __get__(
function _exclusive_task (line 275) | def _exclusive_task(
function exclusive_task (line 299) | def exclusive_task(handler: HandlerFunction) -> ExclusiveTask: ...
function exclusive_task (line 303) | def exclusive_task(
function exclusive_task (line 309) | def exclusive_task(*, slot: str | None = None) -> ExclusiveTaskDecorator...
function exclusive_task (line 312) | def exclusive_task(
FILE: edb/common/asyncwatcher.py
class AsyncWatcherProtocol (line 31) | class AsyncWatcherProtocol(asyncio.Protocol):
method __init__ (line 32) | def __init__(
method connection_made (line 39) | def connection_made(self, transport: asyncio.BaseTransport) -> None:
method connection_lost (line 43) | def connection_lost(self, exc: Optional[Exception]) -> None:
method request (line 47) | def request(self) -> None:
method close (line 50) | def close(self) -> None:
class AsyncWatcher (line 54) | class AsyncWatcher:
method __init__ (line 55) | def __init__(self) -> None:
method start_watching (line 63) | async def start_watching(self) -> bool:
method retry_watching (line 75) | async def retry_watching(self) -> None:
method stop_watching (line 89) | def stop_watching(self) -> None:
method wait_stopped_watching (line 96) | async def wait_stopped_watching(self) -> None:
method on_connection_lost (line 100) | def on_connection_lost(self) -> None:
method on_update (line 110) | def on_update(self, data: bytes) -> None:
method _on_update (line 114) | def _on_update(self, data: bytes) -> None:
method _start_watching (line 117) | async def _start_watching(self) -> AsyncWatcherProtocol:
method consume_tokens (line 120) | def consume_tokens(self, tokens: int) -> float:
method incr_metrics_counter (line 125) | def incr_metrics_counter(self, event: str, value: float = 1.0) -> None:
FILE: edb/common/binwrapper.py
class BinWrapper (line 26) | class BinWrapper:
method __init__ (line 39) | def __init__(self, buf: io.BytesIO) -> None:
method write_ui64 (line 42) | def write_ui64(self, val: int) -> None:
method write_ui32 (line 45) | def write_ui32(self, val: int) -> None:
method write_ui16 (line 48) | def write_ui16(self, val: int) -> None:
method write_ui8 (line 51) | def write_ui8(self, val: int) -> None:
method write_i64 (line 54) | def write_i64(self, val: int) -> None:
method write_i32 (line 57) | def write_i32(self, val: int) -> None:
method write_i16 (line 60) | def write_i16(self, val: int) -> None:
method write_i8 (line 63) | def write_i8(self, val: int) -> None:
method write_len32_prefixed_bytes (line 66) | def write_len32_prefixed_bytes(self, val: bytes) -> None:
method write_bytes (line 70) | def write_bytes(self, val: bytes) -> None:
method read_ui64 (line 73) | def read_ui64(self) -> int:
method read_ui32 (line 77) | def read_ui32(self) -> int:
method read_ui16 (line 81) | def read_ui16(self) -> int:
method read_ui8 (line 85) | def read_ui8(self) -> int:
method read_i64 (line 89) | def read_i64(self) -> int:
method read_i32 (line 93) | def read_i32(self) -> int:
method read_i16 (line 97) | def read_i16(self) -> int:
method read_i8 (line 101) | def read_i8(self) -> int:
method read_bytes (line 105) | def read_bytes(self, size: int) -> bytes:
method read_len32_prefixed_bytes (line 111) | def read_len32_prefixed_bytes(self) -> bytes:
method read_nullable_len32_prefixed_bytes (line 115) | def read_nullable_len32_prefixed_bytes(self) -> bytes | None:
method tell (line 122) | def tell(self) -> int:
FILE: edb/common/checked.py
class ParametricContainer (line 52) | class ParametricContainer:
method __reduce__ (line 56) | def __reduce__(self) -> tuple[Any, ...]:
method __restore__ (line 71) | def __restore__(
class AbstractCheckedList (line 77) | class AbstractCheckedList[T]:
method _check_type (line 82) | def _check_type(cls, value: Any) -> T:
method __init__ (line 91) | def __init__(self, iterable: Iterable[T] = ()) -> None:
method __lt__ (line 94) | def __lt__(self, other: list[T]) -> bool:
method __le__ (line 97) | def __le__(self, other: list[T]) -> bool:
method __gt__ (line 100) | def __gt__(self, other: list[T]) -> bool:
method __ge__ (line 103) | def __ge__(self, other: list[T]) -> bool:
method _cast (line 106) | def _cast(self, other: list[T]) -> list[T]:
method __eq__ (line 112) | def __eq__(self, other: object) -> bool:
method __str__ (line 117) | def __str__(self) -> str:
method __repr__ (line 120) | def __repr__(self) -> str:
class FrozenCheckedList (line 124) | class FrozenCheckedList[T](
method __init__ (line 130) | def __init__(self, iterable: Iterable[T] = ()) -> None:
method __hash__ (line 135) | def __hash__(self) -> int:
method __getitem__ (line 145) | def __getitem__(self, index: int) -> T: ...
method __getitem__ (line 148) | def __getitem__(self, index: slice) -> FrozenCheckedList[T]: ...
method __getitem__ (line 150) | def __getitem__(self, index: int | slice) -> Any:
method __len__ (line 156) | def __len__(self) -> int:
method __add__ (line 163) | def __add__(self, other: Iterable[T]) -> FrozenCheckedList[T]:
method __radd__ (line 166) | def __radd__(self, other: Iterable[T]) -> FrozenCheckedList[T]:
method __mul__ (line 169) | def __mul__(self, n: int) -> FrozenCheckedList[T]:
class CheckedList (line 175) | class CheckedList[T](
method __init__ (line 181) | def __init__(self, iterable: Iterable[T] = ()) -> None:
method __getitem__ (line 190) | def __getitem__(self, index: int) -> T: ...
method __getitem__ (line 193) | def __getitem__(self, index: slice) -> CheckedList[T]: ...
method __getitem__ (line 195) | def __getitem__(self, index: int | slice) -> Any:
method __setitem__ (line 206) | def __setitem__(self, index: int, value: T) -> None: ...
method __setitem__ (line 209) | def __setitem__(self, index: slice, value: Iterable[T]) -> None: ...
method __setitem__ (line 211) | def __setitem__(self, index: int | slice, value: Any) -> None:
method __delitem__ (line 220) | def __delitem__(self, index: int) -> None: ...
method __delitem__ (line 223) | def __delitem__(self, index: slice) -> None: ...
method __delitem__ (line 225) | def __delitem__(self, index: int | slice) -> None:
method insert (line 228) | def insert(self, index: int, value: T) -> None:
method __len__ (line 231) | def __len__(self) -> int:
method __add__ (line 238) | def __add__(self, other: Iterable[T]) -> CheckedList[T]:
method __radd__ (line 241) | def __radd__(self, other: Iterable[T]) -> CheckedList[T]:
method __iadd__ (line 244) | def __iadd__(self, other: Iterable[T]) -> CheckedList[T]:
method __mul__ (line 248) | def __mul__(self, n: int) -> CheckedList[T]:
method __imul__ (line 253) | def __imul__(self, n: int) -> CheckedList[T]:
method sort (line 257) | def sort(self, *, key: Any = None, reverse: bool = False) -> None:
class AbstractCheckedSet (line 261) | class AbstractCheckedSet[T](AbstractSet[T]):
method __init__ (line 265) | def __init__(self, iterable: Iterable[T] = ()) -> None:
method _check_type (line 269) | def _check_type(cls, value: Any) -> T:
method _cast (line 278) | def _cast(self, other: Any) -> AbstractSet[T]:
method __eq__ (line 287) | def __eq__(self, other: object) -> bool:
method __str__ (line 292) | def __str__(self) -> str:
method __repr__ (line 295) | def __repr__(self) -> str:
method __contains__ (line 302) | def __contains__(self, value: Any) -> bool:
method __iter__ (line 305) | def __iter__(self) -> Iterator[T]:
method __len__ (line 308) | def __len__(self) -> int:
method issubset (line 315) | def issubset(self, other: AbstractSet[Any]) -> bool:
method issuperset (line 318) | def issuperset(self, other: AbstractSet[Any]) -> bool:
class FrozenCheckedSet (line 322) | class FrozenCheckedSet[T](
method __init__ (line 327) | def __init__(self, iterable: Iterable[T] = ()) -> None:
method __hash__ (line 332) | def __hash__(self) -> int:
method __and__ (line 348) | def __and__(self, other: AbstractSet[T]) -> FrozenCheckedSet[T]:
method __or__ (line 358) | def __or__( # type: ignore
method __sub__ (line 366) | def __sub__(self, other: AbstractSet[T]) -> FrozenCheckedSet[T]:
method __rsub__ (line 374) | def __rsub__(self, other: AbstractSet[T]) -> FrozenCheckedSet[T]:
method __xor__ (line 378) | def __xor__( # type: ignore
class CheckedSet (line 396) | class CheckedSet[T](
method __init__ (line 404) | def __init__(self, iterable: Iterable[T] = ()) -> None:
method __and__ (line 419) | def __and__(self, other: AbstractSet[T]) -> CheckedSet[T]:
method __or__ (line 429) | def __or__(self, other: AbstractSet[T]) -> CheckedSet[T]: # type: ignore
method __sub__ (line 435) | def __sub__(self, other: AbstractSet[T]) -> CheckedSet[T]:
method __rsub__ (line 443) | def __rsub__(self, other: AbstractSet[T]) -> CheckedSet[T]:
method __xor__ (line 447) | def __xor__(self, other: AbstractSet[T]) -> CheckedSet[T]: # type: ig...
method add (line 457) | def add(self, value: T) -> None:
method discard (line 460) | def discard(self, value: T) -> None:
method __ior__ (line 467) | def __ior__(self, other: AbstractSet[T]) -> CheckedSet[T]: # type: ig...
method __iand__ (line 471) | def __iand__(self, other: AbstractSet[T]) -> CheckedSet[T]:
method __ixor__ (line 477) | def __ixor__(self, other: AbstractSet[T]) -> CheckedSet[T]: # type: i...
method __isub__ (line 481) | def __isub__(self, other: AbstractSet[T]) -> CheckedSet[T]:
function _type_repr (line 506) | def _type_repr(obj: Any) -> str:
class AbstractCheckedDict (line 516) | class AbstractCheckedDict[K, V]:
method _check_key_type (line 522) | def _check_key_type(cls, key: Any) -> K:
method _check_value_type (line 532) | def _check_value_type(cls, value: Any) -> V:
method __eq__ (line 541) | def __eq__(self, other: object) -> bool:
method __str__ (line 546) | def __str__(self) -> str:
method __repr__ (line 549) | def __repr__(self) -> str:
class CheckedDict (line 553) | class CheckedDict[K, V](
method __init__ (line 559) | def __init__(self, *args: Any, **kwargs: V) -> None:
method __getitem__ (line 579) | def __getitem__(self, key: K) -> V:
method __iter__ (line 582) | def __iter__(self) -> Iterator[K]:
method __len__ (line 585) | def __len__(self) -> int:
method __setitem__ (line 592) | def __setitem__(self, key: K, value: V) -> None:
method __delitem__ (line 596) | def __delitem__(self, key: K) -> None:
method fromkeys (line 604) | def fromkeys(
function _identity (line 613) | def _identity[T](cls: type, value: T) -> T:
function disable_typechecks (line 626) | def disable_typechecks() -> None:
function enable_typechecks (line 632) | def enable_typechecks() -> None:
FILE: edb/common/colorsys.py
class Color (line 38) | class Color:
method __init__ (line 182) | def __init__(self, r, g, b, a=1.0):
method from_color (line 194) | def from_color(cls, color):
method from_string (line 198) | def from_string(cls, value, alpha=1.0):
method from_hls (line 220) | def from_hls(cls, h, l, s, alpha=1.0): # NoQA: E741
method rgb_channels (line 223) | def rgb_channels(self, *, as_floats=False):
method rgba_channels (line 229) | def rgba_channels(self, *, as_floats=False):
method hls_channels (line 235) | def hls_channels(self):
function rgb_to_xyz (line 245) | def rgb_to_xyz(r, g, b):
function xyz_to_lab (line 287) | def xyz_to_lab(x, y, z):
function rgb_distance (line 321) | def rgb_distance(r1, g1, b1, r2, g2, b2):
FILE: edb/common/compiler.py
class ContextLevel (line 33) | class ContextLevel:
method __init__ (line 36) | def __init__(self, prevlevel: Optional[Self], mode: Any) -> None:
method on_pop (line 39) | def on_pop(
method new (line 45) | def new(
method reenter (line 51) | def reenter(
class CompilerContextManager (line 57) | class CompilerContextManager[ContextLevel_T: ContextLevel](
method __init__ (line 60) | def __init__(
method __enter__ (line 70) | def __enter__(self) -> ContextLevel_T:
method __exit__ (line 73) | def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> N...
class CompilerReentryContextManager (line 77) | class CompilerReentryContextManager[ContextLevel_T: ContextLevel](
method __init__ (line 80) | def __init__(
method __enter__ (line 88) | def __enter__(self) -> ContextLevel_T:
method __exit__ (line 91) | def __exit__(self, exc_type: Any, exc_value: Any, traceback: Any) -> N...
class CompilerContext (line 95) | class CompilerContext[ContextLevel_T: ContextLevel]:
method __init__ (line 100) | def __init__(self, initial: ContextLevel_T) -> None:
method push (line 104) | def push(
method _push (line 111) | def _push(
method pop (line 138) | def pop(self) -> None:
method new (line 142) | def new(
method current (line 152) | def current(self) -> ContextLevel_T:
class SimpleCounter (line 156) | class SimpleCounter:
method __init__ (line 159) | def __init__(self) -> None:
method nextval (line 162) | def nextval(self, name: str = 'default') -> int:
class AliasGenerator (line 167) | class AliasGenerator(SimpleCounter):
method get (line 168) | def get(self, hint: str = '') -> str:
FILE: edb/common/debug.py
class FlagsMeta (line 49) | class FlagsMeta(type):
method __new__ (line 50) | def __new__(mcls, name, bases, dct):
method __iter__ (line 62) | def __iter__(cls):
class Flag (line 66) | class Flag:
method __init__ (line 67) | def __init__(self, *, doc: str, default: bool=False):
class flags (line 73) | class flags(metaclass=FlagsMeta):
function timeit (line 194) | def timeit(title='block'):
function header (line 202) | def header(*args):
function dump (line 208) | def dump(*args, **kwargs):
function dumps (line 213) | def dumps(*args, **kwargs):
function dump_code (line 218) | def dump_code(*args, **kwargs):
function dump_sql (line 223) | def dump_sql(sql, *args, **kwargs):
function dump_edgeql (line 230) | def dump_edgeql(eql, *args, **kwargs):
function set_trace (line 235) | def set_trace(**kwargs):
function print (line 250) | def print(*args):
function init_debug_flags (line 254) | def init_debug_flags():
FILE: edb/common/devmode.py
class CoverageConfig (line 33) | class CoverageConfig(NamedTuple):
method to_json (line 39) | def to_json(self) -> str:
method from_json (line 43) | def from_json(cls, js: str):
method save_to_environ (line 47) | def save_to_environ(self):
method from_environ (line 53) | def from_environ(cls) -> Optional['CoverageConfig']:
method new_custom_coverage_object (line 61) | def new_custom_coverage_object(cls, **conf):
method new_coverage_object (line 72) | def new_coverage_object(self):
method start_coverage_if_requested (line 80) | def start_coverage_if_requested(cls):
method enable_coverage_if_requested (line 91) | def enable_coverage_if_requested(cls):
function enable_dev_mode (line 105) | def enable_dev_mode(enabled: bool = True):
function is_in_dev_mode (line 109) | def is_in_dev_mode() -> bool:
function get_dev_mode_cache_dir (line 114) | def get_dev_mode_cache_dir() -> pathlib.Path:
function get_dev_mode_data_dir (line 124) | def get_dev_mode_data_dir() -> pathlib.Path:
FILE: edb/common/english.py
function add_a (line 23) | def add_a(word):
FILE: edb/common/enum.py
class StrEnum (line 26) | class StrEnum(str, enum.Enum):
method __str__ (line 28) | def __str__(self):
class OrderedEnumMixin (line 33) | class OrderedEnumMixin():
method _index_of (line 36) | def _index_of(cls, value):
method __lt__ (line 39) | def __lt__(self, other):
FILE: edb/common/exceptions.py
function _get_contexts (line 25) | def _get_contexts(ex, *, auto_init=False):
function add_context (line 36) | def add_context(ex, context):
function replace_context (line 50) | def replace_context(ex, context):
function get_context (line 55) | def get_context(ex, context_class):
function iter_contexts (line 65) | def iter_contexts(ex, ctx_class=None):
class ExceptionContext (line 76) | class ExceptionContext:
class DefaultExceptionContext (line 80) | class DefaultExceptionContext(ExceptionContext):
method __init__ (line 83) | def __init__(self, hint=None, details=None):
function _is_internal_error (line 93) | def _is_internal_error(exc):
function excepthook (line 101) | def excepthook(exctype, exc, tb):
function install_excepthook (line 136) | def install_excepthook():
function uninstall_excepthook (line 140) | def uninstall_excepthook():
FILE: edb/common/levenshtein.py
function distance (line 23) | def distance(s: str, t: str) -> int:
FILE: edb/common/log.py
class EdgeDBLogger (line 31) | class EdgeDBLogger(logging.Logger):
method makeRecord (line 33) | def makeRecord(
function early_setup (line 56) | def early_setup():
FILE: edb/common/lru.py
class LRUMapping (line 30) | class LRUMapping(collections.abc.MutableMapping):
method __init__ (line 49) | def __init__(self, *, maxsize):
method __getitem__ (line 58) | def __getitem__(self, key):
method __setitem__ (line 63) | def __setitem__(self, key, o):
method __delitem__ (line 72) | def __delitem__(self, key):
method __contains__ (line 75) | def __contains__(self, key):
method __len__ (line 78) | def __len__(self):
method __iter__ (line 81) | def __iter__(self):
class _NoPickle (line 85) | class _NoPickle:
method __init__ (line 86) | def __init__(self, obj):
method __bool__ (line 89) | def __bool__(self):
method __getstate__ (line 92) | def __getstate__(self):
method __setstate__ (line 95) | def __setstate__(self, _d):
function lru_method_cache (line 99) | def lru_method_cache[Tf: Callable](
function method_cache (line 130) | def method_cache[Tf: Callable](f: Tf) -> Tf:
function clear_method_cache (line 134) | def clear_method_cache[Tf](method: Tf) -> None:
function per_job_lru_cache (line 145) | def per_job_lru_cache[Tf: Callable](
function clear_lru_caches (line 162) | def clear_lru_caches():
FILE: edb/common/markup/__init__.py
class MarkupCapableMixin (line 33) | class MarkupCapableMixin:
method __init_subclass__ (line 35) | def __init_subclass__(cls, **kwargs):
class MarkupExceptionContext (line 41) | class MarkupExceptionContext(
method as_markup (line 47) | def as_markup(cls, *, ctx):
function _serialize (line 51) | def _serialize(obj, trim=True, kwargs=None):
function dumps (line 59) | def dumps(obj, header=None, trim=True):
function _dump (line 66) | def _dump(markup, header, file):
function dump (line 72) | def dump(*objs, file=None, trim=True, marker=None, **kwargs):
function dump_code (line 82) | def dump_code(code: str, *, lexer='python', header=None, file=None):
function dump_callstack (line 87) | def dump_callstack(f=None, *, limit=None, header=None, file=None, trim=T...
FILE: edb/common/markup/elements/base.py
class MarkupMeta (line 26) | class MarkupMeta(StructMeta):
method __new__ (line 27) | def __new__(mcls, name, bases, dct, ns=None, **kwargs):
method __init__ (line 46) | def __init__(cls, name, bases, dct, ns=None, **kwargs):
method __instancecheck__ (line 49) | def __instancecheck__(cls, inst):
method __subclasscheck__ (line 59) | def __subclasscheck__(cls, subcls):
class Markup (line 66) | class Markup(RTStruct, metaclass=MarkupMeta, use_slots=True):
class OverflowBarier (line 74) | class OverflowBarier(Markup):
class SerializationError (line 78) | class SerializationError(Markup):
FILE: edb/common/markup/elements/code.py
class BaseCode (line 27) | class BaseCode(base.Markup, ns='code'):
class Token (line 31) | class Token(BaseCode):
class Code (line 35) | class Code(BaseCode):
class Whitespace (line 41) | class Whitespace(Token):
class Comment (line 45) | class Comment(Token):
class Keyword (line 49) | class Keyword(Token):
class Type (line 53) | class Type(Token):
class Operator (line 57) | class Operator(Token):
class Name (line 61) | class Name(Token):
class Constant (line 65) | class Constant(Name):
class BuiltinName (line 69) | class BuiltinName(Name):
class FunctionName (line 73) | class FunctionName(Name):
class ClassName (line 77) | class ClassName(Name):
class Decorator (line 81) | class Decorator(Token):
class Attribute (line 85) | class Attribute(Token):
class Tag (line 89) | class Tag(Token):
class Literal (line 93) | class Literal(Token):
class String (line 97) | class String(Literal):
class Number (line 101) | class Number(Literal):
class Punctuation (line 105) | class Punctuation(Token):
class Error (line 109) | class Error(Token):
FILE: edb/common/markup/elements/doc.py
class DocMarkup (line 29) | class DocMarkup(base.Markup, ns='doc'):
class Marker (line 33) | class Marker(DocMarkup):
class Section (line 37) | class Section(DocMarkup):
class SubNode (line 43) | class SubNode(DocMarkup):
class Text (line 47) | class Text(DocMarkup):
class SourceCode (line 51) | class SourceCode(DocMarkup):
class Diff (line 55) | class Diff(DocMarkup):
method get_diff (line 59) | def get_diff(
class ValueDiff (line 73) | class ValueDiff(DocMarkup):
FILE: edb/common/markup/elements/lang.py
class LangMarkup (line 29) | class LangMarkup(base.Markup, ns='lang'):
class Number (line 33) | class Number(LangMarkup):
class String (line 37) | class String(LangMarkup):
class MultilineString (line 41) | class MultilineString(LangMarkup):
class Ref (line 45) | class Ref(LangMarkup):
method __repr__ (line 49) | def __repr__(self):
class BaseObject (line 53) | class BaseObject(LangMarkup):
class Object (line 59) | class Object(BaseObject):
class List (line 66) | class List(BaseObject):
class Dict (line 73) | class Dict(BaseObject):
class TreeNodeChild (line 79) | class TreeNodeChild(BaseObject):
class TreeNode (line 87) | class TreeNode(BaseObject):
method add_child (line 92) | def add_child(self, *, label=None, node):
class NoneConstantType (line 96) | class NoneConstantType(LangMarkup):
class TrueConstantType (line 100) | class TrueConstantType(LangMarkup):
class FalseConstantType (line 104) | class FalseConstantType(LangMarkup):
class Constants (line 108) | class Constants:
class TracebackPoint (line 114) | class TracebackPoint(BaseObject):
method load_source (line 128) | def load_source(self, window=3, lines=None):
class Traceback (line 160) | class Traceback(BaseObject):
class ExceptionContext (line 165) | class ExceptionContext(BaseObject):
class _Exception (line 173) | class _Exception(Object):
class Exception (line 177) | class Exception(_Exception):
FILE: edb/common/markup/format.py
function xrepr (line 23) | def xrepr(obj, *, max_len=None):
FILE: edb/common/markup/renderers/styles.py
class StylesTable (line 25) | class StylesTable:
method __getattr__ (line 26) | def __getattr__(self, key):
class Dark16 (line 32) | class Dark16(StylesTable):
class Dark256 (line 81) | class Dark256(StylesTable):
FILE: edb/common/markup/renderers/terminal.py
class Buffer (line 48) | class Buffer:
method __init__ (line 49) | def __init__(
method new_line (line 64) | def new_line(self, lines=1):
method indent (line 69) | def indent(self, auto_new_line=True):
method non_folded_space (line 79) | def non_folded_space(self, space=' '):
method folded_space (line 82) | def folded_space(self, space=' '):
method foldable_lines (line 86) | def foldable_lines(self):
method non_foldable_lines (line 92) | def non_foldable_lines(self):
method mark_line_break (line 97) | def mark_line_break(self):
method write (line 100) | def write(self, s, style=None):
method header (line 107) | def header(self, s, style=None, level=1):
method flush (line 114) | def flush(self):
class BaseRenderer (line 238) | class BaseRenderer:
method __init__ (line 239) | def __init__(self, *, indent_with=' ' * 4, max_width=None, styles=None):
method _render (line 246) | def _render(self, markup):
method _render_header (line 280) | def _render_header(self, str, style=None, level=1):
method _render_unknown (line 283) | def _render_unknown(self, element):
method _render_Markup (line 287) | def _render_Markup(self, element):
method _render_OverflowBarier (line 291) | def _render_OverflowBarier(self, element):
method _render_SerializationError (line 294) | def _render_SerializationError(self, element):
method renders (line 301) | def renders(cls, markup, styles=None, max_width=None):
class DocRenderer (line 307) | class DocRenderer(BaseRenderer):
method _render_doc_Text (line 308) | def _render_doc_Text(self, element):
method _render_doc_SourceCode (line 311) | def _render_doc_SourceCode(self, element):
method _render_doc_Marker (line 314) | def _render_doc_Marker(self, element):
method _render_doc_SubNode (line 318) | def _render_doc_SubNode(self, element):
method _render_doc_Section (line 322) | def _render_doc_Section(self, element):
method _render_doc_ValueDiff (line 331) | def _render_doc_ValueDiff(self, element):
method _render_doc_Diff (line 339) | def _render_doc_Diff(self, element):
class LangRenderer (line 355) | class LangRenderer(BaseRenderer):
method __init__ (line 356) | def __init__(self, *args, **kwargs):
method _render_lang_TreeNode (line 360) | def _render_lang_TreeNode(self, element):
method _render_lang_Ref (line 395) | def _render_lang_Ref(self, element):
method _render_lang_List (line 400) | def _render_lang_List(self, element):
method _render_mapping_ (line 419) | def _render_mapping_(self, mapping, trimmed=False):
method _render_lang_Dict (line 440) | def _render_lang_Dict(self, element):
method _render_lang_Object (line 444) | def _render_lang_Object(self, element):
method _render_lang_String (line 460) | def _render_lang_String(self, element):
method _render_lang_MultilineString (line 464) | def _render_lang_MultilineString(self, element):
method _render_lang_Number (line 476) | def _render_lang_Number(self, element):
method _render_lang_NoneConstantType (line 479) | def _render_lang_NoneConstantType(self, element):
method _render_lang_TrueConstantType (line 482) | def _render_lang_TrueConstantType(self, element):
method _render_lang_FalseConstantType (line 485) | def _render_lang_FalseConstantType(self, element):
method _render_lang_TracebackPoint (line 488) | def _render_lang_TracebackPoint(self, element):
method _render_lang_Traceback (line 556) | def _render_lang_Traceback(self, element):
method _render_lang_ExceptionContext (line 560) | def _render_lang_ExceptionContext(self, element):
method _render_lang_Exception (line 569) | def _render_lang_Exception(self, element):
class CodeRenderer (line 616) | class CodeRenderer(BaseRenderer):
method _write_code_token (line 617) | def _write_code_token(self, val, style):
method _render_code_Token (line 624) | def _render_code_Token(self, element):
method _render_code_Comment (line 627) | def _render_code_Comment(self, element):
method _render_code_Decorator (line 630) | def _render_code_Decorator(self, element):
method _render_code_String (line 633) | def _render_code_String(self, element):
method _render_code_Number (line 636) | def _render_code_Number(self, element):
method _render_code_ClassName (line 639) | def _render_code_ClassName(self, element):
method _render_code_FunctionName (line 642) | def _render_code_FunctionName(self, element):
method _render_code_Constant (line 645) | def _render_code_Constant(self, element):
method _render_code_Keyword (line 648) | def _render_code_Keyword(self, element):
method _render_code_Punctuation (line 651) | def _render_code_Punctuation(self, element):
method _render_code_Tag (line 654) | def _render_code_Tag(self, element):
method _render_code_Attribute (line 657) | def _render_code_Attribute(self, element):
method _render_code_Code (line 660) | def _render_code_Code(self, element):
class Renderer (line 670) | class Renderer(DocRenderer, LangRenderer, CodeRenderer):
function render (line 677) | def render(markup, *, ensure_newline=True, file=None, renderer=Renderer):
FILE: edb/common/markup/serializer/__init__.py
class settings (line 23) | class settings:
FILE: edb/common/markup/serializer/base.py
function no_ref_detect (line 52) | def no_ref_detect[T](func: T) -> T:
function serializer (line 61) | def serializer(obj, *, ctx):
class Context (line 66) | class Context:
method __init__ (line 71) | def __init__(self, trim=True, kwargs=None):
method censored (line 80) | def censored(self, key):
method reset (line 83) | def reset(self):
function serialize (line 90) | def serialize(obj, *, ctx):
function _serialize_traceback_point (line 139) | def _serialize_traceback_point(
function serialize_traceback_point (line 174) | def serialize_traceback_point(
function serialize_callstack_point (line 192) | def serialize_callstack_point(
function serialize_traceback (line 210) | def serialize_traceback(obj, *, ctx):
function serialize_exception (line 222) | def serialize_exception(obj, *, ctx):
function serialize_generic_exception_context (line 279) | def serialize_generic_exception_context(obj, *, ctx):
function serialize_default_exception_context (line 286) | def serialize_default_exception_context(obj, *, ctx):
function serialize_none (line 302) | def serialize_none(obj, *, ctx):
function serialize_bool (line 308) | def serialize_bool(obj, *, ctx):
function serialize_number (line 319) | def serialize_number(obj, *, ctx):
function serialize_str (line 325) | def serialize_str(obj, *, ctx):
function serialize_sequence (line 337) | def serialize_sequence(obj, *, ctx, trim_at=100):
function serialize_mapping (line 362) | def serialize_mapping(obj, *, ctx, trim_at=100):
function serialize_dataclass (line 378) | def serialize_dataclass(obj, *, ctx):
function serialize_unknown_object (line 403) | def serialize_unknown_object(obj, *, ctx):
function _serialize_known_object (line 409) | def _serialize_known_object(obj, attrs, *, ctx):
FILE: edb/common/markup/serializer/code.py
function serialize_code (line 30) | def serialize_code(code, lexer='does not matter'):
function get_code_class (line 61) | def get_code_class(token_type):
class MarkupFormatter (line 72) | class MarkupFormatter:
method format (line 73) | def format(self, tokens):
function serialize_code (line 82) | def serialize_code(code, lexer='python'):
FILE: edb/common/markup/serializer/logging.py
function serialize_logging_record (line 28) | def serialize_logging_record(obj, *, ctx):
FILE: edb/common/ordered.py
class OrderedSet (line 34) | class OrderedSet[K: Hashable](MutableSet[K]):
method __init__ (line 38) | def __init__(self, iterable: Optional[Iterable[K]] = None) -> None:
method add (line 44) | def add(self, item: K) -> None:
method discard (line 47) | def discard(self, item: K) -> None:
method update (line 50) | def update(self, iterable: Iterable[K]) -> None:
method replace (line 54) | def replace(self, existing: K, new: K) -> None:
method __len__ (line 63) | def __len__(self) -> int:
method __contains__ (line 66) | def __contains__(self, item: Any) -> bool:
method __iter__ (line 69) | def __iter__(self) -> Iterator[K]:
method __reversed__ (line 72) | def __reversed__(self) -> Iterator[K]:
method __repr__ (line 75) | def __repr__(self) -> str:
method __eq__ (line 80) | def __eq__(self, other: Any) -> bool:
method copy (line 88) | def copy(self) -> OrderedSet[K]:
method clear (line 91) | def clear(self) -> None:
FILE: edb/common/ordered.pyi
class OrderedSet (line 36) | class OrderedSet[_H: Hashable](MutableSet[_H]):
method __init__ (line 37) | def __init__(self, iterable: Optional[Iterable[_H]] = None) -> None: ...
method __and__ (line 38) | def __and__(self, s: AbstractSet[Any]) -> OrderedSet[_H]: ...
method __or__ (line 39) | def __or__[_T](self, s: AbstractSet[_T]) -> OrderedSet[_H | _T]: ...
method __sub__ (line 40) | def __sub__(self, s: AbstractSet[Any]) -> OrderedSet[_H]: ...
method __xor__ (line 41) | def __xor__[_T](self, s: AbstractSet[_T]) -> OrderedSet[_H | _T]: ...
method __ior__ (line 42) | def __ior__[_S](self, s: AbstractSet[_S]) -> OrderedSet[_H | _S]: ...
method __iand__ (line 43) | def __iand__[_T](self, s: AbstractSet[Any]) -> OrderedSet[_T]: ...
method __ixor__ (line 44) | def __ixor__[_S](self, s: AbstractSet[_S]) -> OrderedSet[_H | _S]: ...
method __isub__ (line 45) | def __isub__[_T](self, s: AbstractSet[Any]) -> OrderedSet[_H]: ...
method add (line 49) | def add(self, item: _H) -> None: ...
method discard (line 50) | def discard(self, item: _H) -> None: ...
method update (line 51) | def update(self, s: Iterable[_H]) -> None: ...
method replace (line 52) | def replace(self, existing: _H, new: _H) -> None: ...
method __len__ (line 53) | def __len__(self) -> int: ...
method __contains__ (line 54) | def __contains__(self, item: Any) -> bool: ...
method __iter__ (line 55) | def __iter__(self) -> Iterator[_H]: ...
method __reversed__ (line 56) | def __reversed__(self) -> Iterator[_H]: ...
method copy (line 57) | def copy(self) -> OrderedSet[_H]: ...
method clear (line 58) | def clear(self) -> None: ...
FILE: edb/common/parametric.py
class ParametricType (line 53) | class ParametricType:
method __init_subclass__ (line 61) | def __init_subclass__(cls) -> None:
method _init_parametric_base (line 72) | def _init_parametric_base(cls) -> None:
method _init_parametric_user (line 125) | def _init_parametric_user(cls) -> None:
method __init__ (line 196) | def __init__(self) -> None:
method __class_getitem__ (line 210) | def __class_getitem__(
method is_fully_resolved (line 288) | def is_fully_resolved(cls) -> bool:
method resolve_types (line 292) | def resolve_types(cls, globalns: dict[str, Any]) -> None:
method is_anon_parametrized (line 317) | def is_anon_parametrized(cls) -> bool:
method __reduce__ (line 320) | def __reduce__(self) -> tuple[Any, ...]:
class SingleParametricType (line 326) | class SingleParametricType(ParametricType, Generic[T]): # noqa: UP046
class KeyValueParametricType (line 333) | class KeyValueParametricType(ParametricType, Generic[T, V]): # noqa: UP046
function _type_repr (line 341) | def _type_repr(obj: Any) -> str:
FILE: edb/common/parsing.py
class ParserSpecIncompatibleError (line 40) | class ParserSpecIncompatibleError(Exception):
class Token (line 44) | class Token(parsing.Token):
method __init_subclass__ (line 48) | def __init_subclass__(
method __init__ (line 78) | def __init__(self, val, clean_value, span=None):
method __repr__ (line 84) | def __repr__(self):
function inline (line 88) | def inline(argument_index: int):
class Nonterm (line 101) | class Nonterm(parsing.Nonterm):
method __init_subclass__ (line 104) | def __init_subclass__(cls, *, is_internal=False, **kwargs):
class ListNonterm (line 148) | class ListNonterm(Nonterm, is_internal=True):
method __init_subclass__ (line 149) | def __init_subclass__(
method __iter__ (line 215) | def __iter__(self):
method __len__ (line 218) | def __len__(self):
method add_list_reductions (line 222) | def add_list_reductions(cls, *, element, separator=None):
method component_name (line 244) | def component_name(component: type) -> Optional[str]:
method _reduce_list (line 256) | def _reduce_list(self, lst, el):
method _reduce_el (line 265) | def _reduce_el(self, el):
method _reduce_inner (line 274) | def _reduce_inner(self, inner):
function precedence (line 278) | def precedence(precedence):
class Precedence (line 287) | class Precedence(parsing.Precedence):
method __init_subclass__ (line 291) | def __init_subclass__(
method for_token (line 330) | def for_token(cls, token_name):
function load_parser_spec (line 334) | def load_parser_spec(mod: types.ModuleType) -> parsing.Spec:
function _localpath (line 343) | def _localpath(mod, type):
function load_spec_productions (line 349) | def load_spec_productions(
function spec_to_json (line 365) | def spec_to_json(spec: parsing.Spec) -> str:
function sort_productions (line 438) | def sort_productions(
function production_name (line 448) | def production_name(prod: Any) -> tuple[str, ...]:
FILE: edb/common/prometheus.py
function calc_buckets (line 67) | def calc_buckets(
function per_order_buckets (line 81) | def per_order_buckets(
class Unit (line 103) | class Unit(enum.Enum):
class Registry (line 118) | class Registry:
method __init__ (line 124) | def __init__(self, *, prefix: str | None = None):
method _add_metric (line 129) | def _add_metric(self, metric: BaseMetric) -> None:
method now (line 137) | def now(self) -> float:
method set_info (line 140) | def set_info(self, name: str, desc: str, /, **kwargs: str) -> None:
method new_counter (line 143) | def new_counter(
method new_labeled_counter (line 155) | def new_labeled_counter(
method new_gauge (line 168) | def new_gauge(
method new_labeled_gauge (line 180) | def new_labeled_gauge(
method new_histogram (line 193) | def new_histogram(
method new_labeled_histogram (line 206) | def new_labeled_histogram(
method generate (line 222) | def generate(self, **label_filters: str) -> str:
class BaseMetric (line 230) | class BaseMetric:
method __init__ (line 254) | def __init__(
method _augment_metric_name (line 272) | def _augment_metric_name(self, name: str) -> str:
method get_name (line 277) | def get_name(self) -> str:
method _validate_name (line 280) | def _validate_name(self, name: str) -> None:
method _validate_label_names (line 285) | def _validate_label_names(self, labels: tuple[str, ...]) -> None:
method _validate_label_values (line 290) | def _validate_label_values(
method _make_label_filter (line 300) | def _make_label_filter(
method _generate (line 324) | def _generate(self, buffer: list[str], **label_filters: str) -> None:
class Info (line 328) | class Info(BaseMetric):
method __init__ (line 337) | def __init__(self, *args: typing.Any, **labels: str) -> None:
method _generate (line 342) | def _generate(self, buffer: list[str], **label_filters: str) -> None:
class BaseCounter (line 358) | class BaseCounter(BaseMetric):
method __init__ (line 367) | def __init__(self, *args: typing.Any) -> None:
method inc (line 371) | def inc(self, value: float = 1.0) -> None:
method _generate (line 377) | def _generate(self, buffer: list[str], **label_filters: str) -> None:
class BaseLabeledCounter (line 393) | class BaseLabeledCounter(BaseMetric):
method __init__ (line 404) | def __init__(self, *args: typing.Any, labels: tuple[str, ...]) -> None:
method inc (line 411) | def inc(self, value: float = 1.0, *labels: str) -> None:
method _generate (line 422) | def _generate(self, buffer: list[str], **label_filters: str) -> None:
method clear (line 455) | def clear(self, label_filter: typing.Callable[..., bool]) -> None:
class _TotalMixin (line 462) | class _TotalMixin(BaseMetric):
method _augment_metric_name (line 464) | def _augment_metric_name(self, name: str) -> str:
class Counter (line 472) | class Counter(_TotalMixin, BaseCounter):
class LabeledCounter (line 476) | class LabeledCounter(_TotalMixin, BaseLabeledCounter):
class Gauge (line 480) | class Gauge(BaseCounter):
method inc (line 487) | def inc(self, value: float = 1.0) -> None:
method dec (line 490) | def dec(self, value: float = 1.0) -> None:
method set (line 493) | def set(self, value: float) -> None:
class LabeledGauge (line 497) | class LabeledGauge(BaseLabeledCounter):
method inc (line 504) | def inc(self, value: float = 1.0, *labels: str) -> None:
method dec (line 512) | def dec(self, value: float = 1.0, *labels: str) -> None:
method set (line 515) | def set(self, value: float = 1.0, *labels: str) -> None:
class BaseHistogram (line 524) | class BaseHistogram(BaseMetric):
method __init__ (line 536) | def __init__(
class Histogram (line 556) | class Histogram(BaseHistogram):
method __init__ (line 561) | def __init__(
method observe (line 568) | def observe(self, value: float) -> None:
method _generate (line 573) | def _generate(self, buffer: list[str], **label_filters: str) -> None:
class LabeledHistogram (line 604) | class LabeledHistogram(BaseHistogram):
method __init__ (line 610) | def __init__(
method observe (line 621) | def observe(self, value: float, *labels: str) -> None:
method _generate (line 635) | def _generate(self, buffer: list[str], **label_filters: str) -> None:
function _format_desc (line 684) | def _format_desc(desc: str) -> str:
function _format_label_val (line 689) | def _format_label_val(desc: str) -> str:
FILE: edb/common/retryloop.py
function const_backoff (line 33) | def const_backoff(delay: float) -> Callable[[int], float]:
function exp_backoff (line 37) | def exp_backoff(
class RetryLoop (line 48) | class RetryLoop:
method __init__ (line 50) | def __init__(
method __aiter__ (line 78) | def __aiter__(self) -> RetryLoop:
method __anext__ (line 81) | async def __anext__(self) -> RetryIteration:
class RetryIteration (line 98) | class RetryIteration:
method __init__ (line 100) | def __init__(self, loop: RetryLoop) -> None:
method __aenter__ (line 103) | async def __aenter__(self) -> RetryIteration:
method __aexit__ (line 106) | async def __aexit__(
FILE: edb/common/secretkey.py
function generate_tls_cert (line 28) | def generate_tls_cert(
FILE: edb/common/signalctl.py
function _release_waiter (line 28) | def _release_waiter(waiter, *args):
class SignalError (line 33) | class SignalError(Exception):
method __init__ (line 34) | def __init__(self, signo):
method __str__ (line 37) | def __str__(self):
class SignalHandler (line 44) | class SignalHandler:
method __init__ (line 45) | def __init__(self, callback, signals, controller):
method done (line 53) | def done(self):
method cancelled (line 56) | def cancelled(self):
method set_result (line 59) | def set_result(self, result):
method cancel (line 62) | def cancel(self):
class SignalController (line 68) | class SignalController:
method __init__ (line 75) | def __init__(self, *signals):
method __enter__ (line 80) | def __enter__(self):
method __exit__ (line 91) | def __exit__(self, exc_type, exc_val, exc_tb):
method _on_signal (line 115) | def _on_signal(self, signal):
method _register_waiter (line 120) | def _register_waiter(self, signal, waiter):
method _discard_waiter (line 123) | def _discard_waiter(self, signal, waiter):
method wait_for (line 130) | async def wait_for(self, fut, *, cancel_on=None):
method add_handler (line 239) | def add_handler(self, callback, signals=None) -> SignalHandler:
method _signal_callback (line 245) | def _signal_callback(cls, signal):
FILE: edb/common/span.py
class Span (line 50) | class Span(markup.MarkupExceptionContext):
method __init__ (line 55) | def __init__(
method empty (line 76) | def empty(cls) -> Span:
method __str__ (line 84) | def __str__(self):
method __getstate__ (line 89) | def __getstate__(self):
method _calc_points (line 94) | def _calc_points(self):
method start_point (line 105) | def start_point(self):
method end_point (line 111) | def end_point(self):
method as_markup (line 118) | def as_markup(cls, self, *, ctx):
function _get_span (line 155) | def _get_span(items, *, reverse=False) -> Optional[Span]:
function get_span (line 174) | def get_span(*kids: list[ast.AST]):
function merge_spans (line 189) | def merge_spans(spans: Iterable[Span]) -> Span | None:
class SpanPropagator (line 206) | class SpanPropagator(ast.NodeVisitor):
method __init__ (line 218) | def __init__(self, default=None, full_pass=False):
method repeated_node_visit (line 223) | def repeated_node_visit(self, node):
method container_visit (line 226) | def container_visit(self, node) -> list[Span | None]:
method generic_visit (line 242) | def generic_visit(self, node):
class SpanValidator (line 260) | class SpanValidator(ast.NodeVisitor):
method generic_visit (line 261) | def generic_visit(self, node):
function find_by_source_position (line 278) | def find_by_source_position[T: ast.AST](
class SpanFinder (line 286) | class SpanFinder(ast.NodeVisitor):
method __init__ (line 290) | def __init__(self, target_offset: int):
method generic_visit (line 295) | def generic_visit(self, node, *, combine_results=None) -> Any:
function span_contains (line 313) | def span_contains(span: Span, target_offset: int) -> bool:
FILE: edb/common/struct.py
class ProtoField (line 39) | class ProtoField:
class NoDefaultT (line 43) | class NoDefaultT(enum.Enum):
class Field (line 50) | class Field[T](ProtoField):
method __init__ (line 58) | def __init__(
method copy (line 86) | def copy(self) -> Field[T]:
method adapt (line 92) | def adapt(self, value: Any) -> T:
method required (line 104) | def required(self) -> bool:
class StructMeta (line 108) | class StructMeta(type):
method __new__ (line 113) | def __new__[StructMeta_T: StructMeta](
method get_field (line 180) | def get_field(cls, name: str) -> Optional[Field[Any]]:
method get_fields (line 183) | def get_fields(cls, sorted: bool = False) -> dict[str, Field[Any]]:
method get_ownfields (line 186) | def get_ownfields(cls) -> dict[str, Field[Any]]:
class Struct (line 191) | class Struct(metaclass=StructMeta):
method __init__ (line 232) | def __init__(self, **kwargs: Any) -> None:
method __setstate__ (line 240) | def __setstate__(self, state: Mapping[str, Any]) -> None:
method update (line 252) | def update(self, *args: Any, **kwargs: Any) -> None:
method setdefaults (line 262) | def setdefaults(self) -> list[str]:
method set_default_value (line 273) | def set_default_value(self, field_name: str, value: Any) -> None:
method formatfields (line 276) | def formatfields(
method _copy_and_replace (line 286) | def _copy_and_replace[Struct_T: Struct](
method copy_with_class (line 296) | def copy_with_class[Struct_T: Struct](
method copy (line 301) | def copy(self: Self) -> Self:
method replace (line 304) | def replace(self: Self, **replacements: Any) -> Self:
method items (line 307) | def items(self) -> Iterator[tuple[str, Any]]:
method as_tuple (line 311) | def as_tuple(self) -> tuple[Any, ...]:
method __iter__ (line 319) | def __iter__(self) -> Iterator[str]:
method __str__ (line 322) | def __str__(self) -> str:
method __repr__ (line 331) | def __repr__(self) -> str:
method _init_fields (line 340) | def _init_fields(
method _check_init_argnames (line 352) | def _check_init_argnames(self, args: Iterable[str]) -> None:
method _getdefault (line 362) | def _getdefault[T](
method get_field_value (line 380) | def get_field_value(self, field_name: str) -> Any:
class RTStruct (line 394) | class RTStruct(Struct):
method __init__ (line 399) | def __init__(self, **kwargs: Any) -> None:
method __setstate__ (line 412) | def __setstate__(self, state: Mapping[str, Any]) -> None:
method __setattr__ (line 419) | def __setattr__(self, name: str, value: Any) -> None:
method _check_field_type (line 427) | def _check_field_type[T](self, field: Field[T], name: str, value: Any)...
class MixedStructMeta (line 468) | class MixedStructMeta(StructMeta):
method __new__ (line 469) | def __new__(
class MixedStruct (line 488) | class MixedStruct(Struct, metaclass=MixedStructMeta):
method _check_init_argnames (line 489) | def _check_init_argnames(self, args: Iterable[Any]) -> None:
class MixedRTStruct (line 493) | class MixedRTStruct(RTStruct, metaclass=MixedStructMeta):
method _check_init_argnames (line 494) | def _check_init_argnames(self, args: Iterable[Any]) -> None:
FILE: edb/common/supervisor.py
class Supervisor (line 27) | class Supervisor:
method __init__ (line 29) | def __init__(self, *, _name, _loop, _private):
method create (line 44) | async def create(cls, *, name: Optional[str] = None):
method __repr__ (line 48) | def __repr__(self):
method create_task (line 61) | def create_task(self, coro):
method cancel (line 74) | async def cancel(self):
method wait (line 82) | async def wait(self):
method _wait (line 101) | async def _wait(self):
method _on_task_done (line 125) | def _on_task_done(self, task):
method _cancel (line 147) | def _cancel(self):
method _is_base_error (line 154) | def _is_base_error(self, exc):
FILE: edb/common/term.py
function isatty (line 37) | def isatty(fileno):
function set_colorization_option (line 46) | def set_colorization_option(option):
function max_colors (line 51) | def max_colors():
function supports_colors (line 77) | def supports_colors(fileno):
function size (line 88) | def size(fileno):
function use_colors (line 107) | def use_colors(fileno=None):
function _is_opt_getter (line 379) | def _is_opt_getter(name: str):
function _set_opt_setter (line 383) | def _set_opt_setter(name: str):
class AbstractStyle (line 387) | class AbstractStyle:
method __init__ (line 411) | def __init__(
method _filter_color (line 438) | def _filter_color(self, color):
method _get_color (line 441) | def _get_color(self):
method _set_color (line 444) | def _set_color(self, color):
method _get_bgcolor (line 450) | def _get_bgcolor(self):
method _set_bgcolor (line 453) | def _set_bgcolor(self, color):
method empty (line 460) | def empty(self):
method _is_opt (line 463) | def _is_opt(self, name: str) -> bool:
method _set_opt (line 467) | def _set_opt(self, name, value):
method _recalc (line 490) | def _recalc(self):
method apply (line 514) | def apply(self, str):
class Style16 (line 522) | class Style16(AbstractStyle):
method _filter_color (line 537) | def _filter_color(self, color):
class Style256 (line 547) | class Style256(AbstractStyle):
method _filter_color (line 576) | def _filter_color(color):
class StylesTable (line 592) | class StylesTable:
method __getattr__ (line 595) | def __getattr__(self, key):
method dump (line 600) | def dump(self):
FILE: edb/common/token_bucket.py
class TokenBucket (line 22) | class TokenBucket:
method __init__ (line 28) | def __init__(self, capacity: float, token_per_sec: float):
method consume (line 34) | def consume(self, tokens: int) -> float:
FILE: edb/common/topological.py
class UnresolvedReferenceError (line 37) | class UnresolvedReferenceError(Exception):
class CycleError (line 41) | class CycleError(Exception):
method __init__ (line 42) | def __init__(
class DepGraphEntry (line 53) | class DepGraphEntry[K, V, T]:
method __init__ (line 68) | def __init__(
function sort_ex (line 91) | def sort_ex[K, V, T](
function sort (line 196) | def sort[K, V, T](
class MergeFunction (line 207) | class MergeFunction[V](Protocol):
method __call__ (line 209) | def __call__(
function normalize (line 218) | def normalize[K, V, T](
FILE: edb/common/traceback.py
function format_exception (line 24) | def format_exception(e: BaseException) -> str:
function format_stack_summary (line 35) | def format_stack_summary(stack: StackSummaryLike) -> list[str]:
class StandardStackSummary (line 39) | class StandardStackSummary(traceback.StackSummary):
method format (line 40) | def format(self) -> list[str]:
function _into_list_of_frames (line 44) | def _into_list_of_frames(a_list: StackSummaryLike):
function _format_stack_summary (line 65) | def _format_stack_summary(stack: list[traceback.FrameSummary]):
function _format_frame_summary (line 118) | def _format_frame_summary(frame: traceback.FrameSummary):
FILE: edb/common/turbo_uuid.pyi
class UUID (line 5) | class UUID(uuid.UUID):
method __init__ (line 6) | def __init__(self, inp: bytes | str) -> None:
FILE: edb/common/typeutils.py
function chain_decorators (line 28) | def chain_decorators[TC: Callable](
function downcast (line 39) | def downcast[T](typ: type[T], x: Any) -> T:
function not_none (line 44) | def not_none[T](x: Optional[T]) -> T:
function _is_container_type (line 50) | def _is_container_type(cls):
function _is_iterable_type (line 60) | def _is_iterable_type(cls):
function is_container (line 66) | def is_container(obj):
function is_container_type (line 71) | def is_container_type(type_):
FILE: edb/common/uuidgen.py
function uuid1mc (line 37) | def uuid1mc() -> uuid.UUID:
function uuid4 (line 49) | def uuid4() -> uuid.UUID:
function uuid5_bytes (line 54) | def uuid5_bytes(namespace: uuid.UUID, name: bytes | bytearray) -> uuid.U...
function uuid5 (line 62) | def uuid5(namespace: uuid.UUID, name: str) -> uuid.UUID:
function from_bytes (line 67) | def from_bytes(data: bytes) -> uuid.UUID:
FILE: edb/common/value_dispatch.py
class _ValueDispatchCallable (line 27) | class _ValueDispatchCallable[_T](Protocol):
method register (line 30) | def register(
method register_for_all (line 36) | def register_for_all(
method __call__ (line 42) | def __call__(__self, *args: Any, **kwargs: Any) -> _T: ...
function value_dispatch (line 45) | def value_dispatch[_T](func: Callable[..., _T]) -> _ValueDispatchCallabl...
FILE: edb/common/verutils.py
class VersionStage (line 41) | class VersionStage(enum.IntEnum):
class Version (line 49) | class Version(NamedTuple):
method __str__ (line 56) | def __str__(self):
function parse_version (line 66) | def parse_version(ver: str) -> Version:
function from_json (line 102) | def from_json(data: dict[str, Any]) -> Version:
FILE: edb/common/view_patterns.py
class NoMatch (line 80) | class NoMatch(Exception):
class ViewPatternMeta (line 84) | class ViewPatternMeta(type):
method __new__ (line 85) | def __new__(mcls, name, bases, clsdict, *, targets=(), **kwargs):
method __instancecheck__ (line 108) | def __instancecheck__(self, instance):
class ViewPattern (line 112) | class ViewPattern[_T](metaclass=ViewPatternMeta):
method match (line 117) | def match(cls, obj: object) -> _T:
FILE: edb/common/windowedsum.py
class WindowedSum (line 25) | class WindowedSum:
method __init__ (line 43) | def __init__(self) -> None:
method __iadd__ (line 49) | def __iadd__(self, val: float) -> WindowedSum:
method __int__ (line 54) | def __int__(self) -> int:
method __float__ (line 58) | def __float__(self) -> float:
method shift (line 62) | def shift(self) -> None:
FILE: edb/common/xdedent.py
function escape (line 66) | def escape(s: str) -> str:
function _parse (line 73) | def _parse(s: str, start: int) -> tuple[Rep, int]:
function _format_rep (line 100) | def _format_rep(rep: Rep) -> str:
function xdedent (line 131) | def xdedent(s: str) -> str:
FILE: edb/edgeql-parser/edgeql-parser-derive/src/lib.rs
function into_python (line 9) | pub fn into_python(input: TokenStream) -> TokenStream {
function impl_enum_into_python (line 23) | fn impl_enum_into_python(enum_: &mut syn::ItemEnum) -> TokenStream {
function infer_variants (line 69) | fn infer_variants(enum_: &syn::ItemEnum) -> Vec<Variant> {
type Variant (line 94) | struct Variant {
function impl_struct_into_python (line 98) | fn impl_struct_into_python(struct_: &mut syn::ItemStruct) -> TokenStream {
type PyChildField (line 153) | struct PyChildField {
function infer_fields (line 158) | fn infer_fields(r#struct: &mut syn::ItemStruct) -> (Vec<Ident>, Option<P...
function find_attr (line 181) | fn find_attr<'a>(attrs: &'a [Attribute], name: &'static str) -> Option<&...
function is_option (line 190) | fn is_option(ty: &Type) -> bool {
FILE: edb/edgeql-parser/edgeql-parser-python/src/errors.rs
type ParserResult (line 12) | pub struct ParserResult {
method pack (line 22) | fn pack(&self, py: Python) -> PyResult<Py<PyAny>> {
function parser_error_into_tuple (line 36) | pub fn parser_error_into_tuple(
FILE: edb/edgeql-parser/edgeql-parser-python/src/hash.rs
type Hasher (line 9) | pub struct Hasher {
method start_migration (line 16) | fn start_migration(parent_id: &Bound<PyString>) -> PyResult<Hasher> {
method add_source (line 23) | fn add_source(&self, py: Python, data: &Bound<PyString>) -> PyResult<P...
method make_migration_id (line 38) | fn make_migration_id(&self) -> PyResult<String> {
FILE: edb/edgeql-parser/edgeql-parser-python/src/keywords.rs
type AllKeywords (line 5) | pub struct AllKeywords {
function get_keywords (line 12) | pub fn get_keywords(py: Python) -> PyResult<AllKeywords> {
function prepare_keywords (line 23) | fn prepare_keywords<'a, 'py, I: IntoIterator<Item = &'a &'static str>>(
FILE: edb/edgeql-parser/edgeql-parser-python/src/lib.rs
function _edgeql_parser (line 16) | fn _edgeql_parser(py: Python, m: &Bound<PyModule>) -> PyResult<()> {
FILE: edb/edgeql-parser/edgeql-parser-python/src/normalize.rs
type Variable (line 10) | pub struct Variable {
type Entry (line 14) | pub struct Entry {
method from (line 44) | fn from(val: PackedEntry) -> Self {
type PackedEntry (line 25) | pub struct PackedEntry {
method from (line 33) | fn from(val: Entry) -> Self {
type Error (line 58) | pub enum Error {
function normalize (line 63) | pub fn normalize(text: &str) -> Result<Entry, Error> {
function is_operator (line 214) | fn is_operator(token: &Token) -> bool {
function serialize_tokens (line 229) | fn serialize_tokens(tokens: &[Token]) -> String {
function scan_vars (line 248) | fn scan_vars<'x, 'y: 'x, I>(tokens: I) -> Option<(bool, usize)>
function hash (line 275) | fn hash(text: &str) -> [u8; 64] {
function arg_type_cast (line 282) | fn arg_type_cast(typ: &'static str, var: String, span: Span) -> Token<'s...
function tokenize (line 298) | fn tokenize(s: &str) -> Vec<Token> {
function none (line 312) | fn none() {
function numeric (line 317) | fn numeric() {
function named (line 325) | fn named() {
function mixed (line 336) | fn mixed() {
FILE: edb/edgeql-parser/edgeql-parser-python/src/parser.rs
function parse (line 13) | pub fn parse(
function suggest_next_keywords (line 38) | pub fn suggest_next_keywords(
type CSTNode (line 59) | pub struct CSTNode {
type Production (line 67) | pub struct Production {
type Terminal (line 79) | pub struct Terminal {
function downcast_tokens (line 92) | fn downcast_tokens(
function get_spec (line 111) | fn get_spec() -> PyResult<&'static (parser::Spec, Py<PyAny>)> {
function preload_spec (line 121) | pub fn preload_spec(py: Python, spec_filepath: &Bound<PyString>) -> PyRe...
function save_spec (line 143) | pub fn save_spec(spec_json: &Bound<PyString>, dst: &Bound<PyString>) -> ...
function load_productions (line 156) | fn load_productions(py: Python<'_>, spec: &parser::Spec) -> PyResult<Py<...
type ParserCSTNode (line 168) | struct ParserCSTNode<'a>(&'a parser::CSTNode<'a>);
type Target (line 171) | type Target = CSTNode;
type Output (line 172) | type Output = Bound<'py, Self::Target>;
type Error (line 173) | type Error = PyErr;
function into_pyobject (line 175) | fn into_pyobject(self, py: Python<'py>) -> PyResult<Self::Output> {
FILE: edb/edgeql-parser/edgeql-parser-python/src/position.rs
type SourcePoint (line 10) | pub struct SourcePoint {
method from_offsets (line 17) | fn from_offsets(py: Python, data: &Bound<PyBytes>, offsets: Py<PyAny>)...
method from_lines_cols (line 34) | fn from_lines_cols(
method line (line 55) | fn line(&self) -> u64 {
method zero_based_line (line 59) | fn zero_based_line(&self) -> u64 {
method column (line 63) | fn column(&self) -> u64 {
method utf16column (line 67) | fn utf16column(&self) -> u64 {
method offset (line 71) | fn offset(&self) -> u64 {
method char_offset (line 75) | fn char_offset(&self) -> u64 {
function _offset_of_line (line 80) | fn _offset_of_line(text: &str, target: usize) -> Option<usize> {
function offset_of_line (line 115) | pub fn offset_of_line(text: &str, target: usize) -> PyResult<usize> {
function line_offsets (line 123) | fn line_offsets() {
FILE: edb/edgeql-parser/edgeql-parser-python/src/pynormalize.rs
function normalize (line 18) | pub fn normalize(py: Python<'_>, text: &Bound<PyString>) -> PyResult<Ent...
type Entry (line 33) | pub struct Entry {
method new (line 55) | pub fn new(py: Python, entry: crate::normalize::Entry) -> PyResult<Sel...
method get_variables (line 73) | fn get_variables(&self, py: Python) -> PyResult<Py<PyAny>> {
method pack (line 91) | fn pack(&self, py: Python) -> PyResult<Py<PyAny>> {
function serialize_extra (line 99) | pub fn serialize_extra(variables: &[Variable]) -> Result<Bytes, String> {
function serialize_all (line 161) | pub fn serialize_all<'a>(
type TokenizerValue (line 174) | pub struct TokenizerValue<'a>(pub &'a Value);
type Target (line 177) | type Target = PyAny;
type Output (line 178) | type Output = Bound<'py, Self::Target>;
type Error (line 179) | type Error = PyErr;
function into_pyobject (line 181) | fn into_pyobject(self, py: Python<'py>) -> PyResult<Self::Output> {
FILE: edb/edgeql-parser/edgeql-parser-python/src/tokenizer.rs
function tokenize (line 10) | pub fn tokenize(py: Python, s: &Bound<PyString>) -> PyResult<ParserResul...
type OpaqueToken (line 39) | pub struct OpaqueToken {
method __repr__ (line 45) | fn __repr__(&self) -> PyResult<String> {
method __reduce__ (line 48) | fn __reduce__(&self, py: Python) -> PyResult<(Py<PyAny>, (Py<PyAny>,))> {
method span_start (line 56) | fn span_start(&self) -> u64 {
method span_end (line 60) | fn span_end(&self) -> u64 {
method is_ident (line 64) | fn is_ident(&self) -> bool {
function tokens_to_py (line 69) | pub fn tokens_to_py(py: Python<'_>, rust_tokens: Vec<Token>) -> PyResult...
function fini_module (line 88) | pub fn fini_module(m: &Bound<PyModule>) {
function unpickle_token (line 96) | pub fn unpickle_token(bytes: &Bound<PyBytes>) -> PyResult<OpaqueToken> {
function get_unpickle_token_fn (line 102) | fn get_unpickle_token_fn(py: Python) -> Py<PyAny> {
FILE: edb/edgeql-parser/edgeql-parser-python/src/unpack.rs
function unpack (line 11) | pub fn unpack(py: Python<'_>, serialized: &Bound<PyBytes>) -> PyResult<P...
FILE: edb/edgeql-parser/edgeql-parser-python/tests/normalize.rs
function test_verbatim (line 7) | fn test_verbatim() {
function test_configure (line 19) | fn test_configure() {
function test_int (line 34) | fn test_int() {
function test_str (line 56) | fn test_str() {
function test_float (line 78) | fn test_float() {
function test_bigint (line 103) | fn test_bigint() {
function test_bigint_exponent (line 128) | fn test_bigint_exponent() {
function test_decimal (line 153) | fn test_decimal() {
function test_positional (line 178) | fn test_positional() {
function test_named (line 195) | fn test_named() {
function test_limit_1 (line 215) | fn test_limit_1() {
function test_tuple_access (line 235) | fn test_tuple_access() {
function test_script (line 256) | fn test_script() {
function test_script_with_args (line 289) | fn test_script_with_args() {
FILE: edb/edgeql-parser/src/ast.rs
type OptionValue (line 16) | pub struct OptionValue {
type OptionValueKind (line 25) | pub enum OptionValueKind {
type OptionFlag (line 31) | pub struct OptionFlag {
type Options (line 37) | pub struct Options {
type Expr (line 43) | pub struct Expr {
type ExprKind (line 51) | pub enum ExprKind {
type Placeholder (line 79) | pub struct Placeholder {
type SortExpr (line 85) | pub struct SortExpr {
type AliasedExpr (line 93) | pub struct AliasedExpr {
type ModuleAliasDecl (line 100) | pub struct ModuleAliasDecl {
type BaseObjectRef (line 107) | pub struct BaseObjectRef {
type BaseObjectRefKind (line 115) | pub enum BaseObjectRefKind {
type ObjectRef (line 122) | pub struct ObjectRef {
type PseudoObjectRef (line 130) | pub struct PseudoObjectRef {
type PseudoObjectRefKind (line 138) | pub enum PseudoObjectRefKind {
type AnyType (line 145) | pub struct AnyType {}
type AnyTuple (line 149) | pub struct AnyTuple {}
type Anchor (line 153) | pub struct Anchor {
type AnchorKind (line 162) | pub enum AnchorKind {
type SpecialAnchor (line 168) | pub struct SpecialAnchor {
type SpecialAnchorKind (line 176) | pub enum SpecialAnchorKind {
type Source (line 183) | pub struct Source {
type Subject (line 189) | pub struct Subject {
type DetachedExpr (line 195) | pub struct DetachedExpr {
type GlobalExpr (line 202) | pub struct GlobalExpr {
type Index (line 208) | pub struct Index {
type Slice (line 214) | pub struct Slice {
type Indirection (line 221) | pub struct Indirection {
type IndirectionIndirection (line 229) | pub enum IndirectionIndirection {
type BinOp (line 236) | pub struct BinOp {
type BinOpKind (line 248) | pub enum BinOpKind {
type SetConstructorOp (line 254) | pub struct SetConstructorOp {
type WindowSpec (line 260) | pub struct WindowSpec {
type FunctionCall (line 267) | pub struct FunctionCall {
type FunctionCallFunc (line 277) | pub enum FunctionCallFunc {
type BaseConstant (line 284) | pub struct BaseConstant {
type BaseConstantKind (line 293) | pub enum BaseConstantKind {
type StringConstant (line 302) | pub struct StringConstant {}
type BaseRealConstant (line 306) | pub struct BaseRealConstant {
type BaseRealConstantKind (line 315) | pub enum BaseRealConstantKind {
type IntegerConstant (line 324) | pub struct IntegerConstant {}
type FloatConstant (line 328) | pub struct FloatConstant {}
type BigintConstant (line 332) | pub struct BigintConstant {}
type DecimalConstant (line 336) | pub struct DecimalConstant {}
type BooleanConstant (line 340) | pub struct BooleanConstant {}
type BytesConstant (line 344) | pub struct BytesConstant {
type Parameter (line 350) | pub struct Parameter {
type UnaryOp (line 356) | pub struct UnaryOp {
type TypeExpr (line 363) | pub struct TypeExpr {
type TypeExprKind (line 372) | pub enum TypeExprKind {
type TypeOf (line 381) | pub struct TypeOf {
type TypeExprLiteral (line 387) | pub struct TypeExprLiteral {
type TypeName (line 393) | pub struct TypeName {
type TypeOp (line 401) | pub struct TypeOp {
type FuncParam (line 409) | pub struct FuncParam {
type IsOp (line 419) | pub struct IsOp {
type TypeIntersection (line 427) | pub struct TypeIntersection {
type Ptr (line 433) | pub struct Ptr {
type Splat (line 441) | pub struct Splat {
type Path (line 449) | pub struct Path {
type PathSteps (line 457) | pub enum PathSteps {
type TypeCast (line 467) | pub struct TypeCast {
type Introspect (line 475) | pub struct Introspect {
type IfElse (line 481) | pub struct IfElse {
type TupleElement (line 489) | pub struct TupleElement {
type NamedTuple (line 496) | pub struct NamedTuple {
type Tuple (line 502) | pub struct Tuple {
type Array (line 508) | pub struct Array {
type Set (line 514) | pub struct Set {
type Command (line 520) | pub struct Command {
type CommandAliases (line 529) | pub enum CommandAliases {
type CommandKind (line 537) | pub enum CommandKind {
type SessionSetAliasDecl (line 550) | pub struct SessionSetAliasDecl {
type SessionResetAliasDecl (line 556) | pub struct SessionResetAliasDecl {
type SessionResetModule (line 562) | pub struct SessionResetModule {}
type SessionResetAllAliases (line 566) | pub struct SessionResetAllAliases {}
type ShapeOperation (line 570) | pub struct ShapeOperation {
type ShapeElement (line 576) | pub struct ShapeElement {
type Shape (line 592) | pub struct Shape {
type Query (line 599) | pub struct Query {
type QueryAliases (line 608) | pub enum QueryAliases {
type QueryKind (line 616) | pub enum QueryKind {
type PipelinedQuery (line 626) | pub struct PipelinedQuery {
type PipelinedQueryKind (line 640) | pub enum PipelinedQueryKind {
type SelectQuery (line 647) | pub struct SelectQuery {
type GroupingIdentList (line 654) | pub struct GroupingIdentList {
type GroupingIdentListElements (line 661) | pub enum GroupingIdentListElements {
type GroupingElement (line 669) | pub struct GroupingElement {
type GroupingElementKind (line 677) | pub enum GroupingElementKind {
type GroupingSimple (line 685) | pub struct GroupingSimple {
type GroupingSimpleElement (line 692) | pub enum GroupingSimpleElement {
type GroupingSets (line 700) | pub struct GroupingSets {
type GroupingOperation (line 706) | pub struct GroupingOperation {
type GroupingOperationElements (line 714) | pub enum GroupingOperationElements {
type GroupQuery (line 722) | pub struct GroupQuery {
type GroupQueryKind (line 734) | pub enum GroupQueryKind {
type InternalGroupQuery (line 740) | pub struct InternalGroupQuery {
type InsertQuery (line 752) | pub struct InsertQuery {
type UpdateQuery (line 760) | pub struct UpdateQuery {
type DeleteQuery (line 768) | pub struct DeleteQuery {
type ForQuery (line 774) | pub struct ForQuery {
type Transaction (line 783) | pub struct Transaction {
type TransactionKind (line 791) | pub enum TransactionKind {
type StartTransaction (line 802) | pub struct StartTransaction {
type CommitTransaction (line 810) | pub struct CommitTransaction {}
type RollbackTransaction (line 814) | pub struct RollbackTransaction {}
type DeclareSavepoint (line 818) | pub struct DeclareSavepoint {
type RollbackToSavepoint (line 824) | pub struct RollbackToSavepoint {
type ReleaseSavepoint (line 830) | pub struct ReleaseSavepoint {
type Position (line 836) | pub struct Position {
type DDLOperation (line 843) | pub struct DDLOperation {
type DDLOperationKind (line 852) | pub enum DDLOperationKind {
type DDLCommand (line 864) | pub struct DDLCommand {
type DDLCommandKind (line 872) | pub enum DDLCommandKind {
type AlterAddInherit (line 878) | pub struct AlterAddInherit {
type AlterDropInherit (line 885) | pub struct AlterDropInherit {
type OnTargetDelete (line 891) | pub struct OnTargetDelete {
type OnSourceDelete (line 897) | pub struct OnSourceDelete {
type SetField (line 903) | pub struct SetField {
type SetFieldValue (line 914) | pub enum SetFieldValue {
type SetFieldKind (line 923) | pub enum SetFieldKind {
type SetPointerType (line 932) | pub struct SetPointerType {
type SetPointerCardinality (line 941) | pub struct SetPointerCardinality {
type SetPointerOptionality (line 949) | pub struct SetPointerOptionality {
type NamedDDL (line 957) | pub struct NamedDDL {
type NamedDDLKind (line 966) | pub enum NamedDDLKind {
type ObjectDDL (line 973) | pub struct ObjectDDL {
type ObjectDDLKind (line 981) | pub enum ObjectDDLKind {
type CreateObject (line 989) | pub struct CreateObject {
type CreateObjectKind (line 1000) | pub enum CreateObjectKind {
type AlterObject (line 1028) | pub struct AlterObject {
type AlterObjectKind (line 1036) | pub enum AlterObjectKind {
type DropObject (line 1066) | pub struct DropObject {
type DropObjectKind (line 1074) | pub enum DropObjectKind {
type CreateExtendingObject (line 1108) | pub struct CreateExtendingObject {
type CreateExtendingObjectKind (line 1118) | pub enum CreateExtendingObjectKind {
type Rename (line 1131) | pub struct Rename {
type NestedQLBlock (line 1137) | pub struct NestedQLBlock {
type CreateMigration (line 1144) | pub struct CreateMigration {
type CommittedSchema (line 1152) | pub struct CommittedSchema {}
type StartMigration (line 1156) | pub struct StartMigration {
type StartMigrationTarget (line 1163) | pub enum StartMigrationTarget {
type AbortMigration (line 1170) | pub struct AbortMigration {}
type PopulateMigration (line 1174) | pub struct PopulateMigration {}
type AlterCurrentMigrationRejectProposed (line 1178) | pub struct AlterCurrentMigrationRejectProposed {}
type DescribeCurrentMigration (line 1182) | pub struct DescribeCurrentMigration {
type CommitMigration (line 1188) | pub struct CommitMigration {}
type AlterMigration (line 1192) | pub struct AlterMigration {}
type DropMigration (line 1196) | pub struct DropMigration {}
type ResetSchema (line 1200) | pub struct ResetSchema {
type StartMigrationRewrite (line 1206) | pub struct StartMigrationRewrite {}
type AbortMigrationRewrite (line 1210) | pub struct AbortMigrationRewrite {}
type CommitMigrationRewrite (line 1214) | pub struct CommitMigrationRewrite {}
type CreateDatabase (line 1218) | pub struct CreateDatabase {
type AlterDatabase (line 1225) | pub struct AlterDatabase {}
type DropDatabase (line 1229) | pub struct DropDatabase {}
type CreateExtensionPackage (line 1233) | pub struct CreateExtensionPackage {
type DropExtensionPackage (line 1239) | pub struct DropExtensionPackage {}
type CreateExtension (line 1243) | pub struct CreateExtension {}
type DropExtension (line 1247) | pub struct DropExtension {}
type CreateFuture (line 1251) | pub struct CreateFuture {}
type DropFuture (line 1255) | pub struct DropFuture {}
type CreateModule (line 1259) | pub struct CreateModule {}
type AlterModule (line 1263) | pub struct AlterModule {}
type DropModule (line 1267) | pub struct DropModule {}
type CreateRole (line 1271) | pub struct CreateRole {
type AlterRole (line 1278) | pub struct AlterRole {}
type DropRole (line 1282) | pub struct DropRole {}
type CreateAnnotation (line 1286) | pub struct CreateAnnotation {
type AlterAnnotation (line 1293) | pub struct AlterAnnotation {}
type DropAnnotation (line 1297) | pub struct DropAnnotation {}
type CreatePseudoType (line 1301) | pub struct CreatePseudoType {}
type CreateScalarType (line 1305) | pub struct CreateScalarType {}
type AlterScalarType (line 1309) | pub struct AlterScalarType {}
type DropScalarType (line 1313) | pub struct DropScalarType {}
type CreateProperty (line 1317) | pub struct CreateProperty {}
type AlterProperty (line 1321) | pub struct AlterProperty {}
type DropProperty (line 1325) | pub struct DropProperty {}
type CreateConcretePointer (line 1329) | pub struct CreateConcretePointer {
type CreateConcretePointerTarget (line 1342) | pub enum CreateConcretePointerTarget {
type CreateConcretePointerKind (line 1351) | pub enum CreateConcretePointerKind {
type CreateConcreteUnknownPointer (line 1359) | pub struct CreateConcreteUnknownPointer {}
type CreateConcreteProperty (line 1363) | pub struct CreateConcreteProperty {}
type AlterConcreteProperty (line 1367) | pub struct AlterConcreteProperty {}
type DropConcreteProperty (line 1371) | pub struct DropConcreteProperty {}
type CreateObjectType (line 1375) | pub struct CreateObjectType {}
type AlterObjectType (line 1379) | pub struct AlterObjectType {}
type DropObjectType (line 1383) | pub struct DropObjectType {}
type CreateAlias (line 1387) | pub struct CreateAlias {}
type AlterAlias (line 1391) | pub struct AlterAlias {}
type DropAlias (line 1395) | pub struct DropAlias {}
type CreateGlobal (line 1399) | pub struct CreateGlobal {
type CreateGlobalTarget (line 1408) | pub enum CreateGlobalTarget {
type AlterGlobal (line 1416) | pub struct AlterGlobal {}
type DropGlobal (line 1420) | pub struct DropGlobal {}
type SetGlobalType (line 1424) | pub struct SetGlobalType {
type CreatePermission (line 1434) | pub struct CreatePermission {}
type AlterPermission (line 1438) | pub struct AlterPermission {}
type DropPermission (line 1442) | pub struct DropPermission {}
type CreateLink (line 1446) | pub struct CreateLink {}
type AlterLink (line 1450) | pub struct AlterLink {}
type DropLink (line 1454) | pub struct DropLink {}
type CreateConcreteLink (line 1458) | pub struct CreateConcreteLink {}
type AlterConcreteLink (line 1462) | pub struct AlterConcreteLink {}
type DropConcreteLink (line 1466) | pub struct DropConcreteLink {}
type CreateConstraint (line 1470) | pub struct CreateConstraint {
type AlterConstraint (line 1478) | pub struct AlterConstraint {}
type DropConstraint (line 1482) | pub struct DropConstraint {}
type CreateConcreteConstraint (line 1486) | pub struct CreateConcreteConstraint {
type AlterConcreteConstraint (line 1492) | pub struct AlterConcreteConstraint {}
type DropConcreteConstraint (line 1496) | pub struct DropConcreteConstraint {}
type IndexType (line 1500) | pub struct IndexType {
type IndexCode (line 1508) | pub struct IndexCode {
type CreateIndex (line 1515) | pub struct CreateIndex {
type AlterIndex (line 1524) | pub struct AlterIndex {}
type DropIndex (line 1528) | pub struct DropIndex {}
type CreateConcreteIndex (line 1532) | pub struct CreateConcreteIndex {}
type AlterConcreteIndex (line 1536) | pub struct AlterConcreteIndex {}
type DropConcreteIndex (line 1540) | pub struct DropConcreteIndex {}
type CreateIndexMatch (line 1544) | pub struct CreateIndexMatch {}
type DropIndexMatch (line 1548) | pub struct DropIndexMatch {}
type CreateAnnotationValue (line 1552) | pub struct CreateAnnotationValue {
type AlterAnnotationValue (line 1558) | pub struct AlterAnnotationValue {
type DropAnnotationValue (line 1564) | pub struct DropAnnotationValue {}
type CreateAccessPolicy (line 1568) | pub struct CreateAccessPolicy {
type SetAccessPerms (line 1577) | pub struct SetAccessPerms {
type AlterAccessPolicy (line 1584) | pub struct AlterAccessPolicy {}
type DropAccessPolicy (line 1588) | pub struct DropAccessPolicy {}
type CreateTrigger (line 1592) | pub struct CreateTrigger {
type AlterTrigger (line 1601) | pub struct AlterTrigger {}
type DropTrigger (line 1605) | pub struct DropTrigger {}
type CreateRewrite (line 1609) | pub struct CreateRewrite {
type AlterRewrite (line 1615) | pub struct AlterRewrite {}
type DropRewrite (line 1619) | pub struct DropRewrite {}
type FunctionCode (line 1623) | pub struct FunctionCode {
type CreateFunction (line 1633) | pub struct CreateFunction {
type AlterFunction (line 1642) | pub struct AlterFunction {
type DropFunction (line 1649) | pub struct DropFunction {}
type OperatorCode (line 1653) | pub struct OperatorCode {
type CreateOperator (line 1663) | pub struct CreateOperator {
type AlterOperator (line 1671) | pub struct AlterOperator {}
type DropOperator (line 1675) | pub struct DropOperator {}
type CastCode (line 1679) | pub struct CastCode {
type CreateCast (line 1689) | pub struct CreateCast {
type AlterCast (line 1697) | pub struct AlterCast {}
type DropCast (line 1701) | pub struct DropCast {}
type ConfigOp (line 1705) | pub struct ConfigOp {
type ConfigOpKind (line 1715) | pub enum ConfigOpKind {
type ConfigSet (line 1723) | pub struct ConfigSet {
type ConfigInsert (line 1729) | pub struct ConfigInsert {
type ConfigReset (line 1735) | pub struct ConfigReset {
type DescribeStmt (line 1741) | pub struct DescribeStmt {
type DescribeStmtObject (line 1750) | pub enum DescribeStmtObject {
type ExplainStmt (line 1757) | pub struct ExplainStmt {
type AdministerStmt (line 1764) | pub struct AdministerStmt {
type ModuleDeclaration (line 1770) | pub struct ModuleDeclaration {
type ModuleDeclarationDeclarations (line 1778) | pub enum ModuleDeclarationDeclarations {
type Schema (line 1785) | pub struct Schema {
type SchemaDeclarations (line 1792) | pub enum SchemaDeclarations {
type SortOrder (line 1800) | pub enum SortOrder {
type NonesOrder (line 1808) | pub enum NonesOrder {
type CardinalityModifier (line 1816) | pub enum CardinalityModifier {
type DescribeGlobal (line 1824) | pub enum DescribeGlobal {
type ShapeOp (line 1834) | pub enum ShapeOp {
type ShapeOrigin (line 1844) | pub enum ShapeOrigin {
type Language (line 1854) | pub enum Language {
type ParameterKind (line 1862) | pub enum ParameterKind {
type TypeModifier (line 1871) | pub enum TypeModifier {
type OperatorKind (line 1880) | pub enum OperatorKind {
type TransactionIsolationLevel (line 1890) | pub enum TransactionIsolationLevel {
type TransactionAccessMode (line 1898) | pub enum TransactionAccessMode {
type TransactionDeferMode (line 1906) | pub enum TransactionDeferMode {
type SchemaCardinality (line 1914) | pub enum SchemaCardinality {
type Cardinality (line 1923) | pub enum Cardinality {
type Volatility (line 1934) | pub enum Volatility {
type Multiplicity (line 1944) | pub enum Multiplicity {
type AccessPolicyAction (line 1954) | pub enum AccessPolicyAction {
type AccessKind (line 1962) | pub enum AccessKind {
type TriggerTiming (line 1973) | pub enum TriggerTiming {
type TriggerKind (line 1981) | pub enum TriggerKind {
type TriggerScope (line 1990) | pub enum TriggerScope {
type RewriteKind (line 1998) | pub enum RewriteKind {
type DescribeLanguage (line 2006) | pub enum DescribeLanguage {
type SchemaObjectClass (line 2016) | pub enum SchemaObjectClass {
type LinkTargetDeleteAction (line 2050) | pub enum LinkTargetDeleteAction {
type LinkSourceDeleteAction (line 2060) | pub enum LinkSourceDeleteAction {
type ConfigScope (line 2069) | pub enum ConfigScope {
type BranchType (line 2079) | pub enum BranchType {
FILE: edb/edgeql-parser/src/expr.rs
type Error (line 8) | pub enum Error {
function bracket_str (line 39) | fn bracket_str(tok: Kind) -> &'static str {
function matching_bracket (line 53) | fn matching_bracket(tok: Kind) -> Kind {
function check (line 75) | pub fn check(text: &str) -> Result<(), Error> {
FILE: edb/edgeql-parser/src/hash.rs
type Hasher (line 7) | pub struct Hasher {
method start_migration (line 18) | pub fn start_migration(parent_id: &str) -> Hasher {
method add_source (line 27) | pub fn add_source(&mut self, data: &str) -> Result<&mut Self, Error> {
method make_migration_id (line 41) | pub fn make_migration_id(mut self) -> String {
type Error (line 12) | pub enum Error {
function hash (line 55) | fn hash(initial: &str, text: &str) -> String {
function empty (line 62) | fn empty() {
function hash_1 (line 70) | fn hash_1() {
function tokens_arent_normalized (line 83) | fn tokens_arent_normalized() {
function hash_parent (line 106) | fn hash_parent() {
FILE: edb/edgeql-parser/src/helpers/bytes.rs
function unquote_bytes (line 1) | pub fn unquote_bytes(value: &str) -> Result<Vec<u8>, String> {
function unquote_bytes_inner (line 16) | fn unquote_bytes_inner(s: &str) -> Result<Vec<u8>, String> {
function simple_bytes (line 80) | fn simple_bytes() {
function newline_escaping_bytes (line 96) | fn newline_escaping_bytes() {
function complex_bytes (line 178) | fn complex_bytes() {
FILE: edb/edgeql-parser/src/helpers/strings.rs
type UnquoteError (line 12) | pub struct UnquoteError(String);
method fmt (line 264) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
function quote_name (line 23) | pub fn quote_name(s: &str) -> Cow<str> {
function quote_string (line 38) | pub fn quote_string(s: &str) -> String {
function unquote_string (line 66) | pub fn unquote_string(value: &str) -> Result<Cow<str>, UnquoteError> {
function _unquote_string (line 84) | fn _unquote_string(s: &str) -> Result<String, String> {
function unquote_unicode_string (line 177) | fn unquote_unicode_string() {
function unquote_string_error (line 186) | fn unquote_string_error() {
function newline_escaping_str (line 203) | fn newline_escaping_str() {
function test_quote_string (line 245) | fn test_quote_string() {
function complex_strings (line 251) | fn complex_strings() {
FILE: edb/edgeql-parser/src/keywords.rs
constant UNRESERVED_KEYWORDS (line 3) | pub const UNRESERVED_KEYWORDS: phf::Set<&str> = phf_set!(
constant PARTIAL_RESERVED_KEYWORDS (line 117) | pub const PARTIAL_RESERVED_KEYWORDS: phf::Set<&str> = phf_set!("except",...
constant FUTURE_RESERVED_KEYWORDS (line 119) | pub const FUTURE_RESERVED_KEYWORDS: phf::Set<&str> = phf_set!(
constant CURRENT_RESERVED_KEYWORDS (line 152) | pub const CURRENT_RESERVED_KEYWORDS: phf::Set<&str> = phf_set!(
constant COMBINED_KEYWORDS (line 211) | pub const COMBINED_KEYWORDS: phf::Set<&str> = phf_set!(
function lookup (line 219) | pub fn lookup(s: &str) -> Option<Keyword> {
function lookup_all (line 226) | pub fn lookup_all(s: &str) -> Option<Keyword> {
type Keyword (line 237) | pub struct Keyword(pub &'static str);
method is_reserved (line 240) | pub fn is_reserved(&self) -> bool {
method is_unreserved (line 243) | pub fn is_unreserved(&self) -> bool {
method is_dunder (line 246) | pub fn is_dunder(&self) -> bool {
method is_bool (line 249) | pub fn is_bool(&self) -> bool {
function from (line 255) | fn from(value: Keyword) -> Self {
FILE: edb/edgeql-parser/src/parser/cst.rs
type CSTNode (line 13) | pub enum CSTNode<'a> {
type Terminal (line 20) | pub struct Terminal {
method fmt (line 40) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
method from_token (line 56) | pub fn from_token(token: Token) -> Self {
method from_start_name (line 67) | pub fn from_start_name(start_name: &str) -> Self {
type Production (line 29) | pub struct Production<'a> {
FILE: edb/edgeql-parser/src/parser/custom_errors.rs
function custom_error (line 7) | pub(super) fn custom_error(&self, ctx: &Context, token: &Terminal) -> Op...
function custom_error_from_rule (line 36) | fn custom_error_from_rule(&self, token: &Terminal, ctx: &Context) -> Opt...
function get_rule (line 128) | fn get_rule(&self, ctx: &Context) -> Option<(usize, ParserRule)> {
function compare_stack (line 269) | fn compare_stack(&self, expected: &[Cond], top_offset: usize, ctx: &Cont...
function unexpected_reserved_keyword (line 286) | fn unexpected_reserved_keyword(text: &str, span: Span) -> Error {
type Cond (line 304) | enum Cond {
method keyword (line 311) | fn keyword(kw: &'static str) -> Self {
method check (line 315) | fn check(&self, node: &StackNode, ctx: &Context) -> bool {
method check_opt (line 348) | fn check_opt(&self, node: Option<&StackNode>, ctx: &Context) -> bool {
type ParserRule (line 354) | enum ParserRule {
method fmt (line 366) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
function post_process (line 380) | pub fn post_process(errors: Vec<Error>) -> Vec<Error> {
FILE: edb/edgeql-parser/src/parser/mod.rs
type Context (line 14) | pub struct Context<'s> {
function new (line 21) | pub fn new(spec: &'s Spec) -> Self {
constant UNEXPECTED (line 32) | const UNEXPECTED: &str = "Unexpected";
function parse (line 34) | pub fn parse<'a>(input: &'a [Terminal], ctx: &'a Context) -> (Option<CST...
function suggest_next_keyword (line 228) | pub fn suggest_next_keyword<'a>(input: &'a [Terminal], ctx: &'a Context)...
function starts_with_unexpected_error (line 284) | fn starts_with_unexpected_error(a: &Parser) -> bool {
function alloc_terminal (line 291) | fn alloc_terminal(&self, t: Terminal) -> &'_ Terminal {
function alloc_slice_and_push (line 296) | fn alloc_slice_and_push(&self, slice: &Option<&[usize]>, element: usize)...
function new_token_for_injection (line 307) | fn new_token_for_injection<'a>(
type StackNode (line 334) | struct StackNode<'p> {
type Parser (line 342) | struct Parser<'s> {
function act (line 362) | fn act(&mut self, ctx: &'s Context, token: &'s Terminal) -> Result<(), (...
function reduce (line 387) | fn reduce(&mut self, ctx: &'s Context, reduce: &'s Reduce) {
function push_on_stack (line 436) | pub fn push_on_stack(&mut self, ctx: &'s Context, state: usize, value: C...
function finish (line 445) | pub fn finish(&self, _ctx: &'s Context) -> Option<CSTNode<'s>> {
function can_act (line 480) | fn can_act(&self, ctx: &'s Context, token: &Kind) -> Option<usize> {
function print_stack (line 521) | fn print_stack(&self, ctx: &'s Context) {
function push_error (line 554) | fn push_error(&mut self, error: Error, cost: u16) {
function node_successful (line 576) | fn node_successful(&mut self) {
function adjusted_cost (line 581) | fn adjusted_cost(&self) -> u16 {
function has_recovered (line 586) | fn has_recovered(&self) -> bool {
function get_from_top (line 590) | fn get_from_top(&self, steps: usize) -> Option<&StackNode<'s>> {
function step_up (line 596) | fn step_up(&self, steps: usize) -> Option<&StackNode<'a>> {
function get_span_of_nodes (line 609) | fn get_span_of_nodes(nodes: &[CSTNode]) -> Option<Span> {
constant PARSER_COUNT_MAX (line 623) | const PARSER_COUNT_MAX: usize = 10;
constant ERROR_COST_INJECT_MAX (line 625) | const ERROR_COST_INJECT_MAX: u16 = 15;
constant ERROR_COST_SKIP (line 626) | const ERROR_COST_SKIP: u16 = 3;
constant ERROR_COST_CUSTOM_ERROR (line 627) | const ERROR_COST_CUSTOM_ERROR: u16 = 3;
function injection_cost (line 629) | fn injection_cost(kind: &Kind) -> u16 {
FILE: edb/edgeql-parser/src/parser/spec.rs
type Spec (line 5) | pub struct Spec {
method from (line 42) | fn from(v: SpecSerializable) -> Spec {
type Action (line 14) | pub enum Action {
type Reduce (line 21) | pub struct Reduce {
type SpecSerializable (line 33) | pub struct SpecSerializable {
function get_token_kind (line 62) | pub(super) fn get_token_kind(token_name: &str) -> Kind {
FILE: edb/edgeql-parser/src/position.rs
type Span (line 9) | pub struct Span {
method combine (line 76) | pub fn combine(self, right: Span) -> Span {
method extend (line 83) | pub fn extend(self, other: &Span) -> Span {
type Pos (line 25) | pub struct Pos {
method fmt (line 64) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
method fmt (line 70) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
type InflatedPos (line 39) | pub struct InflatedPos {
method from_offset (line 115) | pub fn from_offset(data: &[u8], offset: u64) -> Result<InflatedPos, In...
method from_offsets (line 120) | pub fn from_offsets(
method from_lines_cols (line 157) | pub fn from_lines_cols(
method deflate (line 259) | pub fn deflate(self) -> Pos {
type InflatingError (line 56) | pub enum InflatingError {
function new_lines_in_fragment (line 91) | fn new_lines_in_fragment(data: &[u8]) -> u64 {
function mkpos (line 272) | fn mkpos(s: &str, off: usize) -> InflatedPos {
function mkpos2 (line 276) | fn mkpos2(s: &str, line: u64, col: u64) -> InflatedPos {
function mkpos_both (line 281) | fn mkpos_both(s: &str, off: usize) -> InflatedPos {
function ascii_line (line 289) | fn ascii_line() {
function ascii_multi_line (line 310) | fn ascii_multi_line() {
function line_endings (line 331) | fn line_endings() {
function char_offsets_00 (line 344) | fn char_offsets_00() {
function char_offsets_01 (line 354) | fn char_offsets_01() {
function char_offsets_02 (line 367) | fn char_offsets_02() {
function char_offsets_03 (line 376) | fn char_offsets_03() {
function char_offsets_04 (line 385) | fn char_offsets_04() {
function char_offsets_05 (line 394) | fn char_offsets_05() {
function char_offsets_06 (line 403) | fn char_offsets_06() {
function char_offsets_07 (line 412) | fn char_offsets_07() {
function char_offsets_08 (line 421) | fn char_offsets_08() {
function char_offsets_09 (line 430) | fn char_offsets_09() {
function char_offsets_10 (line 439) | fn char_offsets_10() {
function char_offsets_11 (line 448) | fn char_offsets_11() {
FILE: edb/edgeql-parser/src/preparser.rs
type Continuation (line 4) | pub struct Continuation {
function full_statement (line 11) | pub fn full_statement(
function is_empty (line 185) | pub fn is_empty(text: &str) -> bool {
FILE: edb/edgeql-parser/src/schema_file.rs
type SchemaFileError (line 7) | pub enum SchemaFileError {
function match_bracket (line 29) | fn match_bracket(
function validate (line 49) | pub fn validate(text: &str) -> Result<(), SchemaFileError> {
function check (line 86) | fn check(s: &str) -> String {
function test_normal (line 98) | fn test_normal() {
function test_braces (line 103) | fn test_braces() {
function test_str (line 142) | fn test_str() {
FILE: edb/edgeql-parser/src/tokenizer.rs
constant MAX_KEYWORD_LENGTH (line 13) | pub const MAX_KEYWORD_LENGTH: usize = 16;
type Token (line 17) | pub struct Token<'a> {
type Value (line 29) | pub enum Value {
type Error (line 41) | pub struct Error {
method new (line 49) | pub fn new<S: ToString>(message: S) -> Self {
method with_span (line 58) | pub fn with_span(mut self, span: Span) -> Self {
method default_span_to (line 63) | pub fn default_span_to(mut self, span: Span) -> Self {
method fmt (line 1036) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type Kind (line 73) | pub enum Kind {
method text (line 1069) | pub fn text(&self) -> Option<&'static str> {
method user_friendly_text (line 1120) | pub fn user_friendly_text(&self) -> Option<&'static str> {
type TokenStub (line 143) | struct TokenStub<'a> {
type Tokenizer (line 149) | pub struct Tokenizer<'a> {
type Checkpoint (line 168) | pub struct Checkpoint {
type Item (line 175) | type Item = Result<Token<'a>, Error>;
method next (line 177) | fn next(&mut self) -> Option<Self::Item> {
function new (line 200) | pub fn new(s: &str) -> Tokenizer {
function new_at (line 224) | pub fn new_at(s: &str, position: Pos) -> Tokenizer {
function validated_values (line 240) | pub fn validated_values(self) -> Validator<'a> {
function checkpoint (line 244) | pub fn checkpoint(&self) -> Checkpoint {
function reset (line 252) | pub fn reset(&mut self, checkpoint: Checkpoint) {
function current_pos (line 258) | pub fn current_pos(&self) -> Pos {
function read_token (line 262) | fn read_token(&mut self) -> Option<Result<(TokenStub<'a>, Pos), Error>> {
function peek_token (line 314) | fn peek_token(&mut self) -> Option<Result<(Kind, usize), Error>> {
function peek_token_inner (line 322) | fn peek_token_inner(
function parse_string (line 669) | fn parse_string(
function parse_string_interp_cont (line 715) | fn parse_string_interp_cont(&self, end: &str) -> Result<(Kind, usize), E...
function parse_number (line 738) | fn parse_number(&mut self) -> Result<(Kind, usize), Error> {
function skip_whitespace (line 914) | fn skip_whitespace(&mut self) {
function update_position (line 957) | fn update_position(&mut self, len: usize) {
function as_keyword (line 973) | fn as_keyword(&mut self, s: &str) -> Option<Keyword> {
function fmt (line 985) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
function fmt (line 991) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
function cloned (line 997) | pub fn cloned(self) -> Token<'static> {
function check_prohibited (line 1007) | fn check_prohibited(c: char, escape: bool) -> Result<(), Error> {
function eq (line 1030) | fn eq(&self, other: &Self) -> bool {
function deserialize_keyword (line 1042) | fn deserialize_keyword<'de, D>(deserializer: D) -> Result<Keyword, D::Er...
FILE: edb/edgeql-parser/src/validation.rs
type Validator (line 14) | pub struct Validator<'a> {
type Item (line 22) | type Item = Result<Token<'a>, Error>;
method next (line 24) | fn next(&mut self) -> Option<Self::Item> {
function new (line 48) | pub(super) fn new(inner: Tokenizer<'a>) -> Self {
function with_eof (line 56) | pub fn with_eof(self) -> WithEof<'a> {
function next_inner (line 65) | fn next_inner(&mut self) -> Option<Result<Token<'a>, Error>> {
function peek (line 75) | fn peek(&mut self) -> &Option<Result<Token, Error>> {
function current_pos (line 83) | pub fn current_pos(&self) -> Pos {
function combine_multi_word_keywords (line 87) | fn combine_multi_word_keywords(&mut self, token: &Token<'a>) -> Option<&...
function peek_keyword (line 129) | fn peek_keyword(&mut self, kw: &'static str) -> bool {
function parse_value (line 141) | pub fn parse_value(token: &Token) -> Result<Option<Value>, String> {
function remap_kind (line 220) | fn remap_kind(kind: Kind) -> Kind {
type WithEof (line 227) | pub struct WithEof<'a> {
type Item (line 234) | type Item = Result<Token<'a>, Error>;
method next (line 236) | fn next(&mut self) -> Option<Self::Item> {
FILE: edb/edgeql-parser/tests/expr.rs
function test_valid (line 4) | fn test_valid() {
function check_err (line 19) | fn check_err(s: &str) -> String {
function test_empty (line 24) | fn test_empty() {
function bad_token (line 31) | fn bad_token() {
function bracket_mismatch (line 43) | fn bracket_mismatch() {
function extra_brackets (line 62) | fn extra_brackets() {
function missing_brackets (line 72) | fn missing_brackets() {
function delimiter (line 88) | fn delimiter() {
FILE: edb/edgeql-parser/tests/preparser.rs
function test_statement (line 3) | fn test_statement(data: &[u8], len: usize) {
function test_simple (line 16) | fn test_simple() {
function test_quotes (line 21) | fn test_quotes() {
function test_quoted_semicolon (line 26) | fn test_quoted_semicolon() {
function test_raw_string (line 31) | fn test_raw_string() {
function test_raw_byte_string (line 36) | fn test_raw_byte_string() {
function test_single_quoted_semicolon (line 42) | fn test_single_quoted_semicolon() {
function test_backtick_quoted_semicolon (line 47) | fn test_backtick_quoted_semicolon() {
function test_commented_semicolon (line 52) | fn test_commented_semicolon() {
function test_continuation (line 57) | fn test_continuation() {
function test_quoted_continuation (line 62) | fn test_quoted_continuation() {
function test_single_quoted_continuation (line 67) | fn test_single_quoted_continuation() {
function test_backtick_quoted_continuation (line 72) | fn test_backtick_quoted_continuation() {
function test_dollar_semicolon (line 77) | fn test_dollar_semicolon() {
function test_nested_dollar (line 85) | fn test_nested_dollar() {
function test_dollar_continuation (line 91) | fn test_dollar_continuation() {
function test_dollar_var (line 100) | fn test_dollar_var() {
function test_after_variable (line 106) | fn test_after_variable() {
function test_schema (line 114) | fn test_schema() {
function test_function (line 138) | fn test_function() {
function empty (line 143) | fn empty() {
FILE: edb/edgeql-parser/tests/tokenizer.rs
function tok_str (line 4) | fn tok_str(s: &str) -> Vec<String> {
function tok_typ (line 17) | fn tok_typ(s: &str) -> Vec<Kind> {
function tok_err (line 30) | fn tok_err(s: &str) -> String {
function keyword (line 42) | fn keyword(kw: &'static str) -> Kind {
function whitespace_and_comments (line 47) | fn whitespace_and_comments() {
function idents (line 58) | fn idents() {
function keywords (line 75) | fn keywords() {
function colon_tokens (line 83) | fn colon_tokens() {
function dash_tokens (line 93) | fn dash_tokens() {
function greater_tokens (line 103) | fn greater_tokens() {
function less_tokens (line 113) | fn less_tokens() {
function plus_tokens (line 123) | fn plus_tokens() {
function not_equals_tokens (line 135) | fn not_equals_tokens() {
function question_tokens (line 148) | fn question_tokens() {
function dot_tokens (line 170) | fn dot_tokens() {
function tuple_dot_vs_float (line 197) | fn tuple_dot_vs_float() {
function div_tokens (line 205) | fn div_tokens() {
function single_char_tokens (line 215) | fn single_char_tokens() {
function splats (line 235) | fn splats() {
function integer (line 256) | fn integer() {
function bigint (line 279) | fn bigint() {
function float (line 310) | fn float() {
function decimal (line 366) | fn decimal() {
function numbers_from_py (line 410) | fn numbers_from_py() {
function num_errors (line 550) | fn num_errors() {
function tuple_paths (line 666) | fn tuple_paths() {
function strings (line 700) | fn strings() {
function string_prohibited_chars (line 874) | fn string_prohibited_chars() {
function test_dollar (line 918) | fn test_dollar() {
function invalid_suffix (line 1070) | fn invalid_suffix() {
function test_substitution (line 1079) | fn test_substitution() {
FILE: edb/edgeql/ast.py
class SortOrder (line 53) | class SortOrder(s_enum.StrEnum):
class NonesOrder (line 63) | class NonesOrder(s_enum.StrEnum):
class CardinalityModifier (line 72) | class CardinalityModifier(s_enum.StrEnum):
class DescribeGlobal (line 77) | class DescribeGlobal(s_enum.StrEnum):
method to_edgeql (line 83) | def to_edgeql(self) -> str:
class Base (line 87) | class Base(ast.AST):
method dump_edgeql (line 96) | def dump_edgeql(self) -> None:
class GrammarEntryPoint (line 102) | class GrammarEntryPoint(Base):
class OptionValue (line 107) | class OptionValue(Base):
class OptionFlag (line 114) | class OptionFlag(OptionValue):
class Options (line 119) | class Options(Base):
method get_flag (line 123) | def get_flag(self, k: str) -> OptionFlag:
method __getitem__ (line 132) | def __getitem__(self, k: str) -> OptionValue:
method __iter__ (line 135) | def __iter__(self) -> typing.Iterator[str]:
method __len__ (line 138) | def __len__(self) -> int:
class Expr (line 142) | class Expr(GrammarEntryPoint, Base):
class Placeholder (line 148) | class Placeholder(Expr):
class SortExpr (line 154) | class SortExpr(Base):
class Alias (line 160) | class Alias(Base):
class AliasedExpr (line 164) | class AliasedExpr(Alias):
class ModuleAliasDecl (line 169) | class ModuleAliasDecl(Alias):
class GroupingAtom (line 174) | class GroupingAtom(Base):
class BaseObjectRef (line 178) | class BaseObjectRef(Base):
class ObjectRef (line 182) | class ObjectRef(BaseObjectRef, GroupingAtom):
class PseudoObjectRef (line 188) | class PseudoObjectRef(BaseObjectRef):
class Anchor (line 193) | class Anchor(Expr):
class IRAnchor (line 202) | class IRAnchor(Anchor):
class SpecialAnchor (line 218) | class SpecialAnchor(Anchor):
class Cursor (line 222) | class Cursor(Expr):
class DetachedExpr (line 228) | class DetachedExpr(Expr): # DETACHED Expr
class GlobalExpr (line 233) | class GlobalExpr(Expr): # GLOBAL Name
class Index (line 237) | class Index(Base):
class Slice (line 241) | class Slice(Base):
class Indirection (line 246) | class Indirection(Expr):
class BinOp (line 251) | class BinOp(Expr):
class WindowSpec (line 260) | class WindowSpec(Base):
class FunctionCall (line 265) | class FunctionCall(Expr):
class StrInterpFragment (line 272) | class StrInterpFragment(Base):
class StrInterp (line 277) | class StrInterp(Expr):
class BaseConstant (line 282) | class BaseConstant(Expr):
class Constant (line 287) | class Constant(BaseConstant):
method string (line 293) | def string(cls, value: str, span: Span | None = None) -> Constant:
method boolean (line 297) | def boolean(cls, b: bool, span: Span | None = None) -> Constant:
method integer (line 303) | def integer(cls, i: int) -> Constant:
method float (line 307) | def float(cls, f: float) -> Constant:
method make (line 311) | def make(cls, n: object) -> Constant:
class ConstantKind (line 324) | class ConstantKind(s_enum.StrEnum):
class BytesConstant (line 333) | class BytesConstant(BaseConstant):
method from_python (line 337) | def from_python(cls, s: bytes) -> BytesConstant:
class QueryParameter (line 341) | class QueryParameter(Expr):
class FunctionParameter (line 345) | class FunctionParameter(Expr):
class UnaryOp (line 349) | class UnaryOp(Expr):
class TypeExpr (line 354) | class TypeExpr(Base):
class TypeOf (line 360) | class TypeOf(TypeExpr):
class TypeExprLiteral (line 364) | class TypeExprLiteral(TypeExpr):
class TypeName (line 369) | class TypeName(TypeExpr):
class TypeOpName (line 375) | class TypeOpName(s_enum.StrEnum):
class TypeOp (line 380) | class TypeOp(TypeExpr):
class FuncParamDecl (line 388) | class FuncParamDecl(Base):
class IsOp (line 396) | class IsOp(Expr):
class TypeIntersection (line 402) | class TypeIntersection(Base):
class Ptr (line 406) | class Ptr(Base):
class Splat (line 414) | class Splat(Base):
class Path (line 429) | class Path(Expr, GroupingAtom):
class TypeCast (line 435) | class TypeCast(Expr):
class Introspect (line 441) | class Introspect(Expr):
class IfElse (line 445) | class IfElse(Expr):
class TupleElement (line 453) | class TupleElement(Base):
class NamedTuple (line 460) | class NamedTuple(Expr):
class Tuple (line 464) | class Tuple(Expr):
class Array (line 468) | class Array(Expr):
class Set (line 472) | class Set(Expr):
class Command (line 479) | class Command(Base):
class Commands (line 489) | class Commands(GrammarEntryPoint, Base):
class SessionSetAliasDecl (line 493) | class SessionSetAliasDecl(Command):
class SessionResetAliasDecl (line 497) | class SessionResetAliasDecl(Command):
class SessionResetModule (line 501) | class SessionResetModule(Command):
class SessionResetAllAliases (line 505) | class SessionResetAllAliases(Command):
class ShapeOp (line 517) | class ShapeOp(s_enum.StrEnum):
class ShapeOperation (line 525) | class ShapeOperation(Base):
class ShapeOrigin (line 529) | class ShapeOrigin(s_enum.StrEnum):
class ShapeElement (line 536) | class ShapeElement(Expr):
class Shape (line 553) | class Shape(Expr):
class Query (line 559) | class Query(Expr, GrammarEntryPoint, Command):
class SelectQuery (line 565) | class SelectQuery(Query):
class GroupingIdentList (line 584) | class GroupingIdentList(GroupingAtom, Base):
class GroupingElement (line 588) | class GroupingElement(Base):
class GroupingSimple (line 592) | class GroupingSimple(GroupingElement):
class GroupingSets (line 596) | class GroupingSets(GroupingElement):
class GroupingOperation (line 600) | class GroupingOperation(GroupingElement):
class GroupQuery (line 605) | class GroupQuery(Query):
class InternalGroupQuery (line 613) | class InternalGroupQuery(Query):
class InsertQuery (line 632) | class InsertQuery(Query):
class UpdateQuery (line 640) | class UpdateQuery(Query):
class DeleteQuery (line 648) | class DeleteQuery(Query):
class ForQuery (line 659) | class ForQuery(Query):
class Transaction (line 675) | class Transaction(Base):
class StartTransaction (line 681) | class StartTransaction(Transaction):
class CommitTransaction (line 687) | class CommitTransaction(Transaction):
class RollbackTransaction (line 691) | class RollbackTransaction(Transaction):
class DeclareSavepoint (line 695) | class DeclareSavepoint(Transaction):
class RollbackToSavepoint (line 700) | class RollbackToSavepoint(Transaction):
class ReleaseSavepoint (line 705) | class ReleaseSavepoint(Transaction):
class DDL (line 714) | class DDL(Base):
class Position (line 719) | class Position(DDL):
class DDLOperation (line 724) | class DDLOperation(DDL):
class DDLCommand (line 731) | class DDLCommand(DDLOperation, Command):
class DDLQuery (line 735) | class DDLQuery(DDLCommand):
class NonTransactionalDDLCommand (line 740) | class NonTransactionalDDLCommand(DDLCommand):
class AlterAddInherit (line 744) | class AlterAddInherit(DDLOperation):
class AlterDropInherit (line 749) | class AlterDropInherit(DDLOperation):
class OnTargetDelete (line 753) | class OnTargetDelete(DDLOperation):
class OnSourceDelete (line 757) | class OnSourceDelete(DDLOperation):
class SetField (line 761) | class SetField(DDLOperation):
class SetPointerType (line 772) | class SetPointerType(SetField):
class SetPointerCardinality (line 779) | class SetPointerCardinality(SetField):
class SetPointerOptionality (line 785) | class SetPointerOptionality(SetField):
class ObjectDDL (line 791) | class ObjectDDL(DDLCommand):
class CreateObject (line 797) | class CreateObject(ObjectDDL):
class AlterObject (line 805) | class AlterObject(ObjectDDL):
class DropObject (line 809) | class DropObject(ObjectDDL):
class CreateExtendingObject (line 813) | class CreateExtendingObject(CreateObject):
class Rename (line 823) | class Rename(ObjectDDL):
method name (line 827) | def name(self) -> ObjectRef: # type: ignore[override] # mypy bug?
class NestedQLBlock (line 831) | class NestedQLBlock(DDL):
class MigrationCommand (line 837) | class MigrationCommand(DDLCommand):
class CreateMigration (line 842) | class CreateMigration(CreateObject, MigrationCommand, GrammarEntryPoint):
class CommittedSchema (line 853) | class CommittedSchema(DDL):
class StartMigration (line 857) | class StartMigration(MigrationCommand):
class AbortMigration (line 862) | class AbortMigration(MigrationCommand):
class PopulateMigration (line 866) | class PopulateMigration(MigrationCommand):
class AlterCurrentMigrationRejectProposed (line 870) | class AlterCurrentMigrationRejectProposed(MigrationCommand):
class DescribeCurrentMigration (line 874) | class DescribeCurrentMigration(MigrationCommand):
class CommitMigration (line 879) | class CommitMigration(MigrationCommand):
class AlterMigration (line 883) | class AlterMigration(AlterObject, MigrationCommand):
class DropMigration (line 887) | class DropMigration(DropObject, MigrationCommand):
class ResetSchema (line 891) | class ResetSchema(MigrationCommand):
class StartMigrationRewrite (line 896) | class StartMigrationRewrite(MigrationCommand):
class AbortMigrationRewrite (line 900) | class AbortMigrationRewrite(MigrationCommand):
class CommitMigrationRewrite (line 904) | class CommitMigrationRewrite(MigrationCommand):
class UnqualifiedObjectCommand (line 908) | class UnqualifiedObjectCommand(ObjectDDL):
class GlobalObjectCommand (line 913) | class GlobalObjectCommand(UnqualifiedObjectCommand):
class BranchType (line 918) | class BranchType(s_enum.StrEnum):
class DatabaseCommand (line 925) | class DatabaseCommand(GlobalObjectCommand, NonTransactionalDDLCommand):
class CreateDatabase (line 931) | class CreateDatabase(CreateObject, DatabaseCommand):
class AlterDatabase (line 937) | class AlterDatabase(AlterObject, DatabaseCommand):
class DropDatabase (line 941) | class DropDatabase(DropObject, DatabaseCommand):
class ExtensionPackageCommand (line 945) | class ExtensionPackageCommand(GlobalObjectCommand):
class CreateExtensionPackage (line 951) | class CreateExtensionPackage(CreateObject, ExtensionPackageCommand):
class DropExtensionPackage (line 956) | class DropExtensionPackage(DropObject, ExtensionPackageCommand):
class ExtensionPackageMigrationCommand (line 960) | class ExtensionPackageMigrationCommand(GlobalObjectCommand):
class CreateExtensionPackageMigration (line 964) | class CreateExtensionPackageMigration(
class DropExtensionPackageMigration (line 972) | class DropExtensionPackageMigration(
class ExtensionCommand (line 979) | class ExtensionCommand(UnqualifiedObjectCommand):
class CreateExtension (line 983) | class CreateExtension(CreateObject, ExtensionCommand):
class AlterExtension (line 987) | class AlterExtension(DropObject, ExtensionCommand):
class DropExtension (line 992) | class DropExtension(DropObject, ExtensionCommand):
class FutureCommand (line 996) | class FutureCommand(UnqualifiedObjectCommand):
class CreateFuture (line 1001) | class CreateFuture(CreateObject, FutureCommand):
class DropFuture (line 1005) | class DropFuture(DropObject, FutureCommand):
class ModuleCommand (line 1009) | class ModuleCommand(UnqualifiedObjectCommand):
class CreateModule (line 1014) | class CreateModule(ModuleCommand, CreateObject):
class AlterModule (line 1018) | class AlterModule(ModuleCommand, AlterObject):
class DropModule (line 1022) | class DropModule(ModuleCommand, DropObject):
class RoleCommand (line 1026) | class RoleCommand(GlobalObjectCommand):
class CreateRole (line 1030) | class CreateRole(CreateObject, RoleCommand):
class AlterRole (line 1035) | class AlterRole(AlterObject, RoleCommand):
class DropRole (line 1039) | class DropRole(DropObject, RoleCommand):
class AnnotationCommand (line 1043) | class AnnotationCommand(ObjectDDL):
class CreateAnnotation (line 1048) | class CreateAnnotation(CreateExtendingObject, AnnotationCommand):
class AlterAnnotation (line 1053) | class AlterAnnotation(AlterObject, AnnotationCommand):
class DropAnnotation (line 1057) | class DropAnnotation(DropObject, AnnotationCommand):
class PseudoTypeCommand (line 1061) | class PseudoTypeCommand(ObjectDDL):
class CreatePseudoType (line 1066) | class CreatePseudoType(CreateObject, PseudoTypeCommand):
class ScalarTypeCommand (line 1070) | class ScalarTypeCommand(ObjectDDL):
class CreateScalarType (line 1075) | class CreateScalarType(CreateExtendingObject, ScalarTypeCommand):
class AlterScalarType (line 1079) | class AlterScalarType(AlterObject, ScalarTypeCommand):
class DropScalarType (line 1083) | class DropScalarType(DropObject, ScalarTypeCommand):
class PropertyCommand (line 1087) | class PropertyCommand(ObjectDDL):
class CreateProperty (line 1092) | class CreateProperty(CreateExtendingObject, PropertyCommand):
class AlterProperty (line 1096) | class AlterProperty(AlterObject, PropertyCommand):
class DropProperty (line 1100) | class DropProperty(DropObject, PropertyCommand):
class CreateConcretePointer (line 1104) | class CreateConcretePointer(CreateObject):
class CreateConcreteUnknownPointer (line 1114) | class CreateConcreteUnknownPointer(CreateConcretePointer):
class AlterConcreteUnknownPointer (line 1118) | class AlterConcreteUnknownPointer(AlterObject, PropertyCommand):
class CreateConcreteProperty (line 1122) | class CreateConcreteProperty(CreateConcretePointer, PropertyCommand):
class AlterConcreteProperty (line 1126) | class AlterConcreteProperty(AlterObject, PropertyCommand):
class DropConcreteProperty (line 1130) | class DropConcreteProperty(DropObject, PropertyCommand):
class ObjectTypeCommand (line 1134) | class ObjectTypeCommand(ObjectDDL):
class CreateObjectType (line 1139) | class CreateObjectType(CreateExtendingObject, ObjectTypeCommand):
class AlterObjectType (line 1143) | class AlterObjectType(AlterObject, ObjectTypeCommand):
class DropObjectType (line 1147) | class DropObjectType(DropObject, ObjectTypeCommand):
class AliasCommand (line 1151) | class AliasCommand(ObjectDDL):
class CreateAlias (line 1156) | class CreateAlias(CreateObject, AliasCommand):
class AlterAlias (line 1160) | class AlterAlias(AlterObject, AliasCommand):
class DropAlias (line 1164) | class DropAlias(DropObject, AliasCommand):
class GlobalCommand (line 1168) | class GlobalCommand(ObjectDDL):
class CreateGlobal (line 1173) | class CreateGlobal(CreateObject, GlobalCommand):
class AlterGlobal (line 1179) | class AlterGlobal(AlterObject, GlobalCommand):
class DropGlobal (line 1183) | class DropGlobal(DropObject, GlobalCommand):
class SetGlobalType (line 1187) | class SetGlobalType(SetField):
class PermissionCommand (line 1195) | class PermissionCommand(ObjectDDL):
class CreatePermission (line 1200) | class CreatePermission(CreateObject, PermissionCommand):
class AlterPermission (line 1204) | class AlterPermission(AlterObject, PermissionCommand):
class DropPermission (line 1208) | class DropPermission(DropObject, PermissionCommand):
class LinkCommand (line 1212) | class LinkCommand(ObjectDDL):
class CreateLink (line 1217) | class CreateLink(CreateExtendingObject, LinkCommand):
class AlterLink (line 1221) | class AlterLink(AlterObject, LinkCommand):
class DropLink (line 1225) | class DropLink(DropObject, LinkCommand):
class CreateConcreteLink (line 1229) | class CreateConcreteLink(
class AlterConcreteLink (line 1237) | class AlterConcreteLink(AlterObject, LinkCommand):
class DropConcreteLink (line 1241) | class DropConcreteLink(DropObject, LinkCommand):
class ConstraintCommand (line 1245) | class ConstraintCommand(ObjectDDL):
class CreateConstraint (line 1250) | class CreateConstraint(
class AlterConstraint (line 1259) | class AlterConstraint(AlterObject, ConstraintCommand):
class DropConstraint (line 1263) | class DropConstraint(DropObject, ConstraintCommand):
class ConcreteConstraintOp (line 1267) | class ConcreteConstraintOp(ConstraintCommand):
class CreateConcreteConstraint (line 1275) | class CreateConcreteConstraint(ConcreteConstraintOp, CreateObject):
class AlterConcreteConstraint (line 1279) | class AlterConcreteConstraint(ConcreteConstraintOp, AlterObject):
class DropConcreteConstraint (line 1283) | class DropConcreteConstraint(ConcreteConstraintOp, DropObject):
class IndexType (line 1287) | class IndexType(DDL):
class IndexCommand (line 1293) | class IndexCommand(ObjectDDL):
class IndexCode (line 1298) | class IndexCode(DDL):
class CreateIndex (line 1303) | class CreateIndex(
class AlterIndex (line 1313) | class AlterIndex(AlterObject, IndexCommand):
class DropIndex (line 1317) | class DropIndex(DropObject, IndexCommand):
class IndexMatchCommand (line 1321) | class IndexMatchCommand(ObjectDDL):
class CreateIndexMatch (line 1327) | class CreateIndexMatch(CreateObject, IndexMatchCommand):
class DropIndexMatch (line 1334) | class DropIndexMatch(DropObject, IndexMatchCommand):
class ConcreteIndexCommand (line 1338) | class ConcreteIndexCommand(IndexCommand):
class CreateConcreteIndex (line 1347) | class CreateConcreteIndex(ConcreteIndexCommand, CreateObject):
class AlterConcreteIndex (line 1351) | class AlterConcreteIndex(ConcreteIndexCommand, AlterObject):
class DropConcreteIndex (line 1355) | class DropConcreteIndex(ConcreteIndexCommand, DropObject):
class CreateAnnotationValue (line 1359) | class CreateAnnotationValue(AnnotationCommand, CreateObject):
class AlterAnnotationValue (line 1363) | class AlterAnnotationValue(AnnotationCommand, AlterObject):
class DropAnnotationValue (line 1367) | class DropAnnotationValue(AnnotationCommand, DropObject):
class AccessPolicyCommand (line 1371) | class AccessPolicyCommand(ObjectDDL):
class CreateAccessPolicy (line 1376) | class CreateAccessPolicy(CreateObject, AccessPolicyCommand):
class SetAccessPerms (line 1383) | class SetAccessPerms(DDLOperation):
class AlterAccessPolicy (line 1388) | class AlterAccessPolicy(AlterObject, AccessPolicyCommand):
class DropAccessPolicy (line 1392) | class DropAccessPolicy(DropObject, AccessPolicyCommand):
class TriggerCommand (line 1396) | class TriggerCommand(ObjectDDL):
class CreateTrigger (line 1401) | class CreateTrigger(CreateObject, TriggerCommand):
class AlterTrigger (line 1409) | class AlterTrigger(AlterObject, TriggerCommand):
class DropTrigger (line 1413) | class DropTrigger(DropObject, TriggerCommand):
class RewriteCommand (line 1417) | class RewriteCommand(ObjectDDL):
class CreateRewrite (line 1433) | class CreateRewrite(CreateObject, RewriteCommand):
class AlterRewrite (line 1437) | class AlterRewrite(AlterObject, RewriteCommand):
class DropRewrite (line 1441) | class DropRewrite(DropObject, RewriteCommand):
class Language (line 1445) | class Language(s_enum.StrEnum):
class FunctionCode (line 1450) | class FunctionCode(DDL):
class FunctionCommand (line 1458) | class FunctionCommand(DDLCommand):
class CreateFunction (line 1464) | class CreateFunction(CreateObject, FunctionCommand):
class AlterFunction (line 1472) | class AlterFunction(AlterObject, FunctionCommand):
class DropFunction (line 1478) | class DropFunction(DropObject, FunctionCommand):
class OperatorCode (line 1482) | class OperatorCode(DDL):
class OperatorCommand (line 1490) | class OperatorCommand(DDLCommand):
class CreateOperator (line 1497) | class CreateOperator(CreateObject, OperatorCommand):
class AlterOperator (line 1503) | class AlterOperator(AlterObject, OperatorCommand):
class DropOperator (line 1507) | class DropOperator(DropObject, OperatorCommand):
class CastCode (line 1511) | class CastCode(DDL):
class CastCommand (line 1519) | class CastCommand(ObjectDDL):
class CreateCast (line 1526) | class CreateCast(CreateObject, CastCommand):
class AlterCast (line 1532) | class AlterCast(AlterObject, CastCommand):
class DropCast (line 1536) | class DropCast(DropObject, CastCommand):
class OptionalExpr (line 1540) | class OptionalExpr(Expr):
class ConfigOp (line 1551) | class ConfigOp(Base):
class ConfigSet (line 1557) | class ConfigSet(ConfigOp):
class ConfigInsert (line 1562) | class ConfigInsert(ConfigOp):
class ConfigReset (line 1567) | class ConfigReset(ConfigOp):
class DescribeStmt (line 1576) | class DescribeStmt(Command):
class ExplainStmt (line 1588) | class ExplainStmt(Command):
class AdministerStmt (line 1599) | class AdministerStmt(Command):
class SDL (line 1609) | class SDL(Base):
class ModuleDeclaration (line 1615) | class ModuleDeclaration(SDL):
class Schema (line 1622) | class Schema(SDL, GrammarEntryPoint, Base):
function get_ddl_field_command (line 1631) | def get_ddl_field_command(
function get_ddl_field_value (line 1642) | def get_ddl_field_value(
function get_ddl_subcommand (line 1650) | def get_ddl_subcommand(
function has_ddl_subcommand (line 1661) | def has_ddl_subcommand(
FILE: edb/edgeql/codegen.py
function _bytes_escape (line 60) | def _bytes_escape(match: Match[bytes]) -> bytes:
function param_to_str (line 68) | def param_to_str(ident: str) -> str:
function ident_to_str (line 73) | def ident_to_str(ident: str, allow_num: bool=False) -> str:
class EdgeQLSourceGeneratorError (line 80) | class EdgeQLSourceGeneratorError(errors.InternalServerError):
class EdgeSchemaSourceGeneratorError (line 84) | class EdgeSchemaSourceGeneratorError(errors.InternalServerError):
class EdgeQLSourceGenerator (line 88) | class EdgeQLSourceGenerator(codegen.SourceGenerator):
method __init__ (line 90) | def __init__(
method visit (line 109) | def visit(
method _kw_case (line 119) | def _kw_case(self, *kws: str) -> str:
method _write_keywords (line 127) | def _write_keywords(self, *kws: str) -> None:
method _needs_parentheses (line 130) | def _needs_parentheses(self, node: Any) -> bool:
method generic_visit (line 147) | def generic_visit(
method _block_ws (line 158) | def _block_ws(self, change: int, newlines: bool = True) -> None:
method _visit_aliases (line 166) | def _visit_aliases(self, node: qlast.Statement) -> None:
method _visit_filter (line 174) | def _visit_filter(
method _visit_order (line 183) | def _visit_order(
method _visit_offset_limit (line 197) | def _visit_offset_limit(
method visit_Commands (line 211) | def visit_Commands(self, node: qlast.Commands) -> None:
method visit_AliasedExpr (line 214) | def visit_AliasedExpr(self, node: qlast.AliasedExpr) -> None:
method visit_InsertQuery (line 223) | def visit_InsertQuery(self, node: qlast.InsertQuery) -> None:
method visit_UpdateQuery (line 255) | def visit_UpdateQuery(self, node: qlast.UpdateQuery) -> None:
method visit_DeleteQuery (line 276) | def visit_DeleteQuery(self, node: qlast.DeleteQuery) -> None:
method visit_SelectQuery (line 295) | def visit_SelectQuery(self, node: qlast.SelectQuery) -> None:
method visit_ForQuery (line 323) | def visit_ForQuery(self, node: qlast.ForQuery) -> None:
method visit_GroupingIdentList (line 349) | def visit_GroupingIdentList(self, atom: qlast.GroupingIdentList) -> None:
method visit_GroupingSimple (line 354) | def visit_GroupingSimple(self, node: qlast.GroupingSimple) -> None:
method visit_GroupingSets (line 357) | def visit_GroupingSets(self, node: qlast.GroupingSets) -> None:
method visit_GroupingOperation (line 362) | def visit_GroupingOperation(self, node: qlast.GroupingOperation) -> None:
method visit_GroupQuery (line 368) | def visit_GroupQuery(
method visit_InternalGroupQuery (line 400) | def visit_InternalGroupQuery(self, node: qlast.InternalGroupQuery) -> ...
method visit_ModuleAliasDecl (line 431) | def visit_ModuleAliasDecl(self, node: qlast.ModuleAliasDecl) -> None:
method visit_SortExpr (line 438) | def visit_SortExpr(self, node: qlast.SortExpr) -> None:
method visit_DetachedExpr (line 447) | def visit_DetachedExpr(self, node: qlast.DetachedExpr) -> None:
method visit_GlobalExpr (line 451) | def visit_GlobalExpr(self, node: qlast.GlobalExpr) -> None:
method visit_StrInterp (line 455) | def visit_StrInterp(self, node: qlast.StrInterp) -> None:
method visit_UnaryOp (line 465) | def visit_UnaryOp(self, node: qlast.UnaryOp) -> None:
method visit_BinOp (line 474) | def visit_BinOp(self, node: qlast.BinOp) -> None:
method visit_IsOp (line 481) | def visit_IsOp(self, node: qlast.IsOp) -> None:
method visit_TypeOp (line 488) | def visit_TypeOp(self, node: qlast.TypeOp) -> None:
method visit_IfElse (line 495) | def visit_IfElse(self, node: qlast.IfElse) -> None:
method visit_Tuple (line 520) | def visit_Tuple(self, node: qlast.Tuple) -> None:
method visit_Set (line 529) | def visit_Set(self, node: qlast.Set) -> None:
method visit_Array (line 534) | def visit_Array(self, node: qlast.Array) -> None:
method visit_NamedTuple (line 539) | def visit_NamedTuple(self, node: qlast.NamedTuple) -> None:
method visit_TupleElement (line 546) | def visit_TupleElement(self, node: qlast.TupleElement) -> None:
method visit_Path (line 551) | def visit_Path(self, node: qlast.Path) -> None:
method visit_Shape (line 582) | def visit_Shape(self, node: qlast.Shape) -> None:
method _visit_shape (line 588) | def _visit_shape(
method visit_Ptr (line 600) | def visit_Ptr(self, node: qlast.Ptr, *, quote: bool = True) -> None:
method visit_Splat (line 610) | def visit_Splat(self, node: qlast.Splat) -> None:
method visit_TypeIntersection (line 624) | def visit_TypeIntersection(self, node: qlast.TypeIntersection) -> None:
method visit_ShapeElement (line 629) | def visit_ShapeElement(self, node: qlast.ShapeElement) -> None:
method visit_QueryParameter (line 698) | def visit_QueryParameter(self, node: qlast.QueryParameter) -> None:
method visit_FunctionParameter (line 701) | def visit_FunctionParameter(self, node: qlast.FunctionParameter) -> None:
method visit_Placeholder (line 704) | def visit_Placeholder(self, node: qlast.Placeholder) -> None:
method visit_Constant (line 709) | def visit_Constant(self, node: qlast.Constant) -> None:
method visit_BytesConstant (line 725) | def visit_BytesConstant(self, node: qlast.BytesConstant) -> None:
method visit_FunctionCall (line 729) | def visit_FunctionCall(self, node: qlast.FunctionCall) -> None:
method visit_PseudoObjectRef (line 772) | def visit_PseudoObjectRef(self, node: qlast.PseudoObjectRef) -> None:
method visit_TypeCast (line 775) | def visit_TypeCast(self, node: qlast.TypeCast) -> None:
method visit_Indirection (line 783) | def visit_Indirection(self, node: qlast.Indirection) -> None:
method visit_Slice (line 790) | def visit_Slice(self, node: qlast.Slice) -> None:
method visit_Index (line 799) | def visit_Index(self, node: qlast.Index) -> None:
method visit_ObjectRef (line 804) | def visit_ObjectRef(self, node: qlast.ObjectRef) -> None:
method visit_SpecialAnchor (line 813) | def visit_SpecialAnchor(self, node: qlast.Anchor) -> None:
method visit_IRAnchor (line 816) | def visit_IRAnchor(self, node: qlast.Anchor) -> None:
method visit_TypeExprLiteral (line 819) | def visit_TypeExprLiteral(self, node: qlast.TypeExprLiteral) -> None:
method visit_TypeName (line 822) | def visit_TypeName(self, node: qlast.TypeName) -> None:
method visit_Introspect (line 849) | def visit_Introspect(self, node: qlast.Introspect) -> None:
method visit_TypeOf (line 853) | def visit_TypeOf(self, node: qlast.TypeOf) -> None:
method visit_DDLQuery (line 859) | def visit_DDLQuery(self, node: qlast.DDLQuery) -> None:
method visit_Position (line 862) | def visit_Position(self, node: qlast.Position) -> None:
method _ddl_visit_bases (line 868) | def _ddl_visit_bases(self, node: qlast.BasedOn) -> None:
method _ddl_add_pointer_bases (line 880) | def _ddl_add_pointer_bases(
method _ddl_clean_up_commands (line 895) | def _ddl_clean_up_commands(
method _ddl_visit_body (line 910) | def _ddl_visit_body(
method _visit_CreateObject (line 1043) | def _visit_CreateObject(
method _visit_AlterObject (line 1077) | def _visit_AlterObject(
method _visit_DropObject (line 1115) | def _visit_DropObject(
method visit_Rename (line 1141) | def visit_Rename(self, node: qlast.Rename) -> None:
method visit_AlterAddInherit (line 1145) | def visit_AlterAddInherit(self, node: qlast.AlterAddInherit) -> None:
method visit_AlterDropInherit (line 1153) | def visit_AlterDropInherit(self, node: qlast.AlterDropInherit) -> None:
method visit_CreateDatabase (line 1158) | def visit_CreateDatabase(self, node: qlast.CreateDatabase) -> None:
method visit_AlterDatabase (line 1177) | def visit_AlterDatabase(self, node: qlast.AlterDatabase) -> None:
method visit_DropDatabase (line 1180) | def visit_DropDatabase(self, node: qlast.DropDatabase) -> None:
method visit_CreateRole (line 1183) | def visit_CreateRole(self, node: qlast.CreateRole) -> None:
method visit_AlterRole (line 1191) | def visit_AlterRole(self, node: qlast.AlterRole) -> None:
method visit_DropRole (line 1194) | def visit_DropRole(self, node: qlast.DropRole) -> None:
method visit_CreateExtensionPackage (line 1197) | def visit_CreateExtensionPackage(
method visit_DropExtensionPackage (line 1215) | def visit_DropExtensionPackage(
method visit_CreateExtensionPackageMigration (line 1225) | def visit_CreateExtensionPackageMigration(
method visit_DropExtensionPackageMigration (line 1247) | def visit_DropExtensionPackageMigration(
method visit_CreateExtension (line 1260) | def visit_CreateExtension(
method visit_AlterExtension (line 1276) | def visit_AlterExtension(self, node: qlast.AlterExtension) -> None:
method visit_DropExtension (line 1283) | def visit_DropExtension(
method visit_CreateFuture (line 1289) | def visit_CreateFuture(
method visit_DropFuture (line 1300) | def visit_DropFuture(
method visit_CreateMigration (line 1306) | def visit_CreateMigration(self, node: qlast.CreateMigration) -> None:
method visit_StartMigration (line 1329) | def visit_StartMigration(self, node: qlast.StartMigration) -> None:
method visit_CommitMigration (line 1341) | def visit_CommitMigration(self, node: qlast.CommitMigration) -> None:
method visit_AbortMigration (line 1344) | def visit_AbortMigration(self, node: qlast.AbortMigration) -> None:
method visit_PopulateMigration (line 1347) | def visit_PopulateMigration(self, node: qlast.PopulateMigration) -> None:
method visit_StartMigrationRewrite (line 1350) | def visit_StartMigrationRewrite(
method visit_CommitMigrationRewrite (line 1355) | def visit_CommitMigrationRewrite(
method visit_AbortMigrationRewrite (line 1360) | def visit_AbortMigrationRewrite(
method visit_DescribeCurrentMigration (line 1365) | def visit_DescribeCurrentMigration(
method visit_AlterCurrentMigrationRejectProposed (line 1372) | def visit_AlterCurrentMigrationRejectProposed(
method visit_AlterMigration (line 1378) | def visit_AlterMigration(self, node: qlast.AlterMigration) -> None:
method visit_DropMigration (line 1381) | def visit_DropMigration(self, node: qlast.DropMigration) -> None:
method visit_ResetSchema (line 1384) | def visit_ResetSchema(self, node: qlast.ResetSchema) -> None:
method visit_CreateModule (line 1387) | def visit_CreateModule(self, node: qlast.CreateModule) -> None:
method visit_AlterModule (line 1393) | def visit_AlterModule(self, node: qlast.AlterModule) -> None:
method visit_DropModule (line 1396) | def visit_DropModule(self, node: qlast.DropModule) -> None:
method visit_CreateAlias (line 1399) | def visit_CreateAlias(self, node: qlast.CreateAlias) -> None:
method visit_AlterAlias (line 1419) | def visit_AlterAlias(self, node: qlast.AlterAlias) -> None:
method visit_DropAlias (line 1422) | def visit_DropAlias(self, node: qlast.DropAlias) -> None:
method visit_SetField (line 1425) | def visit_SetField(self, node: qlast.SetField) -> None:
method _eval_bool_expr (line 1465) | def _eval_bool_expr(
method _eval_enum_expr (line 1475) | def _eval_enum_expr(
method _process_special_set (line 1487) | def _process_special_set(self, node: qlast.SetField) -> list[str]:
method visit_CreateAnnotation (line 1540) | def visit_CreateAnnotation(self, node: qlast.CreateAnnotation) -> None:
method visit_AlterAnnotation (line 1548) | def visit_AlterAnnotation(self, node: qlast.AlterAnnotation) -> None:
method visit_DropAnnotation (line 1551) | def visit_DropAnnotation(self, node: qlast.DropAnnotation) -> None:
method visit_CreateAnnotationValue (line 1554) | def visit_CreateAnnotationValue(
method visit_AlterAnnotationValue (line 1565) | def visit_AlterAnnotationValue(
method visit_DropAnnotationValue (line 1579) | def visit_DropAnnotationValue(
method visit_CreateConstraint (line 1585) | def visit_CreateConstraint(self, node: qlast.CreateConstraint) -> None:
method visit_AlterConstraint (line 1603) | def visit_AlterConstraint(self, node: qlast.AlterConstraint) -> None:
method visit_DropConstraint (line 1606) | def visit_DropConstraint(self, node: qlast.DropConstraint) -> None:
method _after_constraint (line 1609) | def _after_constraint(self, node: qlast.ConcreteConstraintOp) -> None:
method visit_CreateConcreteConstraint (line 1625) | def visit_CreateConcreteConstraint(
method visit_AlterConcreteConstraint (line 1636) | def visit_AlterConcreteConstraint(
method visit_DropConcreteConstraint (line 1646) | def visit_DropConcreteConstraint(
method _format_access_kinds (line 1653) | def _format_access_kinds(self, kinds: list[qltypes.AccessKind]) -> str:
method visit_CreateAccessPolicy (line 1663) | def visit_CreateAccessPolicy(self, node: qlast.CreateAccessPolicy) -> ...
method visit_SetAccessPerms (line 1691) | def visit_SetAccessPerms(self, node: qlast.SetAccessPerms) -> None:
method visit_AlterAccessPolicy (line 1695) | def visit_AlterAccessPolicy(self, node: qlast.AlterAccessPolicy) -> None:
method visit_DropAccessPolicy (line 1698) | def visit_DropAccessPolicy(self, node: qlast.DropAccessPolicy) -> None:
method _format_trigger_kinds (line 1701) | def _format_trigger_kinds(self, kinds: list[qltypes.TriggerKind]) -> str:
method visit_CreateTrigger (line 1707) | def visit_CreateTrigger(self, node: qlast.CreateTrigger) -> None:
method visit_AlterTrigger (line 1738) | def visit_AlterTrigger(self, node: qlast.AlterTrigger) -> None:
method visit_DropTrigger (line 1741) | def visit_DropTrigger(self, node: qlast.DropTrigger) -> None:
method _format_rewrite_kinds (line 1744) | def _format_rewrite_kinds(self, kinds: list[qltypes.RewriteKind]) -> str:
method visit_CreateRewrite (line 1750) | def visit_CreateRewrite(self, node: qlast.CreateRewrite) -> None:
method visit_AlterRewrite (line 1771) | def visit_AlterRewrite(self, node: qlast.AlterRewrite) -> None:
method visit_DropRewrite (line 1780) | def visit_DropRewrite(self, node: qlast.DropRewrite) -> None:
method visit_CreateScalarType (line 1789) | def visit_CreateScalarType(self, node: qlast.CreateScalarType) -> None:
method visit_AlterScalarType (line 1799) | def visit_AlterScalarType(self, node: qlast.AlterScalarType) -> None:
method visit_DropScalarType (line 1802) | def visit_DropScalarType(self, node: qlast.DropScalarType) -> None:
method visit_CreatePseudoType (line 1805) | def visit_CreatePseudoType(self, node: qlast.CreatePseudoType) -> None:
method visit_CreateProperty (line 1811) | def visit_CreateProperty(self, node: qlast.CreateProperty) -> None:
method visit_AlterProperty (line 1815) | def visit_AlterProperty(self, node: qlast.AlterProperty) -> None:
method visit_DropProperty (line 1818) | def visit_DropProperty(self, node: qlast.DropProperty) -> None:
method visit_CreateConcreteProperty (line 1821) | def visit_CreateConcreteProperty(
method _process_AlterConcretePointer_for_SDL (line 1826) | def _process_AlterConcretePointer_for_SDL(
method visit_AlterConcreteProperty (line 1845) | def visit_AlterConcreteProperty(
method visit_DropConcreteProperty (line 1850) | def visit_DropConcreteProperty(
method visit_CreateLink (line 1855) | def visit_CreateLink(self, node: qlast.CreateLink) -> None:
method visit_AlterLink (line 1859) | def visit_AlterLink(self, node: qlast.AlterLink) -> None:
method visit_DropLink (line 1862) | def visit_DropLink(self, node: qlast.DropLink) -> None:
method visit_CreateConcretePointer (line 1865) | def visit_CreateConcretePointer(
method visit_CreateConcreteUnknownPointer (line 1918) | def visit_CreateConcreteUnknownPointer(
method visit_AlterConcreteUnknownPointer (line 1923) | def visit_AlterConcreteUnknownPointer(
method visit_CreateConcreteLink (line 1928) | def visit_CreateConcreteLink(self, node: qlast.CreateConcreteLink) -> ...
method visit_AlterConcretePointer (line 1931) | def visit_AlterConcretePointer(
method visit_AlterConcreteLink (line 1982) | def visit_AlterConcreteLink(self, node: qlast.AlterConcreteLink) -> None:
method visit_DropConcreteLink (line 1985) | def visit_DropConcreteLink(self, node: qlast.DropConcreteLink) -> None:
method visit_SetPointerType (line 1988) | def visit_SetPointerType(self, node: qlast.SetPointerType) -> None:
method visit_SetPointerCardinality (line 1999) | def visit_SetPointerCardinality(
method visit_SetPointerOptionality (line 2014) | def visit_SetPointerOptionality(
method visit_OnTargetDelete (line 2030) | def visit_OnTargetDelete(self, node: qlast.OnTargetDelete) -> None:
method visit_OnSourceDelete (line 2036) | def visit_OnSourceDelete(self, node: qlast.OnSourceDelete) -> None:
method visit_CreateObjectType (line 2042) | def visit_CreateObjectType(self, node: qlast.CreateObjectType) -> None:
method visit_AlterObjectType (line 2052) | def visit_AlterObjectType(self, node: qlast.AlterObjectType) -> None:
method visit_DropObjectType (line 2055) | def visit_DropObjectType(self, node: qlast.DropObjectType) -> None:
method _after_index (line 2058) | def _after_index(self, node: qlast.ConcreteIndexCommand) -> None:
method visit_IndexType (line 2079) | def visit_IndexType(self, node: qlast.IndexType) -> None:
method visit_CreateIndex (line 2091) | def visit_CreateIndex(self, node: qlast.CreateIndex) -> None:
method visit_AlterIndex (line 2115) | def visit_AlterIndex(self, node: qlast.AlterIndex) -> None:
method visit_DropIndex (line 2118) | def visit_DropIndex(self, node: qlast.DropIndex) -> None:
method visit_IndexCode (line 2121) | def visit_IndexCode(self, node: qlast.IndexCode) -> None:
method visit_CreateConcreteIndex (line 2125) | def visit_CreateConcreteIndex(
method visit_AlterConcreteIndex (line 2136) | def visit_AlterConcreteIndex(self, node: qlast.AlterConcreteIndex) -> ...
method visit_DropConcreteIndex (line 2141) | def visit_DropConcreteIndex(self, node: qlast.DropConcreteIndex) -> None:
method visit_CreateIndexMatch (line 2146) | def visit_CreateIndexMatch(self, node: qlast.CreateIndexMatch) -> None:
method visit_DropIndexMatch (line 2157) | def visit_DropIndexMatch(self, node: qlast.DropIndexMatch) -> None:
method visit_CreateOperator (line 2167) | def visit_CreateOperator(self, node: qlast.CreateOperator) -> None:
method visit_AlterOperator (line 2230) | def visit_AlterOperator(self, node: qlast.AlterOperator) -> None:
method visit_DropOperator (line 2242) | def visit_DropOperator(self, node: qlast.DropOperator) -> None:
method _function_after_name (line 2254) | def _function_after_name(
method visit_CreateFunction (line 2310) | def visit_CreateFunction(self, node: qlast.CreateFunction) -> None:
method visit_AlterFunction (line 2316) | def visit_AlterFunction(self, node: qlast.AlterFunction) -> None:
method visit_DropFunction (line 2327) | def visit_DropFunction(self, node: qlast.DropFunction) -> None:
method visit_FuncParamDecl (line 2334) | def visit_FuncParamDecl(self, node: qlast.FuncParamDecl) -> None:
method visit_CreateCast (line 2352) | def visit_CreateCast(self, node: qlast.CreateCast) -> None:
method visit_AlterCast (line 2401) | def visit_AlterCast(self, node: qlast.AlterCast) -> None:
method visit_DropCast (line 2414) | def visit_DropCast(self, node: qlast.DropCast) -> None:
method visit_SetGlobalType (line 2427) | def visit_SetGlobalType(self, node: qlast.SetGlobalType) -> None:
method visit_CreateGlobal (line 2440) | def visit_CreateGlobal(self, node: qlast.CreateGlobal) -> None:
method visit_AlterGlobal (line 2475) | def visit_AlterGlobal(self, node: qlast.AlterGlobal) -> None:
method visit_DropGlobal (line 2478) | def visit_DropGlobal(self, node: qlast.DropGlobal) -> None:
method visit_CreatePermission (line 2481) | def visit_CreatePermission(self, node: qlast.CreatePermission) -> None:
method visit_AlterPermission (line 2484) | def visit_AlterPermission(self, node: qlast.AlterPermission) -> None:
method visit_DropPermission (line 2487) | def visit_DropPermission(self, node: qlast.DropPermission) -> None:
method visit_ConfigSet (line 2490) | def visit_ConfigSet(self, node: qlast.ConfigSet) -> None:
method visit_ConfigInsert (line 2501) | def visit_ConfigInsert(self, node: qlast.ConfigInsert) -> None:
method visit_ConfigReset (line 2510) | def visit_ConfigReset(self, node: qlast.ConfigReset) -> None:
method visit_SessionSetAliasDecl (line 2520) | def visit_SessionSetAliasDecl(
method visit_SessionResetAllAliases (line 2528) | def visit_SessionResetAllAliases(
method visit_SessionResetModule (line 2533) | def visit_SessionResetModule(self, node: qlast.SessionResetModule) -> ...
method visit_SessionResetAliasDecl (line 2536) | def visit_SessionResetAliasDecl(
method visit_StartTransaction (line 2542) | def visit_StartTransaction(self, node: qlast.StartTransaction) -> None:
method visit_RollbackTransaction (line 2559) | def visit_RollbackTransaction(
method visit_CommitTransaction (line 2564) | def visit_CommitTransaction(self, node: qlast.CommitTransaction) -> None:
method visit_DeclareSavepoint (line 2567) | def visit_DeclareSavepoint(self, node: qlast.DeclareSavepoint) -> None:
method visit_RollbackToSavepoint (line 2571) | def visit_RollbackToSavepoint(
method visit_ReleaseSavepoint (line 2577) | def visit_ReleaseSavepoint(self, node: qlast.ReleaseSavepoint) -> None:
method visit_DescribeStmt (line 2581) | def visit_DescribeStmt(self, node: qlast.DescribeStmt) -> None:
method visit_Options (line 2594) | def visit_Options(self, node: qlast.Options) -> None:
method copy_generator (line 2606) | def copy_generator(self) -> EdgeQLSourceGenerator:
method generate_isolated_text (line 2617) | def generate_isolated_text(self, node: qlast.Base) -> str:
method visit_Schema (line 2622) | def visit_Schema(self, node: qlast.Schema) -> None:
method visit_ModuleDeclaration (line 2629) | def visit_ModuleDeclaration(self, node: qlast.ModuleDeclaration) -> None:
method to_source (line 2640) | def to_source( # type: ignore
function _fix_parent_links (line 2674) | def _fix_parent_links(node: qlast.Base) -> qlast.Base:
FILE: edb/edgeql/compiler/__init__.py
function compiler_entrypoint (line 181) | def compiler_entrypoint[Tf: Callable[..., Any]](func: Tf) -> Tf:
function compile_ast_to_ir (line 192) | def compile_ast_to_ir(
function compile_ast_to_ir (line 203) | def compile_ast_to_ir(
function compile_ast_to_ir (line 214) | def compile_ast_to_ir(
function compile_ast_to_ir (line 225) | def compile_ast_to_ir(
function compile_ast_fragment_to_ir (line 309) | def compile_ast_fragment_to_ir(
function preprocess_script (line 373) | def preprocess_script(
function evaluate_to_python_val (line 383) | def evaluate_to_python_val(
function evaluate_ir_statement_to_python_val (line 416) | def evaluate_ir_statement_to_python_val(
function evaluate_ast_to_python_val_and_ir (line 436) | def evaluate_ast_to_python_val_and_ir(
function evaluate_ast_to_python_val (line 477) | def evaluate_ast_to_python_val(
function compile_constant_tree_to_ir (line 512) | def compile_constant_tree_to_ir(
function normalize (line 552) | def normalize(
function renormalize_compat (line 577) | def renormalize_compat(
function _load (line 600) | def _load() -> None:
FILE: edb/edgeql/compiler/astutils.py
function extend_binop (line 43) | def extend_binop(
function ensure_ql_query (line 66) | def ensure_ql_query(expr: qlast.Expr) -> qlast.Query:
function ensure_ql_select (line 79) | def ensure_ql_select(expr: qlast.Expr) -> qlast.SelectQuery:
function is_ql_empty_set (line 88) | def is_ql_empty_set(expr: qlast.Expr) -> bool:
function is_ql_empty_array (line 92) | def is_ql_empty_array(expr: qlast.Expr) -> bool:
function is_nontrivial_shape_element (line 96) | def is_nontrivial_shape_element(shape_el: qlast.ShapeElement) -> bool:
function extend_path (line 110) | def extend_path(expr: qlast.Expr, field: str) -> qlast.Path:
class Params (line 123) | class Params:
class FindParams (line 133) | class FindParams(ast.NodeVisitor):
method __init__ (line 138) | def __init__(self, modaliases: dict[Optional[str], str]) -> None:
method visit_Command (line 143) | def visit_Command(self, n: qlast.Command) -> None:
method visit_Query (line 146) | def visit_Query(self, n: qlast.Query) -> None:
method _visit_with_stmt (line 149) | def _visit_with_stmt(self, n: qlast.Statement) -> None:
method visit_TypeCast (line 162) | def visit_TypeCast(self, n: qlast.TypeCast) -> None:
method visit_QueryParameter (line 173) | def visit_QueryParameter(self, n: qlast.QueryParameter) -> None:
method visit_CreateFunction (line 176) | def visit_CreateFunction(self, n: qlast.CreateFunction) -> None:
method visit_CreateConstraint (line 179) | def visit_CreateConstraint(self, n: qlast.CreateFunction) -> None:
function find_parameters (line 183) | def find_parameters(
class alias_view (line 192) | class alias_view(
method match (line 197) | def match(obj: object) -> tuple[str, list[qlast.PathElement]]:
function contains_dml (line 207) | def contains_dml(
function _get_functions_from_call (line 241) | def _get_functions_from_call(
FILE: edb/edgeql/compiler/casts.py
function compile_cast (line 67) | def compile_cast(
function _has_common_concrete_scalar (line 376) | def _has_common_concrete_scalar(
function _get_concrete_scalar_base (line 392) | def _get_concrete_scalar_base(
function _compile_cast (line 408) | def _compile_cast(
function _cast_to_ir (line 432) | def _cast_to_ir(
function _inheritance_cast_to_ir (line 460) | def _inheritance_cast_to_ir(
class CastParamListWrapper (line 486) | class CastParamListWrapper(s_func.ParameterLikeList):
method __init__ (line 488) | def __init__(self, params: Iterable[s_func.ParameterDesc]) -> None:
method get_by_name (line 491) | def get_by_name(
method as_str (line 498) | def as_str(self, schema: s_schema.Schema) -> str:
method find_named_only (line 501) | def find_named_only(
method find_variadic (line 507) | def find_variadic(
method has_polymorphic (line 513) | def has_polymorphic(
method has_objects (line 519) | def has_objects(
method has_set_of (line 525) | def has_set_of(
method objects (line 531) | def objects(
method has_required_params (line 537) | def has_required_params(self, schema: s_schema.Schema) -> bool:
method get_in_canonical_order (line 540) | def get_in_canonical_order(
class CastCallableWrapper (line 547) | class CastCallableWrapper(s_func.CallableLike):
method __init__ (line 550) | def __init__(self, cast: s_casts.Cast) -> None:
method has_inlined_defaults (line 553) | def has_inlined_defaults(self, schema: s_schema.Schema) -> bool:
method get_params (line 556) | def get_params(
method get_return_type (line 580) | def get_return_type(self, schema: s_schema.Schema) -> s_types.Type:
method get_return_typemod (line 583) | def get_return_typemod(self, schema: s_schema.Schema) -> ft.TypeModifier:
method get_verbosename (line 586) | def get_verbosename(self, schema: s_schema.Schema) -> str:
method get_abstract (line 589) | def get_abstract(self, schema: s_schema.Schema) -> bool:
function _find_cast (line 593) | def _find_cast(
function _cast_json_to_tuple (line 639) | def _cast_json_to_tuple(
function _cast_tuple (line 754) | def _cast_tuple(
function _cast_range (line 855) | def _cast_range(
function _cast_multirange (line 934) | def _cast_multirange(
function _cast_json_to_range (line 1005) | def _cast_json_to_range(
function _cast_json_to_multirange (line 1156) | def _cast_json_to_multirange(
function _cast_to_base_array (line 1190) | def _cast_to_base_array(
function _cast_array (line 1208) | def _cast_array(
function _cast_array_literal (line 1314) | def _cast_array_literal(
function _cast_enum_str_immutable (line 1375) | def _cast_enum_str_immutable(
function _find_object_by_id (line 1418) | def _find_object_by_id(
function cast_message_context (line 1477) | def cast_message_context(ctx: context.ContextLevel) -> Optional[str]:
function _collection_element_message_context (line 1499) | def _collection_element_message_context(
FILE: edb/edgeql/compiler/clauses.py
function compile_where_clause (line 44) | def compile_where_clause(
function adjust_nones_order (line 65) | def adjust_nones_order(
function compile_orderby_clause (line 105) | def compile_orderby_clause(
function compile_limit_offset_clause (line 183) | def compile_limit_offset_clause(
FILE: edb/edgeql/compiler/config.py
class SettingInfo (line 57) | class SettingInfo(NamedTuple):
function compile_ConfigSet (line 70) | def compile_ConfigSet(
function compile_ConfigReset (line 133) | def compile_ConfigReset(
function compile_ConfigInsert (line 195) | def compile_ConfigInsert(
function _inject_tname (line 243) | def _inject_tname(
function _validate_config_object (line 271) | def _validate_config_object(
function _validate_global_op (line 293) | def _validate_global_op(
function _enforce_pointer_constraints (line 330) | def _enforce_pointer_constraints(
function _validate_op (line 368) | def _validate_op(
FILE: edb/edgeql/compiler/config_desc.py
function compile_describe_config (line 46) | def compile_describe_config(
function _describe_config (line 58) | def _describe_config(
function _describe_config_inner (line 105) | def _describe_config_inner(
function _render_config_value (line 207) | def _render_config_value(
function _render_config_redacted (line 250) | def _render_config_redacted(
function _render_config_set (line 269) | def _render_config_set(
function _render_config_scalar (line 297) | def _render_config_scalar(
function _render_config_object (line 319) | def _render_config_object(
function _describe_config_object (line 383) | def _describe_config_object(
FILE: edb/edgeql/compiler/conflicts.py
function _get_needed_ptrs (line 54) | def _get_needed_ptrs(
function _get_rewrite_kind (line 100) | def _get_rewrite_kind(stmt: irast.MutatingStmt) -> qltypes.RewriteKind |...
function _get_rewritten_ptrs (line 110) | def _get_rewritten_ptrs(
function _compile_conflict_select_for_obj_type (line 129) | def _compile_conflict_select_for_obj_type(
function _constr_matters (line 353) | def _constr_matters(
function _split_constraints (line 386) | def _split_constraints(
function _compile_conflict_select (line 424) | def _compile_conflict_select(
function _get_exclusive_ptr_constraints (line 491) | def _get_exclusive_ptr_constraints(
function compile_insert_unless_conflict (line 512) | def compile_insert_unless_conflict(
function compile_insert_unless_conflict_on (line 538) | def compile_insert_unless_conflict_on(
function _has_explicit_id_write (line 654) | def _has_explicit_id_write(stmt: irast.MutatingStmt) -> bool:
function _disallow_exclusive_linkprops (line 667) | def _disallow_exclusive_linkprops(
function _get_type_conflict_constraint_entries (line 694) | def _get_type_conflict_constraint_entries(
function _compile_inheritance_conflict_selects (line 754) | def _compile_inheritance_conflict_selects(
function compile_inheritance_conflict_checks (line 803) | def compile_inheritance_conflict_checks(
function check_for_isolation_conflicts (line 898) | def check_for_isolation_conflicts(
FILE: edb/edgeql/compiler/context.py
class Exposure (line 72) | class Exposure(enum.IntEnum):
method __bool__ (line 77) | def __bool__(self) -> bool:
class ContextSwitchMode (line 81) | class ContextSwitchMode(enum.Enum):
class ViewRPtr (line 90) | class ViewRPtr:
class SecurityContext (line 102) | class SecurityContext:
method toggle_policies (line 108) | def toggle_policies(self) -> SecurityContext:
class ScopeInfo (line 115) | class ScopeInfo:
class PointerRefCache (line 121) | class PointerRefCache(dict[irtyputils.PtrRefCacheKey, irast.BasePointerR...
method __init__ (line 125) | def __init__(self) -> None:
method __setitem__ (line 129) | def __setitem__(
method get_ptrcls_for_ref (line 137) | def get_ptrcls_for_ref(
class ServerParamConversion (line 153) | class ServerParamConversion:
class Environment (line 167) | class Environment:
method __init__ (line 342) | def __init__(
method add_schema_ref (line 397) | def add_schema_ref(
method get_schema_object_and_track (line 405) | def get_schema_object_and_track(
method get_schema_object_and_track (line 419) | def get_schema_object_and_track(
method get_schema_object_and_track (line 432) | def get_schema_object_and_track(
method get_schema_type_and_track (line 467) | def get_schema_type_and_track(
class ContextLevel (line 486) | class ContextLevel(compiler.ContextLevel):
method __init__ (line 646) | def __init__(
method subquery (line 816) | def subquery(self) -> compiler.CompilerContextManager[ContextLevel]:
method newscope (line 819) | def newscope(
method detached (line 831) | def detached(self) -> compiler.CompilerContextManager[ContextLevel]:
method create_anchor (line 834) | def create_anchor(
method maybe_create_anchor (line 854) | def maybe_create_anchor(
method get_security_context (line 864) | def get_security_context(self) -> SecurityContext:
method log_warning (line 878) | def log_warning(self, warning: errors.EdgeDBError) -> None:
method log_repeatable_read_danger (line 881) | def log_repeatable_read_danger(
method allow_factoring (line 886) | def allow_factoring(self) -> None:
class CompilerContext (line 890) | class CompilerContext(compiler.CompilerContext[ContextLevel]):
class CollectionCastInfo (line 895) | class CollectionCastInfo(NamedTuple):
FILE: edb/edgeql/compiler/dispatch.py
function compile (line 32) | def compile(node: qlast.Base, *, ctx: context.ContextLevel) -> irast.Set:
FILE: edb/edgeql/compiler/eta_expand.py
function needs_eta_expansion_expr (line 102) | def needs_eta_expansion_expr(
function needs_eta_expansion (line 148) | def needs_eta_expansion(
function _get_alias (line 197) | def _get_alias(
function eta_expand_ir (line 206) | def eta_expand_ir(
function eta_expand_ordered (line 249) | def eta_expand_ordered(
function eta_expand (line 284) | def eta_expand(
function eta_expand_tuple (line 307) | def eta_expand_tuple(
function eta_expand_array (line 339) | def eta_expand_array(
FILE: edb/edgeql/compiler/expr.py
function compile__Optional (line 67) | def compile__Optional(
function compile_Path (line 79) | def compile_Path(expr: qlast.Path, *, ctx: context.ContextLevel) -> iras...
function _balance (line 105) | def _balance(
function compile_BinOp (line 142) | def compile_BinOp(expr: qlast.BinOp, *, ctx: context.ContextLevel) -> ir...
function compile_IsOp (line 166) | def compile_IsOp(expr: qlast.IsOp, *, ctx: context.ContextLevel) -> iras...
function compile_StrInterp (line 172) | def compile_StrInterp(
function compile_DetachedExpr (line 196) | def compile_DetachedExpr(
function compile_Set (line 213) | def compile_Set(expr: qlast.Set, *, ctx: context.ContextLevel) -> irast....
function compile_Constant (line 251) | def compile_Constant(
function compile_BytesConstant (line 294) | def compile_BytesConstant(
function compile_NamedTuple (line 309) | def compile_NamedTuple(
function compile_Tuple (line 333) | def compile_Tuple(expr: qlast.Tuple, *, ctx: context.ContextLevel) -> ir...
function compile_Array (line 347) | def compile_Array(expr: qlast.Array, *, ctx: context.ContextLevel) -> ir...
function _compile_dml_coalesce (line 352) | def _compile_dml_coalesce(
function _compile_dml_ifelse (line 433) | def _compile_dml_ifelse(
function compile_IfElse (line 526) | def compile_IfElse(
function compile_UnaryOp (line 544) | def compile_UnaryOp(
function _cache_as_type_rewrite (line 552) | def _cache_as_type_rewrite(
function compile_GlobalExpr (line 584) | def compile_GlobalExpr(
function compile_TypeCast (line 761) | def compile_TypeCast(
function _infer_type_introspection (line 910) | def _infer_type_introspection(
function compile_Introspect (line 945) | def compile_Introspect(
function _infer_index_type (line 983) | def _infer_index_type(
function _infer_slice_type (line 1062) | def _infer_slice_type(
function compile_Indirection (line 1107) | def compile_Indirection(
function compile_type_check_op (line 1151) | def compile_type_check_op(
function flatten_set (line 1194) | def flatten_set(expr: qlast.Set) -> list[qlast.Expr]:
function collect_binop (line 1205) | def collect_binop(expr: qlast.BinOp) -> list[qlast.Expr]:
function try_constant_set (line 1219) | def try_constant_set(expr: irast.Base) -> Optional[irast.ConstantSet]:
class IdentCompletionException (line 1247) | class IdentCompletionException(BaseException):
method __init__ (line 1252) | def __init__(self, suggestions: list[str]):
function compile_Cursor (line 1257) | def compile_Cursor(
FILE: edb/edgeql/compiler/func.py
function compile_FunctionCall (line 79) | def compile_FunctionCall(
class ArgumentInliner (line 517) | class ArgumentInliner(ast.NodeTransformer):
method __init__ (line 526) | def __init__(
method visit_Set (line 536) | def visit_Set(self, node: irast.Set) -> irast.Base:
method visit_PointerRef (line 588) | def visit_PointerRef(
method visit_TupleIndirectionPointerRef (line 593) | def visit_TupleIndirectionPointerRef(
method visit_SpecialPointerRef (line 598) | def visit_SpecialPointerRef(
method visit_TypeIntersectionPointerRef (line 603) | def visit_TypeIntersectionPointerRef(
class _SpecialCaseFunc (line 609) | class _SpecialCaseFunc(Protocol):
method __call__ (line 610) | def __call__(
function _special_case (line 619) | def _special_case(name: str) -> Callable[[_SpecialCaseFunc], _SpecialCas...
function compile_operator (line 627) | def compile_operator(
function _check_free_shape_op (line 958) | def _check_free_shape_op(ir: irast.Call, *, ctx: context.ContextLevel) -...
function validate_recursive_operator (line 972) | def validate_recursive_operator(
function compile_func_call_args (line 1010) | def compile_func_call_args(
function get_globals (line 1054) | def get_globals(
function finalize_args (line 1101) | def finalize_args(
function compile_ext_ai_search (line 1247) | def compile_ext_ai_search(
function compile_ext_ai_to_str (line 1306) | def compile_ext_ai_to_str(
function compile_fts_search (line 1341) | def compile_fts_search(
function _validate_object_search_call (line 1355) | def _validate_object_search_call(
function _validate_has_object_index (line 1388) | def _validate_has_object_index(
function compile_fts_with_options (line 1413) | def compile_fts_with_options(
function compile_warn_on_call (line 1465) | def compile_warn_on_call(
FILE: edb/edgeql/compiler/group.py
class FindAggregatingUses (line 34) | class FindAggregatingUses(ast_visitor.NodeVisitor):
method __init__ (line 41) | def __init__(
method visit_Stmt (line 69) | def visit_Stmt(self, stmt: irast.Stmt) -> Any:
method repeated_node_visit (line 102) | def repeated_node_visit(self, node: irast.Base) -> None:
method visit_Set (line 106) | def visit_Set(self, node: irast.Set, skip_rptr: bool = False) -> None:
method process_call (line 150) | def process_call(self, node: irast.Call, ir_set: irast.Set) -> None:
function infer_group_aggregates (line 229) | def infer_group_aggregates(
FILE: edb/edgeql/compiler/inference/cardinality.py
class CardinalityBound (line 69) | class CardinalityBound(int, enum.Enum):
method __add__ (line 75) | def __add__(self, other: int) -> CardinalityBound:
method __mul__ (line 78) | def __mul__(self, other: int) -> CardinalityBound:
method as_required (line 81) | def as_required(self) -> bool:
method as_schema_cardinality (line 84) | def as_schema_cardinality(self) -> qltypes.SchemaCardinality:
method from_required (line 91) | def from_required(cls, required: bool) -> CardinalityBound:
method from_schema_value (line 95) | def from_schema_value(
class CardinalityBounds (line 109) | class CardinalityBounds(NamedTuple):
function _card_to_bounds (line 114) | def _card_to_bounds(card: qltypes.Cardinality) -> CardinalityBounds:
function _bounds_to_card (line 122) | def _bounds_to_card(
function _card_unzip (line 132) | def _card_unzip(
function product (line 140) | def product(arg: Iterable[CardinalityBound]) -> CardinalityBound:
function cartesian_cardinality (line 147) | def cartesian_cardinality(
function max_cardinality (line 155) | def max_cardinality(
function min_cardinality (line 165) | def min_cardinality(
function _union_cardinality (line 175) | def _union_cardinality(
function _check_op_volatility (line 188) | def _check_op_volatility(
function _common_cardinality (line 211) | def _common_cardinality(
function _infer_cardinality (line 227) | def _infer_cardinality(
function __infer_statement (line 237) | def __infer_statement(
function __infer_config_insert (line 248) | def __infer_config_insert(
function __infer_config_set (line 259) | def __infer_config_set(
function __infer_config_reset (line 284) | def __infer_config_reset(
function __infer_empty_set (line 298) | def __infer_empty_set(
function __infer_typeref (line 308) | def __infer_typeref(
function __infer_type_introspection (line 318) | def __infer_type_introspection(
function __infer_type_root (line 328) | def __infer_type_root(
function __infer_cleared (line 341) | def __infer_cleared(
function _infer_pointer_cardinality (line 350) | def _infer_pointer_cardinality(
function _update_cardinality_in_derived (line 474) | def _update_cardinality_in_derived(
function _infer_shape (line 491) | def _infer_shape(
function _infer_set (line 533) | def _infer_set(
function _infer_pointer (line 569) | def _infer_pointer(
function _infer_set_inner (line 578) | def _infer_set_inner(
function _typemod_to_card (line 662) | def _typemod_to_card(typemod: qltypes.TypeModifier) -> qltypes.Cardinality:
function _standard_call_cardinality (line 670) | def _standard_call_cardinality(
function __infer_func_call (line 706) | def __infer_func_call(
function __infer_oper_call (line 802) | def __infer_oper_call(
function __infer_const (line 838) | def __infer_const(
function __infer_param (line 848) | def __infer_param(
function __infer_function_param (line 858) | def __infer_function_param(
function __infer_inlined_param (line 868) | def __infer_inlined_param(
function __infer_const_set (line 878) | def __infer_const_set(
function __infer_typecheckop (line 888) | def __infer_typecheckop(
function __infer_typecast (line 900) | def __infer_typecast(
function _is_ptr_or_self_ref (line 919) | def _is_ptr_or_self_ref(
function extract_filters (line 947) | def extract_filters(
function _all_have_exclusive (line 1022) | def _all_have_exclusive(
function _track_all_constraint_refs (line 1032) | def _track_all_constraint_refs(
function extract_exclusive_filters (line 1044) | def extract_exclusive_filters(
function get_object_exclusive_constraints (line 1090) | def get_object_exclusive_constraints(
function _analyse_filter_clause (line 1133) | def _analyse_filter_clause(
function _infer_matset_cardinality (line 1146) | def _infer_matset_cardinality(
function _infer_dml_check_cardinality (line 1171) | def _infer_dml_check_cardinality(
function _infer_stmt_cardinality (line 1208) | def _infer_stmt_cardinality(
function _infer_singleton_only (line 1263) | def _infer_singleton_only(
function _infer_on_conflict_cardinality (line 1279) | def _infer_on_conflict_cardinality(
function __infer_select_stmt (line 1303) | def __infer_select_stmt(
function __infer_insert_stmt (line 1354) | def __infer_insert_stmt(
function __infer_update_stmt (line 1392) | def __infer_update_stmt(
function __infer_delete_stmt (line 1406) | def __infer_delete_stmt(
function __infer_group_stmt (line 1420) | def __infer_group_stmt(
function __infer_slice (line 1443) | def __infer_slice(
function __infer_index (line 1461) | def __infer_index(
function __infer_array (line 1475) | def __infer_array(
function __infer_tuple (line 1485) | def __infer_tuple(
function __infer_trigger_anchor (line 1497) | def __infer_trigger_anchor(
function __infer_searchable_string (line 1507) | def __infer_searchable_string(
function infer_cardinality (line 1518) | def infer_cardinality(
function is_subset_cardinality (line 1547) | def is_subset_cardinality(
FILE: edb/edgeql/compiler/inference/context.py
class MultiplicityInfo (line 32) | class MultiplicityInfo:
method is_empty (line 41) | def is_empty(self) -> bool:
method is_unique (line 44) | def is_unique(self) -> bool:
method is_duplicate (line 47) | def is_duplicate(self) -> bool:
class InfCtx (line 51) | class InfCtx(NamedTuple):
function make_ctx (line 71) | def make_ctx(env: context.Environment) -> InfCtx:
FILE: edb/edgeql/compiler/inference/multiplicity.py
class ContainerMultiplicityInfo (line 63) | class ContainerMultiplicityInfo(inf_ctx.MultiplicityInfo):
function _max_multiplicity (line 70) | def _max_multiplicity(
function _min_multiplicity (line 82) | def _min_multiplicity(
function _common_multiplicity (line 94) | def _common_multiplicity(
function _infer_multiplicity (line 105) | def _infer_multiplicity(
function __infer_config_insert (line 116) | def __infer_config_insert(
function __infer_config_set (line 127) | def __infer_config_set(
function __infer_config_reset (line 138) | def __infer_config_reset(
function __infer_empty_set (line 152) | def __infer_empty_set(
function __infer_type_introspection (line 162) | def __infer_type_introspection(
function __infer_type_root (line 179) | def __infer_type_root(
function __infer_cleared (line 189) | def __infer_cleared(
function _infer_shape (line 198) | def _infer_shape(
function _infer_set (line 241) | def _infer_set(
function _infer_set_inner (line 258) | def _infer_set_inner(
function __infer_func_call (line 336) | def __infer_func_call(
function __infer_oper_call (line 377) | def __infer_oper_call(
function __infer_const (line 494) | def __infer_const(
function __infer_param (line 504) | def __infer_param(
function __infer_function_param (line 514) | def __infer_function_param(
function __infer_inlined_param (line 524) | def __infer_inlined_param(
function __infer_const_set (line 534) | def __infer_const_set(
function __infer_typecheckop (line 556) | def __infer_typecheckop(
function __infer_typecast (line 575) | def __infer_typecast(
function _infer_stmt_multiplicity (line 586) | def _infer_stmt_multiplicity(
function _infer_for_multiplicity (line 626) | def _infer_for_multiplicity(
function __infer_select_stmt (line 659) | def __infer_select_stmt(
function __infer_insert_stmt (line 689) | def __infer_insert_stmt(
function __infer_update_stmt (line 721) | def __infer_update_stmt(
function __infer_delete_stmt (line 744) | def __infer_delete_stmt(
function _infer_mutating_stmt (line 766) | def _infer_mutating_stmt(
function _infer_on_conflict_clause (line 793) | def _infer_on_conflict_clause(
function __infer_group_stmt (line 805) | def __infer_group_stmt(
function __infer_slice (line 837) | def __infer_slice(
function __infer_index (line 863) | def __infer_index(
function __infer_array (line 886) | def __infer_array(
function __infer_tuple (line 896) | def __infer_tuple(
function __infer_trigger_anchor (line 932) | def __infer_trigger_anchor(
function __infer_searchable_string (line 942) | def __infer_searchable_string(
function infer_multiplicity (line 953) | def infer_multiplicity(
FILE: edb/edgeql/compiler/inference/utils.py
function get_set_scope (line 31) | def get_set_scope(
function find_visible (line 50) | def find_visible(
FILE: edb/edgeql/compiler/inference/volatility.py
function _normalize_volatility (line 56) | def _normalize_volatility(
function _max_volatility (line 65) | def _max_volatility(args: Iterable[InferredVolatility]) -> InferredVolat...
function _common_volatility (line 77) | def _common_volatility(
function _infer_volatility_inner (line 86) | def _infer_volatility_inner(
function __infer_none (line 94) | def __infer_none(
function __infer_statement (line 103) | def __infer_statement(
function __infer_config_command (line 111) | def __infer_config_command(
function __infer_emptyset (line 119) | def __infer_emptyset(
function __infer_typeref (line 127) | def __infer_typeref(
function __infer_type_introspection (line 135) | def __infer_type_introspection(
function __infer_type_root (line 143) | def __infer_type_root(
function __infer_cleared_expr (line 151) | def __infer_cleared_expr(
function _infer_pointer (line 159) | def _infer_pointer(
function __infer_set (line 189) | def __infer_set(
function __infer_func_call (line 219) | def __infer_func_call(
function __infer_oper_call (line 237) | def __infer_oper_call(
function __infer_const (line 251) | def __infer_const(
function __infer_param (line 259) | def __infer_param(
function __infer_function_param (line 267) | def __infer_function_param(
function __infer_inlined_param (line 275) | def __infer_inlined_param(
function __infer_const_set (line 283) | def __infer_const_set(
function __infer_typecheckop (line 291) | def __infer_typecheckop(
function __infer_typecast (line 299) | def __infer_typecast(
function __infer_select_stmt (line 307) | def __infer_select_stmt(
function __infer_group_stmt (line 337) | def __infer_group_stmt(
function __infer_trigger_anchor (line 346) | def __infer_trigger_anchor(
function __infer_searchable_string (line 354) | def __infer_searchable_string(
function __infer_dml_stmt (line 362) | def __infer_dml_stmt(
function __infer_slice (line 372) | def __infer_slice(
function __infer_index (line 388) | def __infer_index(
function __infer_array (line 398) | def __infer_array(
function __infer_tuple (line 406) | def __infer_tuple(
function _infer_volatility (line 414) | def _infer_volatility(
function infer_volatility (line 429) | def infer_volatility(
FILE: edb/edgeql/compiler/normalization.py
function normalize (line 47) | def normalize(
function renormalize_compat (line 57) | def renormalize_compat(
function _normalize_recursively (line 109) | def _normalize_recursively(
function normalize_generic (line 139) | def normalize_generic(
function normalize_ObjectRef (line 160) | def normalize_ObjectRef(
function _normalize_with_block (line 187) | def _normalize_with_block(
function _normalize_aliased_field (line 223) | def _normalize_aliased_field(
function normalize_SelectQuery (line 249) | def normalize_SelectQuery(
function normalize_DML (line 286) | def normalize_DML(
function normalize_ForQuery (line 312) | def normalize_ForQuery(
function normalize_GroupQuery (line 348) | def normalize_GroupQuery(
function normalize_FunctionCall (line 390) | def normalize_FunctionCall(
function compile_TypeName (line 451) | def compile_TypeName(
FILE: edb/edgeql/compiler/options.py
class GlobalCompilerOptions (line 41) | class GlobalCompilerOptions:
class CompilerOptions (line 107) | class CompilerOptions(GlobalCompilerOptions):
FILE: edb/edgeql/compiler/pathctx.py
function get_path_id (line 39) | def get_path_id(
function get_tuple_indirection_path_id (line 53) | def get_tuple_indirection_path_id(
function get_expression_path_id (line 79) | def get_expression_path_id(
function register_set_in_scope (line 91) | def register_set_in_scope(
function assign_set_scope (line 109) | def assign_set_scope(
function get_set_scope (line 128) | def get_set_scope(
function extend_path_id (line 145) | def extend_path_id(
function ban_inserting_path (line 168) | def ban_inserting_path(
function path_is_inserting (line 179) | def path_is_inserting(
FILE: edb/edgeql/compiler/policies.py
function should_ignore_rewrite (line 47) | def should_ignore_rewrite(
function get_access_policies (line 75) | def get_access_policies(
function has_own_policies (line 96) | def has_own_policies(
function compile_pol (line 121) | def compile_pol(
function get_extra_function_rewrite_filter (line 163) | def get_extra_function_rewrite_filter(ctx: context.ContextLevel) -> qlas...
function get_rewrite_filter (line 194) | def get_rewrite_filter(
function _always_references_set (line 274) | def _always_references_set(
function try_type_rewrite (line 368) | def try_type_rewrite(
function compile_dml_write_policies (line 528) | def compile_dml_write_policies(
function compile_dml_read_policies (line 569) | def compile_dml_read_policies(
function _prepare_dml_policy_context (line 596) | def _prepare_dml_policy_context(
FILE: edb/edgeql/compiler/polyres.py
class BoundArg (line 64) | class BoundArg:
class DefaultBitmask (line 71) | class DefaultBitmask(BoundArg):
class ValueArg (line 77) | class ValueArg(BoundArg):
class DefaultArg (line 94) | class DefaultArg(ValueArg):
class PassedArg (line 100) | class PassedArg(ValueArg):
class MissingArg (line 108) | class MissingArg:
class BoundCall (line 115) | class BoundCall:
function find_callable_typemods (line 140) | def find_callable_typemods(
function find_callable (line 191) | def find_callable(
function try_bind_call_args (line 291) | def try_bind_call_args(
function _check_server_arg_conversion (line 766) | def _check_server_arg_conversion(
function _resolve_server_param_conversion (line 1014) | def _resolve_server_param_conversion(
function _get_arg (line 1096) | def _get_arg(
function compile_arg (line 1127) | def compile_arg(
FILE: edb/edgeql/compiler/schemactx.py
function get_schema_object (line 57) | def get_schema_object(
function _get_partial_path_prefix_type (line 117) | def _get_partial_path_prefix_type(
function get_schema_type (line 130) | def get_schema_type(
function resolve_schema_name (line 149) | def resolve_schema_name(
function preserve_view_shape (line 159) | def preserve_view_shape(
function derive_view (line 186) | def derive_view(
function derive_ptr (line 300) | def derive_ptr(
function derive_view_name (line 369) | def derive_view_name(
function get_union_type (line 393) | def get_union_type[TypeT: s_types.Type](
function get_intersection_type (line 439) | def get_intersection_type[TypeT: s_types.Type](
function get_material_type (line 460) | def get_material_type[TypeT: s_types.Type](
function concretify (line 470) | def concretify[TypeT: s_types.Type](
function get_all_concrete (line 491) | def get_all_concrete(
class TypeIntersectionResult (line 511) | class TypeIntersectionResult(NamedTuple):
function apply_intersection (line 518) | def apply_intersection(
function derive_dummy_ptr (line 567) | def derive_dummy_ptr(
function get_union_pointer (line 601) | def get_union_pointer(
FILE: edb/edgeql/compiler/setgen.py
function new_set (line 88) | def new_set(
function new_empty_set (line 136) | def new_empty_set(
function get_set_type (line 158) | def get_set_type(
function get_expr_type (line 164) | def get_expr_type(
class KeepCurrentT (line 170) | class KeepCurrentT(enum.Enum):
function new_set_from_set (line 177) | def new_set_from_set(
function new_tuple_set (line 241) | def new_tuple_set(
function new_array_set (line 270) | def new_array_set(
function raise_self_insert_error (line 303) | def raise_self_insert_error(
function raise_invalid_property_reference (line 321) | def raise_invalid_property_reference(
function compile_path (line 336) | def compile_path(expr: qlast.Path, *, ctx: context.ContextLevel) -> iras...
function resolve_name (line 757) | def resolve_name(
function resolve_special_anchor (line 787) | def resolve_special_anchor(
function ptr_step_set (line 809) | def ptr_step_set(
function _add_target_schema_refs (line 840) | def _add_target_schema_refs(
function resolve_ptr (line 858) | def resolve_ptr(
function resolve_ptr_with_intersections (line 875) | def resolve_ptr_with_intersections(
function _check_secret_ptr (line 1073) | def _check_secret_ptr(
function extend_path (line 1115) | def extend_path(
function needs_rewrite_existence_assertion (line 1196) | def needs_rewrite_existence_assertion(
function is_injected_computable_ptr (line 1220) | def is_injected_computable_ptr(
function _is_computable_ptr (line 1236) | def _is_computable_ptr(
function compile_enum_path (line 1255) | def compile_enum_path(
function enum_indirection_set (line 1323) | def enum_indirection_set(
function tuple_indirection_set (line 1344) | def tuple_indirection_set(
function type_intersection_set (line 1377) | def type_intersection_set(
function class_set (line 1469) | def class_set(
function expression_set (line 1500) | def expression_set(
function scoped_set (line 1530) | def scoped_set(
function moveable_anchor (line 1568) | def moveable_anchor(
function ensure_set (line 1583) | def ensure_set(
function ensure_stmt (line 1631) | def ensure_stmt(
function fixup_computable_source_set (line 1642) | def fixup_computable_source_set(
function computable_ptr_set (line 1670) | def computable_ptr_set(
function _get_schema_computed_ctx (line 1837) | def _get_schema_computed_ctx(
function update_view_map (line 1880) | def update_view_map(
function get_view_map_remapping (line 1892) | def get_view_map_remapping(
function remap_path_id (line 1912) | def remap_path_id(
function _get_computable_ctx (line 1938) | def _get_computable_ctx(
function maybe_materialize (line 2014) | def maybe_materialize(
function should_materialize (line 2051) | def should_materialize(
function should_materialize_type (line 2104) | def should_materialize_type(
function get_global_param (line 2121) | def get_global_param(
function get_global_param_sets (line 2164) | def get_global_param_sets(
function get_func_global_json_arg (line 2213) | def get_func_global_json_arg(*, ctx: context.ContextLevel) -> irast.Set:
function get_func_global_param_sets (line 2247) | def get_func_global_param_sets(
function get_globals_as_json (line 2293) | def get_globals_as_json(
FILE: edb/edgeql/compiler/stmt.py
function try_desugar (line 79) | def try_desugar(
function _protect_expr (line 88) | def _protect_expr(
function compile_SelectQuery (line 100) | def compile_SelectQuery(
function compile_ForQuery (line 166) | def compile_ForQuery(
function _make_group_binding (line 267) | def _make_group_binding(
function compile_InternalGroupQuery (line 295) | def compile_InternalGroupQuery(
function compile_GroupQuery (line 430) | def compile_GroupQuery(
function compile_InsertQuery (line 440) | def compile_InsertQuery(
function compile_UpdateQuery (line 597) | def compile_UpdateQuery(
function compile_DeleteQuery (line 712) | def compile_DeleteQuery(
function compile_DescribeStmt (line 861) | def compile_DescribeStmt(
function compile_Shape (line 1111) | def compile_Shape(
function init_stmt (line 1152) | def init_stmt(
function fini_stmt (line 1228) | def fini_stmt(
function process_with_block (line 1290) | def process_with_block(
function compile_result_clause (line 1341) | def compile_result_clause(
function compile_query_subject (line 1430) | def compile_query_subject(
function maybe_add_view (line 1585) | def maybe_add_view(ir: irast.Set, *, ctx: context.ContextLevel) -> irast...
function _is_forbidden_stdlib_type_for_mod (line 1611) | def _is_forbidden_stdlib_type_for_mod(
FILE: edb/edgeql/compiler/stmtctx.py
function init_context (line 75) | def init_context(
function fini_expression (line 179) | def fini_expression(
function _get_type_rewrites (line 354) | def _get_type_rewrites(ctx: context.ContextLevel) -> dict[
function collect_params (line 364) | def collect_params(ctx: context.ContextLevel) -> list[irast.Param]:
function collect_server_param_conversions (line 382) | def collect_server_param_conversions(
function _fixup_materialized_sets (line 435) | def _fixup_materialized_sets(
function _find_visible_binding_refs (line 525) | def _find_visible_binding_refs(
function _try_namespace_fix (line 533) | def _try_namespace_fix(
function _rewrite_weak_namespaces (line 551) | def _rewrite_weak_namespaces(
function _get_all_pathids (line 585) | def _get_all_pathids(irs: Sequence[irast.Base]) -> set[
function _collapse_factoring_protected (line 599) | def _collapse_factoring_protected(
function _fixup_schema_view (line 688) | def _fixup_schema_view(*, ctx: context.ContextLevel) -> None:
function _get_nearest_non_source_derived_parent (line 739) | def _get_nearest_non_source_derived_parent(
function _elide_derived_ancestors (line 753) | def _elide_derived_ancestors(
function compile_anchor (line 781) | def compile_anchor(
function populate_anchors (line 873) | def populate_anchors(
function declare_view (line 883) | def declare_view(
function _declare_view_from_schema (line 964) | def _declare_view_from_schema(
function declare_view_from_schema (line 1020) | def declare_view_from_schema(
function check_params (line 1034) | def check_params(params: dict[str, irast.Param]) -> None:
function throw_on_shaped_param (line 1054) | def throw_on_shaped_param(
function throw_on_loose_param (line 1064) | def throw_on_loose_param(
function preprocess_script (line 1081) | def preprocess_script(
FILE: edb/edgeql/compiler/triggers.py
function compile_trigger (line 55) | def compile_trigger(
function compile_triggers_phase (line 146) | def compile_triggers_phase(
function compile_triggers (line 209) | def compile_triggers(
FILE: edb/edgeql/compiler/tuple_args.py
function _lmost_is_array (line 123) | def _lmost_is_array(typ: irast.ParamTransType) -> bool:
function translate_type (line 129) | def translate_type(
function _ref_to_ast (line 217) | def _ref_to_ast(
function _get_alias (line 225) | def _get_alias(
function _plus_const (line 234) | def _plus_const(expr: qlast.Expr, val: int) -> qlast.Expr:
function _index (line 244) | def _index(expr: qlast.Expr, idx: qlast.Expr) -> qlast.Indirection:
function _make_tuple (line 248) | def _make_tuple(
function make_decoder (line 263) | def make_decoder(
function create_sub_params (line 368) | def create_sub_params(
function finish_sub_params (line 424) | def finish_sub_params(
FILE: edb/edgeql/compiler/typegen.py
function amend_empty_set_type (line 48) | def amend_empty_set_type(
function infer_common_type (line 62) | def infer_common_type(
function type_to_ql_typeref (line 138) | def type_to_ql_typeref(
function ql_typeexpr_to_ir_typeref (line 151) | def ql_typeexpr_to_ir_typeref(
function ql_typeexpr_to_type (line 161) | def ql_typeexpr_to_type(
function _ql_typeexpr_combine_types (line 171) | def _ql_typeexpr_combine_types(
function _ql_typeexpr_get_types (line 185) | def _ql_typeexpr_get_types(
function _ql_typename_to_type (line 257) | def _ql_typename_to_type(
function ptrcls_from_ptrref (line 292) | def ptrcls_from_ptrref(
function ptrcls_from_ptrref (line 301) | def ptrcls_from_ptrref(
function ptrcls_from_ptrref (line 310) | def ptrcls_from_ptrref(
function ptrcls_from_ptrref (line 319) | def ptrcls_from_ptrref(
function ptrcls_from_ptrref (line 327) | def ptrcls_from_ptrref(
function ptr_to_ptrref (line 343) | def ptr_to_ptrref(
function collapse_type_intersection_rptr (line 356) | def collapse_type_intersection_rptr(
function type_from_typeref (line 385) | def type_from_typeref(
function type_to_typeref (line 393) | def type_to_typeref(
FILE: edb/edgeql/compiler/viewgen.py
class ShapeElementDesc (line 76) | class ShapeElementDesc(NamedTuple):
class EarlyShapePtr (line 97) | class EarlyShapePtr(NamedTuple):
class ShapePtr (line 105) | class ShapePtr(NamedTuple):
class ShapeContext (line 115) | class ShapeContext:
function process_view (line 127) | def process_view(
function _process_view (line 178) | def _process_view(
function _shape_el_ql_to_shape_el_desc (line 697) | def _shape_el_ql_to_shape_el_desc(
function _expand_splat (line 785) | def _expand_splat(
function _gen_pointers_from_defaults (line 891) | def _gen_pointers_from_defaults(
function _raise_on_missing (line 999) | def _raise_on_missing(
class RewriteContext (line 1053) | class RewriteContext:
function _compile_rewrites (line 1061) | def _compile_rewrites(
function _compile_rewrites_of_children (line 1157) | def _compile_rewrites_of_children(
function _compile_rewrites_for_stype (line 1204) | def _compile_rewrites_for_stype(
class RewriteAnchors (line 1321) | class RewriteAnchors:
function prepare_rewrite_anchors (line 1329) | def prepare_rewrite_anchors(
function _compile_qlexpr (line 1421) | def _compile_qlexpr(
function _normalize_view_ptr_expr (line 1477) | def _normalize_view_ptr_expr(
function derive_ptrcls (line 2125) | def derive_ptrcls(
function _link_has_shape (line 2172) | def _link_has_shape(
function _get_base_ptr_cardinality (line 2188) | def _get_base_ptr_cardinality(
function has_implicit_tid (line 2203) | def has_implicit_tid(
function has_implicit_tname (line 2215) | def has_implicit_tname(
function has_implicit_type_computables (line 2227) | def has_implicit_type_computables(
function _inline_type_computable (line 2237) | def _inline_type_computable(
function _get_shape_configuration_inner (line 2326) | def _get_shape_configuration_inner(
function _get_early_shape_configuration (line 2408) | def _get_early_shape_configuration(
function _get_late_shape_configuration (line 2434) | def _get_late_shape_configuration(
function late_compile_view_shapes (line 2496) | def late_compile_view_shapes(
function _
Copy disabled (too large)
Download .json
Condensed preview — 1427 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (16,440K chars).
[
{
"path": ".editorconfig",
"chars": 276,
"preview": "root = true\n\n[*]\ntrim_trailing_whitespace = true\ninsert_final_newline = true\n\n[*.{py,pyx,pxd,pxi,h}]\nindent_size = 4\nind"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 546,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\n---\n\n<!-- Please search existing issues to avoid creating"
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 523,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Problem with Gel UI\n url: https://github.com/geldata/gel-ui/issu"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 203,
"preview": "---\nname: Feature request\nabout: Suggest a feature for Gel\n\n---\n\n<!-- Please search existing issues to avoid creating du"
},
{
"path": ".github/Makefile",
"chars": 1083,
"preview": ".PHONY: all\n\nROOT = $(dir $(realpath $(firstword $(MAKEFILE_LIST))))\n\nall: \\\n\tworkflows/build.nightly.yml \\\n\tworkflows/b"
},
{
"path": ".github/aws-aurora/.gitignore",
"chars": 84,
"preview": "/.terraform/\n/terraform.tfstate*\n/.terraform.lock.hcl\n/.terraform.tfstate.lock.info\n"
},
{
"path": ".github/aws-aurora/main.tf",
"chars": 1065,
"preview": "variable \"vpc_id\" {\n description = \"VPC ID\"\n}\n\nvariable \"sg_id\" {\n description = \"security group ID\"\n}\n\nvariable \"pass"
},
{
"path": ".github/aws-rds/.gitignore",
"chars": 33,
"preview": "/.terraform/\n/terraform.tfstate*\n"
},
{
"path": ".github/aws-rds/.terraform.lock.hcl",
"chars": 1077,
"preview": "# This file is maintained automatically by \"terraform init\".\n# Manual edits may be lost in future updates.\n\nprovider \"re"
},
{
"path": ".github/aws-rds/main.tf",
"chars": 396,
"preview": "resource \"aws_db_instance\" \"default\" {\n allocated_storage = 10\n engine = \"postgres\"\n engine_version = \"13.4\"\n instan"
},
{
"path": ".github/aws-rds/outputs.tf",
"chars": 141,
"preview": "output \"db_instance_id\" {\n value = aws_db_instance.default.id\n}\n\noutput \"db_instance_address\" {\n value = aws_db_instan"
},
{
"path": ".github/aws-rds/variables.tf",
"chars": 145,
"preview": "variable \"sg_id\" {\n description = \"security group ID\"\n}\n\nvariable \"password\" {\n description = \"password, provide throu"
},
{
"path": ".github/do-database/.gitignore",
"chars": 33,
"preview": "/.terraform/\n/terraform.tfstate*\n"
},
{
"path": ".github/do-database/.terraform.lock.hcl",
"chars": 1341,
"preview": "# This file is maintained automatically by \"terraform init\".\n# Manual edits may be lost in future updates.\n\nprovider \"re"
},
{
"path": ".github/do-database/main.tf",
"chars": 398,
"preview": "terraform {\n required_providers {\n digitalocean = {\n source = \"digitalocean/digitalocean\"\n version = \"2.6."
},
{
"path": ".github/do-database/outputs.tf",
"chars": 457,
"preview": "output \"db_instance_address\" {\n value = digitalocean_database_cluster.default.host\n}\n\noutput \"db_instance_port\" {\n val"
},
{
"path": ".github/gcp-cloud-sql/.gitignore",
"chars": 33,
"preview": "/.terraform/\n/terraform.tfstate*\n"
},
{
"path": ".github/gcp-cloud-sql/.terraform.lock.hcl",
"chars": 1005,
"preview": "# This file is maintained automatically by \"terraform init\".\n# Manual edits may be lost in future updates.\n\nprovider \"re"
},
{
"path": ".github/gcp-cloud-sql/main.tf",
"chars": 629,
"preview": "variable \"password\" {}\n\nprovider \"google\" {\n region = \"us-east1\"\n}\n\nresource \"google_sql_database_instance\" \"default\" "
},
{
"path": ".github/heroku-postgres/.gitignore",
"chars": 84,
"preview": "/.terraform/\n/terraform.tfstate*\n/.terraform.lock.hcl\n/.terraform.tfstate.lock.info\n"
},
{
"path": ".github/heroku-postgres/main.tf",
"chars": 377,
"preview": "terraform {\n required_providers {\n heroku = {\n source = \"heroku/heroku\"\n version = \"~> 4.0\"\n }\n }\n}\n\n"
},
{
"path": ".github/scripts/docs/preview-deploy.js",
"chars": 5327,
"preview": "const DOCS_SITE_REPO = {\n org: \"edgedb\",\n repo: \"edgedb.com\",\n ref: \"master\",\n};\n\nmodule.exports = async ({ github, c"
},
{
"path": ".github/scripts/patches/compute-ipu-versions.py",
"chars": 1969,
"preview": "# Compute prior minor versions to test upgrading from\n\n\nimport json\nimport os\nimport pathlib\nimport re\nimport sys\nfrom u"
},
{
"path": ".github/scripts/patches/compute-versions.py",
"chars": 1383,
"preview": "# Compute prior minor versions to test upgrading from\n\nimport json\nimport os\nimport re\nfrom urllib import request\n\nbase "
},
{
"path": ".github/scripts/patches/create-databases.py",
"chars": 2052,
"preview": "# Create databases on the older edgedb version\n\nimport edgedb\nimport subprocess\nimport sys\n\ncmd = [\n sys.argv[1], '-D"
},
{
"path": ".github/scripts/patches/test-downgrade.py",
"chars": 810,
"preview": "# Test downgrading a database after an upgrade\n\nimport edgedb\nimport os\nimport subprocess\nimport json\n\nversion = os.gete"
},
{
"path": ".github/workflows/.gitattributes",
"chars": 33,
"preview": "*.yml linguist-generated=true\n"
},
{
"path": ".github/workflows/build.dryrun.yml",
"chars": 57093,
"preview": "name: Package Build Dry Run\n\non:\n workflow_dispatch:\n inputs:\n gelpkg_ref:\n description: \"gel-pkg git re"
},
{
"path": ".github/workflows/build.ls-nightly.yml",
"chars": 23423,
"preview": "name: 'ls: Build and Publish Nightly Packages'\n\non:\n schedule:\n - cron: \"0 1 * * *\"\n workflow_dispatch:\n inputs:"
},
{
"path": ".github/workflows/build.nightly.yml",
"chars": 100981,
"preview": "name: Build Test and Publish Nightly Packages\n\non:\n schedule:\n - cron: \"0 1 * * *\"\n workflow_dispatch:\n inputs:\n"
},
{
"path": ".github/workflows/build.release.yml",
"chars": 82621,
"preview": "name: Build Test and Publish a Release\n\non:\n workflow_dispatch:\n inputs:\n gelpkg_ref:\n description: \"gel"
},
{
"path": ".github/workflows/build.testing.yml",
"chars": 85328,
"preview": "name: Build Test and Publish a Testing Release\n\non:\n workflow_dispatch:\n inputs:\n gelpkg_ref:\n descripti"
},
{
"path": ".github/workflows/docs-preview-deploy.yml",
"chars": 511,
"preview": "name: Docs Preview Deploy\n\non:\n pull_request:\n paths:\n - \"docs/**\"\n\njobs:\n deploy:\n runs-on: ubuntu-latest\n"
},
{
"path": ".github/workflows/docs.yml",
"chars": 370,
"preview": "name: Deploy Documentation Changes\n\non:\n push:\n branches:\n - master\n - release/**\n paths:\n - \"docs"
},
{
"path": ".github/workflows/pull-request-meta.yml",
"chars": 1045,
"preview": "name: Pull Request Meta\n\non:\n pull_request:\n types: [opened, edited, synchronize]\n\nconcurrency:\n group: ${{ github."
},
{
"path": ".github/workflows/tests.ha.yml",
"chars": 16756,
"preview": "name: High Availability Tests\n\non:\n workflow_dispatch:\n inputs: {}\n workflow_run:\n workflows: [\"Tests\"]\n type"
},
{
"path": ".github/workflows/tests.inplace.yml",
"chars": 27435,
"preview": "name: Tests of in-place upgrades and patching\n\non:\n schedule:\n - cron: \"0 3 * * *\"\n workflow_dispatch:\n inputs: "
},
{
"path": ".github/workflows/tests.inplace7x.yml",
"chars": 22481,
"preview": "name: Tests of in-place upgrades to 7.x\n\non:\n schedule:\n - cron: \"0 3 * * *\"\n workflow_dispatch:\n inputs: {}\n p"
},
{
"path": ".github/workflows/tests.managed-pg.yml",
"chars": 52306,
"preview": "name: Tests on Managed PostgreSQL\n\non:\n schedule:\n - cron: \"0 3 * * 6\"\n workflow_dispatch:\n inputs: {}\n push:\n "
},
{
"path": ".github/workflows/tests.patches.yml",
"chars": 17604,
"preview": "name: Tests of patching old EdgeDB Versions\n\non:\n workflow_dispatch:\n inputs: {}\n pull_request:\n branches:\n "
},
{
"path": ".github/workflows/tests.pg-versions.yml",
"chars": 19452,
"preview": "name: Tests on PostgreSQL Versions\n\non:\n schedule:\n - cron: \"0 3 * * *\"\n workflow_dispatch:\n inputs: {}\n push:\n"
},
{
"path": ".github/workflows/tests.pool.yml",
"chars": 11184,
"preview": "name: Pool Simulation Test\n\non:\n push:\n branches:\n - master\n - pool-test\n paths:\n - 'edb/server/co"
},
{
"path": ".github/workflows/tests.reflection.yml",
"chars": 15924,
"preview": "name: Tests with reflection validation\n\non:\n schedule:\n - cron: \"0 3 * * *\"\n workflow_dispatch:\n inputs: {}\n pu"
},
{
"path": ".github/workflows/tests.yml",
"chars": 28187,
"preview": "name: Tests\n\non:\n push:\n branches:\n - master\n - ci\n - \"release/*\"\n pull_request:\n branches:\n "
},
{
"path": ".github/workflows.src/build.dryrun.tpl.yml",
"chars": 192,
"preview": "<% from \"build.inc.yml\" import workflow, workflow_dispatch -%>\nname: Package Build Dry Run\n\non:\n <<- workflow_dispatch("
},
{
"path": ".github/workflows.src/build.inc.yml",
"chars": 19155,
"preview": "<% macro workflow_dispatch() %>\n workflow_dispatch:\n inputs:\n gelpkg_ref:\n description: \"gel-pkg git ref"
},
{
"path": ".github/workflows.src/build.ls-nightly.tpl.yml",
"chars": 295,
"preview": "<% from \"build.inc.yml\" import workflow, workflow_dispatch -%>\nname: 'ls: Build and Publish Nightly Packages'\n\non:\n sch"
},
{
"path": ".github/workflows.src/build.ls.targets.yml",
"chars": 1258,
"preview": "publications:\n - name: prod\n suffix: \"\"\n server: sftp://uploader@package-upload.edgedb.net:22/\n\npackage:\n name: "
},
{
"path": ".github/workflows.src/build.nightly.tpl.yml",
"chars": 294,
"preview": "<% from \"build.inc.yml\" import workflow, workflow_dispatch -%>\nname: Build Test and Publish Nightly Packages\n\non:\n sche"
},
{
"path": ".github/workflows.src/build.release.tpl.yml",
"chars": 224,
"preview": "<% from \"build.inc.yml\" import workflow, workflow_dispatch -%>\nname: Build Test and Publish a Release\n\non:\n <<- workflo"
},
{
"path": ".github/workflows.src/build.targets.yml",
"chars": 5099,
"preview": "publications:\n - name: prod\n suffix: \"\"\n server: sftp://uploader@package-upload.edgedb.net:22/\n\npackage:\n "
},
{
"path": ".github/workflows.src/build.testing.tpl.yml",
"chars": 239,
"preview": "<% from \"build.inc.yml\" import workflow, workflow_dispatch -%>\nname: Build Test and Publish a Testing Release\n\non:\n <<-"
},
{
"path": ".github/workflows.src/render.py",
"chars": 2288,
"preview": "#!/usr/bin/env python3\n\nimport argparse\nimport pathlib\nimport sys\n\nimport jinja2\nimport yaml\n\n\nenv = jinja2.Environment("
},
{
"path": ".github/workflows.src/tests.ha.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.ha.tpl.yml",
"chars": 2139,
"preview": "<% from \"tests.inc.yml\" import build, calc_cache_key, restore_cache -%>\nname: High Availability Tests\n\non:\n workflow_di"
},
{
"path": ".github/workflows.src/tests.inc.yml",
"chars": 14509,
"preview": "<% macro init(ref='') -%>\n - uses: actions/checkout@v4\n with:\n fetch-depth: 0\n submodules: false\n<"
},
{
"path": ".github/workflows.src/tests.inplace.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.inplace.tpl.yml",
"chars": 3077,
"preview": "<% from \"tests.inc.yml\" import build, calc_cache_key, restore_cache -%>\n\nname: Tests of in-place upgrades and patching\n\n"
},
{
"path": ".github/workflows.src/tests.inplace7x.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.inplace7x.tpl.yml",
"chars": 2883,
"preview": "<% from \"tests.inc.yml\" import build, calc_cache_key, restore_cache -%>\n\nname: Tests of in-place upgrades to 7.x\n\non:\n "
},
{
"path": ".github/workflows.src/tests.managed-pg.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.managed-pg.tpl.yml",
"chars": 14809,
"preview": "<% from \"tests.inc.yml\" import build, calc_cache_key, restore_cache, setup_terraform -%>\n\n<% macro setup_aws_creds() -%>"
},
{
"path": ".github/workflows.src/tests.patches.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.patches.tpl.yml",
"chars": 2988,
"preview": "<% from \"tests.inc.yml\" import build, calc_cache_key, restore_cache -%>\n\nname: Tests of patching old EdgeDB Versions\n\non"
},
{
"path": ".github/workflows.src/tests.pg-versions.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.pg-versions.tpl.yml",
"chars": 4854,
"preview": "<% from \"tests.inc.yml\" import build, calc_cache_key, restore_cache, setup_terraform -%>\n\nname: Tests on PostgreSQL Vers"
},
{
"path": ".github/workflows.src/tests.pool.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.pool.tpl.yml",
"chars": 1424,
"preview": "<% from \"tests.inc.yml\" import build, calc_cache_key -%>\n\nname: Pool Simulation Test\n\non:\n push:\n branches:\n - "
},
{
"path": ".github/workflows.src/tests.reflection.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.reflection.tpl.yml",
"chars": 1308,
"preview": "<% from \"tests.inc.yml\" import build, calc_cache_key, restore_cache -%>\nname: Tests with reflection validation\n\non:\n sc"
},
{
"path": ".github/workflows.src/tests.targets.yml",
"chars": 6,
"preview": "data:\n"
},
{
"path": ".github/workflows.src/tests.tpl.yml",
"chars": 7387,
"preview": "<% from \"tests.inc.yml\" import init, build, calc_cache_key, install_python_requirements, restore_cache -%>\nname: Tests\n\n"
},
{
"path": ".gitignore",
"chars": 419,
"preview": "*._*\n*.pyc\n*.pyo\n*.o\n*.so\n*.dylib\n.vscode/\n.zed/\n.helix/\n*~\n.#*\n.*.swp\n.DS_Store\n\\#*#\n/test*.py\n/.local\n/perf.data*\n/bui"
},
{
"path": ".gitmodules",
"chars": 349,
"preview": "[submodule \"postgres\"]\n\tpath = postgres\n\turl = https://github.com/geldata/postgres.git\n\tignore = untracked\n[submodule \"e"
},
{
"path": ".mailmap",
"chars": 315,
"preview": "Elvis Pranskevichus <elvis@edgedb.com> <elvis@magic.io>\nYury Selivanov <yury@edgedb.com> <yury@magic.io>\nYury Selivanov "
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3346,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.rst",
"chars": 4556,
"preview": "How to contribute to Gel\n========================\n\nThank you for contributing to Gel! We love our open source community "
},
{
"path": "Cargo.toml",
"chars": 1337,
"preview": "[workspace]\nmembers = [\n \"edb/edgeql-parser\",\n \"edb/edgeql-parser/edgeql-parser-derive\",\n \"edb/edgeql-parser/ed"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "MANIFEST.in",
"chars": 284,
"preview": "recursive-include edb *.edgeql *.esdl *.py *.txt\nrecursive-include tests *.edgeql *.esdl *.py\ninclude LICENSE README.md "
},
{
"path": "Makefile",
"chars": 1582,
"preview": ".PHONY: build docs cython postgres postgres-ext pygments build-reqs\n.DEFAULT_GOAL := build\n\nSPHINXOPTS:=\"-W -n\"\n\nBUILD_R"
},
{
"path": "NOTICE",
"chars": 125,
"preview": "EdgeDB\nCopyright 2008-present EdgeDB Inc.\n\nThis product includes software developed by\nEdgeDB Inc (https://www.edgedb.co"
},
{
"path": "README.md",
"chars": 6540,
"preview": "<!--<p align=\"center\">\n <a href=\"https://www.geldata.com\">\n <img src=\"https://www.geldata.com/github_banner.png\">\n "
},
{
"path": "build_backend.py",
"chars": 885,
"preview": "#\n# This source file is part of the EdgeDB open source project.\n#\n# Copyright 2008-present MagicStack Inc. and the EdgeD"
},
{
"path": "dev-notes/concurrent-indexes.py",
"chars": 1176,
"preview": "#!/usr/bin/env python3\n\nimport gel\n\n\ndef create_concurrent_indexes(db, msg_callback=print):\n '''Actually create all \""
},
{
"path": "dev-notes/inplace-upgrades.md",
"chars": 4089,
"preview": "The inplace upgrade system adds three new flags to edgedb-server. They may (though probably usually won't) be specified "
},
{
"path": "dev-notes/newtype-checklist.md",
"chars": 2373,
"preview": "This is a checklist of steps needed to add a new type to EdgeDB, along with links to examples of PRs doing the tasks.\n\nC"
},
{
"path": "dev-notes/release-process.md",
"chars": 7745,
"preview": "# Instructions for releasing a new version\n\nDeprecates release instruction from\n[RFC 2](https://github.com/edgedb/rfcs/b"
},
{
"path": "docs/.gitignore",
"chars": 8,
"preview": "/_build\n"
},
{
"path": "docs/Makefile",
"chars": 7409,
"preview": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS =\nSPHINXBUILD "
},
{
"path": "docs/cloud/cli.rst",
"chars": 2364,
"preview": ".. _ref_guide_cloud_cli:\n\n===\nCLI\n===\n\n:edb-alt-title: Using Gel Cloud via the CLI\n\nTo use |Gel| Cloud via the CLI, firs"
},
{
"path": "docs/cloud/deploy/fly.rst",
"chars": 1784,
"preview": ".. _ref_guide_cloud_deploy_fly:\n\n======\nFly.io\n======\n\n:edb-alt-title: Deploying applications built on Gel Cloud to Fly."
},
{
"path": "docs/cloud/deploy/index.rst",
"chars": 742,
"preview": ".. _ref_guide_cloud_deploy:\n\n=============\nDeploy an app\n=============\n\n:edb-alt-title: Deploying applications built on "
},
{
"path": "docs/cloud/deploy/netlify.rst",
"chars": 1295,
"preview": ".. _ref_guide_cloud_deploy_netlify:\n\n=======\nNetlify\n=======\n\n:edb-alt-title: Deploying applications built on Gel Cloud "
},
{
"path": "docs/cloud/deploy/railway.rst",
"chars": 959,
"preview": ".. _ref_guide_cloud_deploy_railway:\n\n=======\nRailway\n=======\n\n:edb-alt-title: Deploying applications built on Gel Cloud "
},
{
"path": "docs/cloud/deploy/render.rst",
"chars": 977,
"preview": ".. _ref_guide_cloud_deploy_render:\n\n======\nRender\n======\n\n:edb-alt-title: Deploying applications built on Gel Cloud to R"
},
{
"path": "docs/cloud/deploy/vercel.rst",
"chars": 929,
"preview": ".. _ref_guide_cloud_deploy_vercel:\n\n======\nVercel\n======\n\n:edb-alt-title: Deploying applications built on Gel Cloud to V"
},
{
"path": "docs/cloud/http_gql.rst",
"chars": 2499,
"preview": ".. _ref_guide_cloud_http_gql:\n\n===================\nHTTP & GraphQL APIs\n===================\n\n:edb-alt-title: Querying Gel"
},
{
"path": "docs/cloud/index.rst",
"chars": 3587,
"preview": ".. _ref_guide_cloud:\n\n=====\nCloud\n=====\n\n:edb-alt-title: Using Gel Cloud\n\n.. toctree::\n :maxdepth: 2\n :hidden:\n\n "
},
{
"path": "docs/cloud/migrate_from.rst",
"chars": 4780,
"preview": ".. _ref_migrate_from:\n\n=======================================\nMigrating from Gel Cloud to Self-Hosted\n================="
},
{
"path": "docs/cloud/web.rst",
"chars": 2509,
"preview": ".. _ref_guide_cloud_web:\n\n=======\nWeb GUI\n=======\n\n:edb-alt-title: Using Gel Cloud via the web GUI\n\nIf you'd prefer, you"
},
{
"path": "docs/conf.py",
"chars": 9692,
"preview": "# -*- coding: utf-8 -*-\n#\n# EdgeDB documentation build configuration file, created by\n# sphinx-quickstart on Wed Aug 3 "
},
{
"path": "docs/index.rst",
"chars": 314,
"preview": ".. _index_toplevel:\n\n\n=================\nGel documentation\n=================\n\nWelcome to the |Gel| |version| documentatio"
},
{
"path": "docs/intro/branches.rst",
"chars": 3305,
"preview": ".. _ref_intro_branches:\n\n========\nBranches\n========\n\n|Gel's| branches make it easy to prototype app features that impact"
},
{
"path": "docs/intro/cli.rst",
"chars": 3197,
"preview": ".. _ref_intro_cli:\n\n.. _ref_admin_install:\n\n=======\nThe CLI\n=======\n\nThe |gelcmd| command line tool is an integral part "
},
{
"path": "docs/intro/clients.rst",
"chars": 10380,
"preview": ".. _ref_intro_clients:\n\n================\nClient Libraries\n================\n\n|Gel| implements libraries for popular langu"
},
{
"path": "docs/intro/edgeql.rst",
"chars": 20564,
"preview": ".. _ref_intro_edgeql:\n\nEdgeQL\n======\n\nEdgeQL is the query language of Gel. It's intended as a spiritual successor\nto SQL"
},
{
"path": "docs/intro/guides/ai/edgeql.rst",
"chars": 9915,
"preview": ".. _ref_ai_guide_edgeql:\n\n================\nGel AI in EdgeQL\n================\n\n:edb-alt-title: How to set up Gel AI in Ed"
},
{
"path": "docs/intro/guides/ai/index.rst",
"chars": 111,
"preview": ".. edb:env-switcher::\n\n=========\nAdding AI\n=========\n\n.. toctree::\n :maxdepth: 1\n :hidden:\n\n edgeql\n python"
},
{
"path": "docs/intro/guides/ai/python.rst",
"chars": 11074,
"preview": ".. _ref_ai_guide_python:\n\n================\nGel AI in Python\n================\n\n:edb-alt-title: How to set up Gel AI in Py"
},
{
"path": "docs/intro/guides/drizzle/index.rst",
"chars": 130,
"preview": ".. edb:env-switcher::\n\n==================\nAdding Drizzle ORM\n==================\n\n.. toctree::\n :maxdepth: 1\n :hidden:\n"
},
{
"path": "docs/intro/guides/drizzle/nextjs.rst",
"chars": 8476,
"preview": ".. _ref_guide_gel_drizzle:\n\n======================\nDrizzle ORM in Next.js\n======================\n\n|Gel| integrates seaml"
},
{
"path": "docs/intro/guides/index.rst",
"chars": 78,
"preview": "======\nGuides\n======\n\n.. toctree::\n :maxdepth: 1\n\n ai/index\n drizzle/index\n"
},
{
"path": "docs/intro/index.rst",
"chars": 5755,
"preview": ".. _ref_intro:\n\n==============\nWelcome to Gel\n==============\n\n.. toctree::\n :maxdepth: 3\n :hidden:\n\n installati"
},
{
"path": "docs/intro/install_table.rst",
"chars": 512,
"preview": ".. tabs::\n\n .. code-tab:: bash\n :caption: bash\n\n $ curl https://www.geldata.com/sh --proto \"=https\" -sSf1 | sh\n\n "
},
{
"path": "docs/intro/installation.rst",
"chars": 502,
"preview": ".. _ref_cli_gel_install:\n\n============\nInstallation\n============\n\nWe provide a :ref:`CLI for managing and interacting wi"
},
{
"path": "docs/intro/instances.rst",
"chars": 1968,
"preview": ".. _ref_intro_instances:\n\n=========\nInstances\n=========\n\nLet's get to the good stuff. You can spin up a Gel instance wit"
},
{
"path": "docs/intro/localdev.rst",
"chars": 6616,
"preview": "=================\nLocal Development\n=================\n\nOne of Gel's most powerful features is its seamless support for l"
},
{
"path": "docs/intro/migrations.rst",
"chars": 9569,
"preview": ".. _ref_intro_migrations:\n\n==========\nMigrations\n==========\n\n.. index:: fill_expr, cast_expr\n\n|Gel's| baked-in migration"
},
{
"path": "docs/intro/projects.rst",
"chars": 6459,
"preview": ".. _ref_intro_projects:\n\n========\nProjects\n========\n\nIt can be inconvenient to pass the ``-I`` flag every time you wish "
},
{
"path": "docs/intro/quickstart/ai/fastapi.rst",
"chars": 12082,
"preview": ".. _ref_quickstart_ai:\n\n======================\nUsing the built-in RAG\n======================\n\n.. edb:split-section::\n\n "
},
{
"path": "docs/intro/quickstart/ai/index.rst",
"chars": 93,
"preview": ".. edb:env-switcher::\n\n=========\nAdding AI\n=========\n\n.. toctree::\n :maxdepth: 1\n\n fastapi\n"
},
{
"path": "docs/intro/quickstart/connecting/fastapi.rst",
"chars": 2489,
"preview": ".. _ref_quickstart_fastapi_connecting:\n\n==========================\nConnecting to the database\n=========================="
},
{
"path": "docs/intro/quickstart/connecting/index.rst",
"chars": 164,
"preview": ".. edb:env-switcher::\n\n==========================\nConnecting to the database\n==========================\n\n.. toctree::\n "
},
{
"path": "docs/intro/quickstart/connecting/nextjs.rst",
"chars": 3537,
"preview": ".. _ref_quickstart_connecting:\n\n==========================\nConnecting to the database\n==========================\n\n.. edb"
},
{
"path": "docs/intro/quickstart/index.rst",
"chars": 188,
"preview": "==========\nQuickstart\n==========\n\n.. toctree::\n :maxdepth: 1\n :hidden:\n\n overview/index\n setup/index\n modeling/inde"
},
{
"path": "docs/intro/quickstart/inheritance/fastapi.rst",
"chars": 2747,
"preview": ".. _ref_quickstart_fastapi_inheritance:\n\n========================\nAdding shared properties\n========================\n\n.. "
},
{
"path": "docs/intro/quickstart/inheritance/index.rst",
"chars": 159,
"preview": ".. edb:env-switcher::\n\n========================\nAdding shared properties\n========================\n\n.. toctree::\n :maxde"
},
{
"path": "docs/intro/quickstart/inheritance/nextjs.rst",
"chars": 3486,
"preview": ".. _ref_quickstart_inheritance:\n\n========================\nAdding shared properties\n========================\n\n.. edb:spli"
},
{
"path": "docs/intro/quickstart/modeling/fastapi.rst",
"chars": 3841,
"preview": ".. _ref_quickstart_fastapi_modeling:\n\n=================\nModeling the data\n=================\n\n.. edb:split-section::\n\n T"
},
{
"path": "docs/intro/quickstart/modeling/index.rst",
"chars": 137,
"preview": ".. edb:env-switcher::\n\n=================\nModeling the data\n=================\n\n.. toctree::\n :maxdepth: 3\n :hidden:\n\n "
},
{
"path": "docs/intro/quickstart/modeling/nextjs.rst",
"chars": 4515,
"preview": ".. _ref_quickstart_modeling:\n\n=================\nModeling the data\n=================\n\n.. edb:split-section::\n\n The flash"
},
{
"path": "docs/intro/quickstart/overview/fastapi.rst",
"chars": 1880,
"preview": ".. _ref_quickstart_fastapi:\n\n==========\nQuickstart\n==========\n\nWelcome to the quickstart tutorial! In this tutorial, you"
},
{
"path": "docs/intro/quickstart/overview/index.rst",
"chars": 110,
"preview": ".. edb:env-switcher::\n\n========\nOverview\n========\n\n.. toctree::\n :maxdepth: 3\n :hidden:\n\n nextjs\n fastapi\n"
},
{
"path": "docs/intro/quickstart/overview/nextjs.rst",
"chars": 1952,
"preview": ".. _gel-js-quickstart:\n.. _ref_quickstart:\n\n==========\nQuickstart\n==========\n\nWelcome to the quickstart tutorial! In thi"
},
{
"path": "docs/intro/quickstart/setup/fastapi.rst",
"chars": 2753,
"preview": ".. _ref_quickstart_fastapi_setup:\n\n===========================\nSetting up your environment\n===========================\n\n"
},
{
"path": "docs/intro/quickstart/setup/index.rst",
"chars": 167,
"preview": ".. edb:env-switcher::\n\n===========================\nSetting up your environment\n===========================\n\n.. toctree::"
},
{
"path": "docs/intro/quickstart/setup/nextjs.rst",
"chars": 2979,
"preview": ".. _ref_quickstart_setup:\n\n===========================\nSetting up your environment\n===========================\n\n.. edb:s"
},
{
"path": "docs/intro/quickstart/working/fastapi.rst",
"chars": 16210,
"preview": ".. _ref_quickstart_fastapi_working:\n\n=====================\nWorking with the data\n=====================\n\nIn this section,"
},
{
"path": "docs/intro/quickstart/working/index.rst",
"chars": 149,
"preview": ".. edb:env-switcher::\n\n=====================\nWorking with the data\n=====================\n\n.. toctree::\n :maxdepth: 3\n "
},
{
"path": "docs/intro/quickstart/working/nextjs.rst",
"chars": 21717,
"preview": ".. _ref_quickstart_working:\n\n=====================\nWorking with the data\n=====================\n\nIn this section, you wil"
},
{
"path": "docs/intro/schema.rst",
"chars": 7805,
"preview": ".. _ref_intro_schema:\n\n======\nSchema\n======\n\n\nThis page is intended as a rapid-fire overview of Gel's schema definition\n"
},
{
"path": "docs/intro/tutorials/ai_fastapi_searchbot.rst",
"chars": 55561,
"preview": ".. _ref_guide_fastapi_gelai_searchbot:\n\n===============================\nBuild a Search Bot with FastAPI\n================"
},
{
"path": "docs/intro/tutorials/gel_drizzle_booknotes.rst",
"chars": 42824,
"preview": ".. _ref_guide_gel_drizzle_booknotes:\n\n====================================================\nBuild a Book Notes App with D"
},
{
"path": "docs/intro/tutorials/index.rst",
"chars": 107,
"preview": "=========\nTutorials\n=========\n\n.. toctree::\n :maxdepth: 2\n\n ai_fastapi_searchbot\n gel_drizzle_booknotes\n"
},
{
"path": "docs/redirects",
"chars": 5343,
"preview": "/guides/cloud -> /cloud\n\n/cli/edgedb -> docs/cli/gel\n/cli/edgedb_analyze -> docs/cli/gel_analyze\n/cli/edgedb_branch/edge"
},
{
"path": "docs/redirects.js",
"chars": 6915,
"preview": "// See https://nextjs.org/docs/app/api-reference/config/next-config-js/redirects\nmodule.exports = [\n {\n source: \"/ch"
},
{
"path": "docs/reference/ai/extai.rst",
"chars": 13473,
"preview": ".. _ref_ai_extai_reference:\n\n=======\next::ai\n=======\n\nThis reference documents the |Gel| ``ext::ai`` extension component"
},
{
"path": "docs/reference/ai/extvectorstore.rst",
"chars": 2083,
"preview": ":orphan:\n\n.. _ref_extvectorstore_reference:\n\n================\next::vectorstore\n================\n\n\nThe ``ext::vectorstore"
},
{
"path": "docs/reference/ai/http.rst",
"chars": 12740,
"preview": ".. _ref_ai_http_reference:\n\n========\nHTTP API\n========\n\n.. note::\n\n All |Gel| server HTTP endpoints require :ref:`aut"
},
{
"path": "docs/reference/ai/index.rst",
"chars": 931,
"preview": ".. _ref_ai_overview:\n\n==\nAI\n==\n\n:edb-alt-title: Using Gel AI\n\n.. toctree::\n :hidden:\n :maxdepth: 3\n\n extai\n "
},
{
"path": "docs/reference/ai/javascript.rst",
"chars": 6576,
"preview": ".. _ref_ai_javascript_reference:\n\n==============\nJavaScript API\n==============\n\n``@gel/ai`` is a wrapper around the :ref"
},
{
"path": "docs/reference/ai/python.rst",
"chars": 12438,
"preview": ".. _ref_ai_python_reference:\n\n==========\nPython API\n==========\n\nThe ``gel.ai`` package is an optional binding of the :re"
},
{
"path": "docs/reference/ai/vectorstore_python.rst",
"chars": 10024,
"preview": ":orphan:\n\n.. _ref_ai_vectorstore_python:\n\n======================\nVectorstore Python API\n======================\n\n\nCore Cl"
},
{
"path": "docs/reference/auth/built_in_ui.rst",
"chars": 9980,
"preview": ".. _ref_guide_auth_built_in_ui:\n\n===========\nBuilt-in UI\n===========\n\n:edb-alt-title: Integrating Gel Auth's built-in UI"
},
{
"path": "docs/reference/auth/email_password.rst",
"chars": 21454,
"preview": ".. _ref_guide_auth_email_password:\n\n==================\nEmail and password\n==================\n\n:edb-alt-title: Integratin"
},
{
"path": "docs/reference/auth/http.rst",
"chars": 45732,
"preview": ".. _ref_auth_http:\n\n========\nHTTP API\n========\n\nYour application server will interact with the Gel extension primarily b"
},
{
"path": "docs/reference/auth/index.rst",
"chars": 19845,
"preview": ".. _ref_guide_auth:\n\n====\nAuth\n====\n\n.. toctree::\n :hidden:\n :maxdepth: 3\n\n http\n built_in_ui\n email_pass"
},
{
"path": "docs/reference/auth/magic_link.rst",
"chars": 16371,
"preview": ".. _ref_guide_auth_magic_link:\n\n================\nMagic Link Auth\n================\n\n:edb-alt-title: Integrating Gel Auth'"
},
{
"path": "docs/reference/auth/oauth.rst",
"chars": 13841,
"preview": ".. _ref_guide_auth_oauth:\n\n=====\nOAuth\n=====\n\n:edb-alt-title: Integrating Gel Auth's OAuth provider\n\nAlong with using th"
},
{
"path": "docs/reference/auth/webauthn.rst",
"chars": 20080,
"preview": ".. _ref_guide_auth_webauthn:\n\n========\nWebAuthn\n========\n\n:edb-alt-title: Integrating Gel Auth's WebAuthn provider\n\nWebA"
},
{
"path": "docs/reference/auth/webhooks.rst",
"chars": 8340,
"preview": ".. _ref_auth_webhooks:\n\n========\nWebhooks\n========\n\nThe auth extension supports sending webhooks for a variety of auth e"
},
{
"path": "docs/reference/datamodel/access_policies.rst",
"chars": 24611,
"preview": ".. _ref_datamodel_access_policies:\n\n===============\nAccess Policies\n===============\n\n.. index:: object-level security, r"
},
{
"path": "docs/reference/datamodel/aliases.rst",
"chars": 4704,
"preview": ".. _ref_datamodel_aliases:\n\n=======\nAliases\n=======\n\n.. index:: alias, virtual type\n\nYou can think of *aliases* as a way"
},
{
"path": "docs/reference/datamodel/annotations.rst",
"chars": 9484,
"preview": ".. _ref_datamodel_annotations:\n.. _ref_eql_sdl_annotations:\n\n===========\nAnnotations\n===========\n\n*Annotations* are name"
},
{
"path": "docs/reference/datamodel/branches.rst",
"chars": 3991,
"preview": ".. _ref_datamodel_branches:\n.. _ref_datamodel_databases:\n\n.. versionadded:: 5.0\n\n========\nBranches\n========\n\nGel's |bran"
},
{
"path": "docs/reference/datamodel/comparison.rst",
"chars": 2681,
"preview": ".. _ref_datamodel_comparison:\n\n===============\nvs SQL and ORMs\n===============\n\n|Gel's| approach to schema modeling buil"
},
{
"path": "docs/reference/datamodel/computeds.rst",
"chars": 4293,
"preview": ".. _ref_datamodel_computed:\n\n=========\nComputeds\n=========\n\n:edb-alt-title: Computed properties and links\n\n.. api-index:"
},
{
"path": "docs/reference/datamodel/constraints.rst",
"chars": 25101,
"preview": ".. _ref_datamodel_constraints:\n.. _ref_eql_sdl_constraints:\n\n===========\nConstraints\n===========\n\n.. index:: validation\n"
},
{
"path": "docs/reference/datamodel/extensions.rst",
"chars": 4605,
"preview": ".. _ref_datamodel_extensions:\n\n==========\nExtensions\n==========\n\n.. api-index:: using extension\n\nExtensions are the way "
},
{
"path": "docs/reference/datamodel/functions.rst",
"chars": 15683,
"preview": ".. _ref_datamodel_functions:\n.. _ref_eql_sdl_functions:\n\n=========\nFunctions\n=========\n\n.. note::\n\n This page documents"
},
{
"path": "docs/reference/datamodel/future.rst",
"chars": 4398,
"preview": ".. _ref_datamodel_future:\n\n===============\nFuture behavior\n===============\n\n.. api-index:: using future\n\nThis article ex"
},
{
"path": "docs/reference/datamodel/globals.rst",
"chars": 13264,
"preview": ".. _ref_datamodel_globals:\n\n=======\nGlobals\n=======\n\nSchemas in Gel can contain typed *global variables*. These create a"
},
{
"path": "docs/reference/datamodel/index.rst",
"chars": 3677,
"preview": ".. versioned-section::\n\n.. _ref_datamodel_index:\n\n======\nSchema\n======\n\n.. toctree::\n :maxdepth: 3\n :hidden:\n\n "
},
{
"path": "docs/reference/datamodel/indexes.rst",
"chars": 11842,
"preview": ".. _ref_datamodel_indexes:\n\n=======\nIndexes\n=======\n\n.. index:: performance, postgres query planner\n\nAn index is a data "
},
{
"path": "docs/reference/datamodel/inheritance.rst",
"chars": 5555,
"preview": ".. _ref_datamodel_inheritance:\n\n===========\nInheritance\n===========\n\n.. index:: extending, extends, subtype, supertype, "
},
{
"path": "docs/reference/datamodel/introspection/casts.rst",
"chars": 4306,
"preview": ".. _ref_datamodel_introspection_casts:\n\n=====\nCasts\n=====\n\nThis section describes introspection of Gel :eql:op:`type cas"
},
{
"path": "docs/reference/datamodel/introspection/colltypes.rst",
"chars": 4003,
"preview": ".. _ref_datamodel_introspection_collection_types:\n\n================\nCollection types\n================\n\nThis section desc"
},
{
"path": "docs/reference/datamodel/introspection/constraints.rst",
"chars": 3162,
"preview": ".. _ref_datamodel_introspection_constraints:\n\n===========\nConstraints\n===========\n\nThis section describes introspection "
},
{
"path": "docs/reference/datamodel/introspection/functions.rst",
"chars": 3142,
"preview": ".. _ref_datamodel_introspection_functions:\n\n=========\nFunctions\n=========\n\nThis section describes introspection of :ref:"
},
{
"path": "docs/reference/datamodel/introspection/index.rst",
"chars": 1261,
"preview": ".. _ref_datamodel_introspection:\n\nIntrospection\n=============\n\n.. index:: schema module\n.. api-index:: describe, introsp"
},
{
"path": "docs/reference/datamodel/introspection/indexes.rst",
"chars": 1709,
"preview": ".. _ref_datamodel_introspection_indexes:\n\n=======\nIndexes\n=======\n\nThis section describes introspection of :ref:`indexes"
},
{
"path": "docs/reference/datamodel/introspection/mutation_rewrites.rst",
"chars": 4321,
"preview": ".. _ref_datamodel_introspection_mutation_rewrites:\n\n=================\nMutation rewrites\n=================\n\nThis section "
},
{
"path": "docs/reference/datamodel/introspection/objects.rst",
"chars": 4182,
"preview": ".. _ref_datamodel_introspection_object_types:\n\n============\nObject types\n============\n\nThis section describes introspect"
},
{
"path": "docs/reference/datamodel/introspection/operators.rst",
"chars": 3245,
"preview": ".. _ref_datamodel_introspection_operators:\n\n=========\nOperators\n=========\n\nThis section describes introspection of Gel o"
},
{
"path": "docs/reference/datamodel/introspection/scalars.rst",
"chars": 2823,
"preview": ".. _ref_datamodel_introspection_scalar_types:\n\n============\nScalar types\n============\n\nThis section describes introspect"
},
{
"path": "docs/reference/datamodel/introspection/triggers.rst",
"chars": 2326,
"preview": ".. _ref_datamodel_introspection_triggers:\n\n=========\nTriggers\n=========\n\nThis section describes introspection of :ref:`t"
},
{
"path": "docs/reference/datamodel/linkprops.rst",
"chars": 7815,
"preview": ".. _ref_datamodel_linkprops:\n\n===============\nLink properties\n===============\n\n.. index:: link property, linkprops, link"
},
{
"path": "docs/reference/datamodel/links.rst",
"chars": 29670,
"preview": ".. _ref_datamodel_links:\n\n=====\nLinks\n=====\n\nLinks define a relationship between two\n:ref:`object types <ref_datamodel_o"
},
{
"path": "docs/reference/datamodel/migrations.rst",
"chars": 14116,
"preview": ".. _ref_datamodel_migrations:\n\n==========\nMigrations\n==========\n\n|Gel's| baked-in migration system lets you painlessly e"
},
{
"path": "docs/reference/datamodel/modules.rst",
"chars": 6756,
"preview": ".. _ref_datamodel_modules:\n.. _ref_eql_sdl_modules:\n\n=======\nModules\n=======\n\nEach |branch| has a schema consisting of s"
},
{
"path": "docs/reference/datamodel/mutation_rewrites.rst",
"chars": 13863,
"preview": ".. _ref_datamodel_mutation_rewrites:\n\n=================\nMutation rewrites\n=================\n\n.. index:: modify, modifica"
},
{
"path": "docs/reference/datamodel/objects.rst",
"chars": 12867,
"preview": ".. _ref_datamodel_object_types:\n\n============\nObject Types\n============\n\n.. index:: tables, models\n\n*Object types* are t"
},
{
"path": "docs/reference/datamodel/permissions.rst",
"chars": 9233,
"preview": ".. _ref_datamodel_permissions:\n\n.. versionadded:: 7.0\n\n===========\nPermissions\n===========\n\n.. index:: RBAC, role based "
},
{
"path": "docs/reference/datamodel/primitives.rst",
"chars": 11184,
"preview": ".. _ref_datamodel_primitives:\n\n==========\nPrimitives\n==========\n\n|Gel| has a robust type system consisting of primitive "
},
{
"path": "docs/reference/datamodel/properties.rst",
"chars": 21042,
"preview": ".. _ref_datamodel_props:\n\n==========\nProperties\n==========\n\n.. index:: property, primitive types, fields, columns\n\nPrope"
},
{
"path": "docs/reference/datamodel/triggers.rst",
"chars": 16139,
"preview": ".. _ref_datamodel_triggers:\n.. _ref_eql_sdl_triggers:\n\n========\nTriggers\n========\n\nTriggers allow you to define an expre"
},
{
"path": "docs/reference/edgeql/analyze.rst",
"chars": 1714,
"preview": ".. _ref_eql_analyze:\n\nAnalyze\n=======\n\n.. index:: explain, performance, postgres query planner\n.. api-index:: analyze\n\nP"
},
{
"path": "docs/reference/edgeql/delete.rst",
"chars": 2928,
"preview": ".. _ref_eql_delete:\n\nDelete\n======\n\n.. api-index:: delete\n\nThe ``delete`` command is used to delete objects from the dat"
},
{
"path": "docs/reference/edgeql/for.rst",
"chars": 4813,
"preview": ".. _ref_eql_for:\n\nFor\n===\n\n.. api-index:: for in, union\n\nEdgeQL supports a top-level ``for`` statement. These \"for loops"
}
]
// ... and 1227 more files (download for full content)
About this extraction
This page contains the full source code of the geldata/gel GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1427 files (21.0 MB), approximately 4.0M tokens, and a symbol index with 16078 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.