Some fixes to the magic import system

- Stop adding the directory of every .capnp file to the import path. If a .capnp
  file wants to import a file in its own directory, it should use a relative
  import. Fixes #278
- Stop using /usr/include/capnp as an import path. This is incorrect. It should
  only be /usr/include.
- Stop allowing additional paths to be specified for magic imports. This leads
  to inconsistencies. More specifically, the way that a nested import like
  `ma.mb.mc_capnp` gets imported by python, is to first import `ma`, then import
  `ma.mb`, and finally `ma.mb.mc_capnp`. Pycapnp's magic importing is only
  involved in the last step. So any additional paths specified don't work for
  nested imports. It is very confusing to only have this for non-nested imports.
  Users with folder layouts that don't follow pythons import paths can still use
  `capnp.load(.., .., imports=[blah])`.
This commit is contained in:
Lasse Blaauwbroek
2023-11-24 23:34:27 +01:00
committed by Jacob Alexander
parent b6ea909e9a
commit 3aade70bfa
4 changed files with 47 additions and 64 deletions

5
test/schemas/child.capnp Normal file
View File

@@ -0,0 +1,5 @@
@0x9afc0f7513269df3;
struct Child {
name @0 :Text;
}

View File

@@ -0,0 +1,7 @@
@0x95c41c96183b9c2f;
using import "/schemas/child.capnp".Child;
struct Parent {
child @0 :List(Child);
}