-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reorganization: interfaces and core functionality #35
Comments
@AntonReinhard @SimeonEhrig what do you think? |
Sounds like a working approach |
First step completed with QEDjl-project/QEDcore.jl#6 |
AntonReinhard
pushed a commit
to QEDjl-project/QEDfields.jl
that referenced
this issue
Jun 18, 2024
This opts out the `QEDbase` namespace and adds the dependency on `QEDcore`. This is part of the general restructuring of `QED.jl`, see QEDjl-project/QuantumElectrodynamics.jl#35 for details. --------- Co-authored-by: Uwe Hernandez Acosta <u.hernandez@hzdr.de>
This was referenced Jun 19, 2024
AntonReinhard
pushed a commit
to QEDjl-project/QEDprocesses.jl
that referenced
this issue
Jun 19, 2024
This opts out the `QEDbase` namespace and adds the dependency on `QEDcore`. This is part of the general restructuring of `QED.jl`, see QEDjl-project/QuantumElectrodynamics.jl#35 for details. --------- Co-authored-by: Uwe Hernandez Acosta <u.hernandez@hzdr.de>
This was referenced Jun 19, 2024
szabo137
added a commit
to QEDjl-project/QEDcore.jl
that referenced
this issue
Jun 19, 2024
Copied the concrete implementations of `base_state` from `QEDbase.jl` (see https://github.com/QEDjl-project/QEDbase.jl/blob/dev/src/particles/particle_states.jl) This is part of the general restructuring of `QED.jl`, see QEDjl-project/QuantumElectrodynamics.jl#35 for details.
This was referenced Jun 19, 2024
szabo137
added a commit
to QEDjl-project/QEDfields.jl
that referenced
this issue
Jun 20, 2024
With this PR, QEDfields should use `base_state` from QEDcore, not from QEDbase. This is part of the general restructuring of `QED.jl`, see QEDjl-project/QuantumElectrodynamics.jl#35 for details. --------- Co-authored-by: Uwe Hernandez Acosta <u.hernandez@hzdr.de>
@AntonReinhard Seems like we've done it. Is there anything left over, except releasing? |
szabo137
added a commit
to QEDjl-project/QEDfields.jl
that referenced
this issue
Jun 28, 2024
The namespace shadowing of QEDbase is revoked. This is part of the restructuring of `QED.jl`. See QEDjl-project/QuantumElectrodynamics.jl#35 for details. --------- Co-authored-by: Uwe Hernandez Acosta <u.hernandez@hzdr.de>
Yes I think we're done except for all the releases |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
As we discussed offline, we must reorganize parts of the QEDjl ecosystem. Most importantly,
QEDbase.jl
must contain all interfaces used in severalQED.jl
packages. Furthermore, there is a new packageQEDcore.jl
which contains all the core types and functionality (particles, four-momenta, dirac-tensors, etc). Essentially, we move all concrete implementations fromQEDbase.jl
toQEDcore.jl
and ship all interfaces from the downstream packages toQEDbase.jl
.Some pull requests were already opened to reorganize
QEDbase.jl
,QEDcore.jl
, andQEDprocesses.jl
(big thanks to @AntonReinhard). Nevertheless, the procedure of merging is still an open question and seems to be doable, but not straightforward, as discussed offline with @SimeonEhrig.Here I would like to propose an alternative solution to the follow-the-integration-test errors.
Suggested solution
Preparation
Assume, we have a working version of
QEDcore.jl
(sayQEDcore0.1
), depending on the old version ofQEDbase.jl
(sayQEDbase0.1
). This is possible by replacingwhere
AbstractType
andinterface_function
stand for the root types and interface functions of all interfaces.Similarly, in the downstream packages, one can put
QEDbase0.1
besideQEDcore0.1
without breaking the unit tests, by using againimport QEDbase
,QEDbase.AbstractType
, andQEDbase.interface_function
instead ofusing QEDbase
. In this case, usingusing QEDcore
will not break the tests, because the breaking redefinitions still are in theQEDbase
namespace.At this point, one can easily include the integration tests to
QEDcore.jl
without breaking anything.Updates
Now we can update
QEDbase.jl
by removing the core functions (now provided byQEDcore0.1
) and merge the new version (sayQEDbase0.2
) to dev. This must not break the integration tests, because all downstream packages only depend on exported types and interface functions, the core functions are already coming fromQEDcore
. Therefore, one can releaseQEDbase0.2
.Since
QEDbase0.2
is now in place, we can update all the downstream packages (includingQEDcore0.1
) can be updated by bumping the version ofQEDbase.jl
, removing the interfaces now inQEDbase
and revoking the replacementProposed schedule
QEDcore
, add integration tests to `QEDcore, and merge it to dev (using the replacement above), passing all unit tests and all integration tests. This might require several PRs and registration in the local registry.QEDbase
stuff behind theQEDbase
namespace using the replacement above. AddQEDcore
as the dependency, where the core functionality now comes from.QEDbase
by removing core functionality, which is now placed inQEDcore
(must not break anything because of 2.) and adding all interfaces from all downstream packages. This must not break the integration tests. ReleaseQEDbase0.2
.QEDcore
by revoking theQEDbase
-namespace replacement. Must not break the integration tests. ReleaseQEDcore0.1
.QEDprocesses.jl
by revoking theQEDbase
-namespace replacement along with removing the interfaces now inQEDbase
. ReleaseQEDprocesses0.2
QEDevents.jl
by revoking theQEDbase
-namespace replacement along with removing the interfaces now inQEDbase
. ReleaseQEDevents0.1
.QEDfields.jl
by revoking theQEDbase
-namespace replacement along with removing the interfaces now inQEDbase
. ReleaseQEDfields0.1
.Afterwards, all packages are released using the new structure and all integration tests should pass.
The text was updated successfully, but these errors were encountered: