The "editable mode" has been changed in >=setuptools-54 to no longer
call `setup.py develop` on which we've been relying so far. And
although the `SETUPTOOLS_ENABLE_FEATURE=legacy-editable` escape hatch
exists, it probably wouldn't for long, so it's a good idea to switch
everything to be compatible with the brave new world of PEP 517/660.
Co-authored-by: Fantix King <fantix.king@gmail.com>
Otherwise modern `pip` will attempt to build dependencies in a clean
environment, which makes it hard to test against development versions of
dependencies.
* Convert the docs to use lower-case keywords consistently.
The client library examples are left as is. The queries appear inside
strings and so upper-case keywords may be desirable in that instance.
The :eql-statement: no longer requires the title to be all in upper-case.
The statement itself is normalized to be lower-case for purposes of
referencing.
* Update the `project init` examples.
Issue #3366
* Update function cheatsheets.
Use the expression to define functions and not a string.
Issue #3366
* Stop using a link to `detached`.
Use either `:eql:op:detached` or `:eql:kw:detached`. The keyword usage
points to the "with block" page, whereas the operator refers tot he
stdlib.
Issue #3366
* Update the autogeneted meta grammar file.
Issue #3366
This is a revert of 740b494443. It seems
like `--no-use-pep517` breaks too and I can no longer reproduce the
original issue with pip 21.3.1.
Also, adjust the `make clean` target to explicitly remove the ignored
directories too.
Implement floor division and its companion modular division in pure SQL.
The basic principle is that integer division result is always rounded
down (as opposed to rounded to 0). This has the desirable property that
modular division always yields positive results for positive modulus,
while giving negative results for negative modulus.
Mathematically they are equivalent, but practically modular division
that always produces the results between 0 and the modulus is useful,
since these are often used as offsets (in, say, arrays) where 1 and -1
(for mod 2) are not equivalent.
Fixes#753.
* The DB server is *always* configured to work un UTC timezone.
* It's no longer possible to cast a string without an explicit
timezone into a std::datetime. Likewise, std::local_time,
std::local_date, and std::local_datetime reject string values
with a timezone.
* to_datetime() now always requires a timezone.
* New function variant: to_datetime(local_datetime, timezone)
allows to convert a local date/time to a timezone-aware type.
* New functions variants: to_local_datetime(datetime, timezone),
to_local_time(datetime, timezone), and
to_local_date(datetime, timezone) can convert local date/time
objects into a timezone-aware std::datetime.
* Date/time arithmetic between "local" date/time values and
timezone-aware date/time values is no longer allowed.
The language used to defined eschema is currently very similar to DDL
and very different (case-sensitive, whitesapce-sensitive). Which means
that in principle it's a whole new language that needs to be documented
(by us) and learned (by the users). This is a non-trivial burden.
There's also some confusion as to which is primary source of truth - DDL
or eschema?
The new approach is to make the Schema Definition Language (SDL) to be
much more closely related to DDL. The rule of thumb is to make it so
that if you take a CREATE ... statement from DDL and strip out all
the CREATE and SET keywords you should end up with a valid SDL
declaration. The goal of DDL is to specify how to change the DB from
one state to the next, the goal of SDL is to describe the final state.
This is why SDL just mirrors CREATE and SET DDL since we're not
interested in the exact details of the steps.
The grammar has been stripped and moved to the EdgeQL grammar tree, but
the package is still called "eschema" and has a separate codegen and ast.
The command `edb gen-meta-grammars` now only has one valid argument
`edgeql`. However, we still keep two pygments grammars using it
(potentially useful if there's different quirks that need to be
accounted for).
Drop the parentheses from the `EXTENDING` list in both SDL and DDL.
Issue #498.
This command generates the meta information useful for creation of
various grammars and highlighters. In particular, this information is
used by the pygments grammars used in REPL.
The command `make pygments` will regenerate an up-to-date grammar based
on the current state of EdgeDB.
The initial motivation to keep the documentation in its own repo
was to make it easier to (a) grant commit bits only for docs
modifications; (b) contain the churn of docs updates in a separate
repo; (c) require no copyright assigmnent to make contributions.
However, as we later discovered, having docs separate from the main
code base makes it significantly harder to ensure synchronized updates
to both repos. Updating documentation properly has been neglected for
the past couple of months.
This commit merges back edgedb-docs repo to the main repo. The former
repository will be archived.
Semantix now has a proper infrastructure for shell commands, complete
with argument passing and complex sub-commands. Every semantix-based
project (including semantix itself) will how have an executable script
'sx.py' in the root of that project that will serve as an entry point
for semantix commands.
Additionally, there is a new convenience tool `sx' (in semantix/tools)
that automatically finds and executes sx.py when run from within a
project directory hierarchy. Place it into your PATH.
So instead of `make test' one now writes `sx test' or
`./sx.py test'
Rectify some misnaming of graph link-related objects. Concept prefix is
not correct, since the link can also point to an Atom. 'link_type'
attribute is turned into 'name'.
Also, make the meta backend Link class a subclass of GraphObject.
This commit makes it possible to specify in a schema that a certain node
has to be constructed as a given object.
Adding 'object: full.class.Name' to a node declaration in a schema will
attach a special tag to a maching data node during validation, which in
turn will call the specified class' 'construct' classmethod during
construction phase.
Increase YAML integration by placing validation inside the YAML
processing pipeline after the composition step. The validator now
works on the node tree instead of flattened data which gives much more
flexibility and, more importantly, provides access to YAML context.
Another feature of this integration: document SCHEMA and document NAME
are now specified uniformly via custom directives. This also makes
it possible to support multidocument YAML files.
Standard unittest has clearly failed to satisfy our requirements for a
robust testsuite infrastructure. Even with our limited number of
tests we had to invent hacks to extend and customize test discovery and
selection. Moreover, setting up any kind of sane boilerplate for a
group of tests is a huge pain with unittest with its disconnected
setUp()/tearDown() methods.
Our next contender is py.test. It has powerful built-in discovery
mechanisms, clever factory-based support for environment setup
(funcargs) and it is possible to extend it nicely without the need to
modify any tests.
I was hoping that it will also help speed up test execution, but
performance wins are marginal.
This commit has a balance of -337 lines of code, which clearly shows
what level of unnecessary provisioning overhead unittest had.