-
Notifications
You must be signed in to change notification settings - Fork 9
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
Standardise record value setting/getting #60
Merged
Merged
Changes from 134 commits
Commits
Show all changes
138 commits
Select commit
Hold shift + click to select a range
6a9ea1e
Use _default_ in Out records
AlexanderWells-diamond c4ae72c
Rebasing branch from master
AlexanderWells-diamond 75f5ecf
Fix records alarm status if no initial value
AlexanderWells-diamond cdbbc8a
Fix typo
AlexanderWells-diamond 0c2238f
Add type information to records
AlexanderWells-diamond d64e715
String handling for waveforms. Remove value casting
AlexanderWells-diamond c1fb7dc
Waveform out string handling fixes
AlexanderWells-diamond 3badfd3
Fix type returned from waveforms, and tests
AlexanderWells-diamond dcba54c
Add truncating strings before record init
AlexanderWells-diamond fadaacb
Handle byte strings in waveforms
AlexanderWells-diamond 3e02993
Support byte strings in stringIn/Out records
AlexanderWells-diamond 9a5b3b2
Python2-compatible string formatting
AlexanderWells-diamond a3af507
Add UTF-8 tests
AlexanderWells-diamond a6837e7
Support for more input types to int+float records
AlexanderWells-diamond b7883f1
Refactor to have easier Waveform value handling
AlexanderWells-diamond 69683a3
Remove unnecessary TODO
AlexanderWells-diamond 5fd3819
Python2 compatibility changes
AlexanderWells-diamond e094ba7
Attempt to handle Python2 strings properly
AlexanderWells-diamond b5b7586
Change name to remove pytest warning
AlexanderWells-diamond 62ac99d
Additional Python2 UTF-8 handling
AlexanderWells-diamond 237d590
Fix incorrect Python2 version test
AlexanderWells-diamond 99334e1
Stop cothread on Win+another Python2 string fix
AlexanderWells-diamond c69272b
Revert "Stop cothread on Win+another Python2 string fix"
AlexanderWells-diamond 2a1d5ee
Another Python2 string handling fix
AlexanderWells-diamond ed464d0
Delete unused fixture
AlexanderWells-diamond e471817
Python2 decoding fix. Skip IOC init on Windows.
AlexanderWells-diamond 00d622d
Swap to using unicode strings in tests.
AlexanderWells-diamond 9f32a36
Fix previous commit's unicode handling
AlexanderWells-diamond 9656b87
Add tests for default value checking
AlexanderWells-diamond cfc1370
Remove unnecessary unicode specifiers
AlexanderWells-diamond 2c51781
Cover additional cases
AlexanderWells-diamond 7f8e57a
Remove TODO
AlexanderWells-diamond 4e59eaa
Formatting fixes from code review
AlexanderWells-diamond db7b430
Change accepted typed to exclude ctypes and None
AlexanderWells-diamond 7c417af
Add missing requires_cothread marker
AlexanderWells-diamond 157b934
Fix Windows fail - move inner function to top level
AlexanderWells-diamond f54eaf3
Fix formatting issues
AlexanderWells-diamond 05c5c7a
Remove unnecessary exception, and fix formatting
AlexanderWells-diamond da2e38b
Remove another unnecessary exception
AlexanderWells-diamond ddf87bd
Skip tests putting None into String records.
AlexanderWells-diamond c5b14fb
Add tests for inf, -inf, and nan values
AlexanderWells-diamond 1079739
Refactor test_records into test classes
AlexanderWells-diamond 1688283
First CAGet tests working
AlexanderWells-diamond cea2448
Add more CAGet tests
AlexanderWells-diamond c57e1f1
Allow record_value_asserts to run on Windows
AlexanderWells-diamond 7871e2a
Use neater type conversion after caget
AlexanderWells-diamond f3b36cf
Increase timeout to alleviate test failures
AlexanderWells-diamond 0604d88
Add Yield call to ensure IOC processes new value
AlexanderWells-diamond 1ca6334
Bump timeout further still for MacOS CI runners
AlexanderWells-diamond 6b45466
Use up to date cibuildwheel
AlexanderWells-diamond c36a50d
Decode CAPut'd strings in the same way .set() does
AlexanderWells-diamond 20cf010
Add CAPut - get() test cases
AlexanderWells-diamond 0bcd86f
Add CAGet tests to the Default tests
AlexanderWells-diamond 2389c6a
Skip building musllinux
AlexanderWells-diamond dd88095
Another attempt to stop musllinux builds
AlexanderWells-diamond 2e9f37c
Another attempt to stop musllinux builds
AlexanderWells-diamond 95d6d83
Improve synchronisation for parent-child messages
AlexanderWells-diamond ceae66c
Disable tests - investigating Windows build issues
AlexanderWells-diamond 39e2e18
Revert cibuildwheel version change
AlexanderWells-diamond 0998b87
Revert "Revert cibuildwheel version change"
AlexanderWells-diamond 26e0dd0
Use cibuildwheel action
AlexanderWells-diamond 2036b61
Install "build" package
AlexanderWells-diamond 1ad31a2
Fix path for archive upload
AlexanderWells-diamond c6e9257
Revert changes to this file as action didn't work
AlexanderWells-diamond 9330dd4
Explain contents of CIBW_SKIP env var
AlexanderWells-diamond 112a2bf
Add directory contents printing to cibuildwheel
AlexanderWells-diamond 5d9ece7
Try storing output in dist folder
AlexanderWells-diamond 741f70e
Change ls command on linux
AlexanderWells-diamond c1d3f8c
Increase verbosity and tweak BEFORE action
AlexanderWells-diamond 946aa31
Print tree output early
AlexanderWells-diamond 66c1348
Back to cibuildwheel V1 to examine tree output
AlexanderWells-diamond c81471e
Tweak debugging instructions for windows
AlexanderWells-diamond 494e93d
Roll back cibuildwheel version to 2.2.2
AlexanderWells-diamond 03a626b
Remove logging and reinstate running tests
AlexanderWells-diamond 1a2f0a3
Pin cibuildwheel to 2.2.2
AlexanderWells-diamond 954668b
Change to only run CI once on pull requests
AlexanderWells-diamond 9618484
Add Unit Test Results action to CI
AlexanderWells-diamond 5881882
Use different approach to saving JUnit results
AlexanderWells-diamond fa88521
Stop docs CI from running multiple times
AlexanderWells-diamond 9a66d8d
Tweak results XML upload location
AlexanderWells-diamond 6d56f3a
Fix invalid artifact name
AlexanderWells-diamond df3d724
Bump cibuildwheel version and add pip option
AlexanderWells-diamond 2956acb
Fix merge issues
AlexanderWells-diamond dfc8ea9
Refactor tests to massively reduce subprocesses
AlexanderWells-diamond 8d61dfd
Apply Black formatting
AlexanderWells-diamond 48c440d
Specify old pip behaviour in yaml file
AlexanderWells-diamond 7714053
Go back to pinning cibuildwheel 2.2.2
AlexanderWells-diamond f9a8af1
Attempt to use cibuildwheel 2.3.1 again
AlexanderWells-diamond 51b37d9
Add comment explaining env var
AlexanderWells-diamond 7f54987
Initial rewrite of core device value handling
Araneidae f5817cd
Fix missing waveform default value
Araneidae 8ecdd88
Update version of manylinux image
AlexanderWells-diamond ed1b193
Add special support for long string records
Araneidae 105d2d3
Make usage of quotation marks consistent
Araneidae 0df634e
Fixes to string handling
Araneidae ed3a2c5
Revisit long string initialisation
Araneidae 0d7b372
Merge remote-tracking branch 'github/sort_setting_values' into merge-…
Araneidae 2b76593
Add tests for Issue #43
AlexanderWells-diamond 83bacad
Add tests for Action, longStringIn, longStringOut
AlexanderWells-diamond 9b26f91
Add very long string tests
AlexanderWells-diamond 9fccffd
Refactor the Validate tests
AlexanderWells-diamond 9f57ed1
Improve error message during assertion failure
AlexanderWells-diamond 63d26d9
Remove tests that are now invalid
AlexanderWells-diamond c8dfbd0
Remove invalid tests and apply test fixes
AlexanderWells-diamond bdab3d8
Revisit waveform initialisation
Araneidae 6bd9407
Merge remote-tracking branch 'github/merge-tests' into merge-tests
Araneidae f719013
Add special support for writing bytes to waveforms
Araneidae 0feae58
Update tests after latest code changes
AlexanderWells-diamond fe6b436
Fix more tests
AlexanderWells-diamond 71361af
Fix behaviour of early .get() on uninitialised Out records
Araneidae a990af5
Ensure waveform record and data types match properly
Araneidae 3cdbfdd
Merge remote-tracking branch 'github/merge-tests' into merge-tests
Araneidae b748856
Add second case where we have to reduce int64 to int32
Araneidae f8b67f8
Fix more tests
AlexanderWells-diamond b4f7995
Merge branch 'merge-tests' of github.com:dls-controls/pythonIoc into …
AlexanderWells-diamond 2c93f39
Fix bug in waveform change comparison
Araneidae 62ac061
Merge branch 'merge-tests' of github.com:dls-controls/pythonIoc into …
AlexanderWells-diamond 049da54
More test fixes
AlexanderWells-diamond f805f02
Skip caget value checks when waveform is length 1
AlexanderWells-diamond 40cb943
Use array_equal to compare numpy arrays
Araneidae 61a8a47
Ensure we don't create zero length waveforms
Araneidae 42332fb
Fix package dependencies
AlexanderWells-diamond b544c9e
Revert "Fix package dependencies"
AlexanderWells-diamond 7ce0246
Pin epicscorelibs version to fix dependency errors
AlexanderWells-diamond d7f02f3
Revert "Pin epicscorelibs version to fix dependency errors"
AlexanderWells-diamond 21d510e
Pin epicscorelibs version to fix dependency errors
AlexanderWells-diamond 31bdb2b
Add docs for longStringIn/Out
AlexanderWells-diamond 82f91f0
Clean up misleading docs
AlexanderWells-diamond 7f6ccd3
Add changelog entry for PR#60
AlexanderWells-diamond b5e66eb
Now also block writing over-long strings to longString records
Araneidae a7dc10b
Merge remote-tracking branch 'github/sort_setting_values' into sort_s…
Araneidae 8d30a64
Merge branch 'sort_setting_values' of github.com:dls-controls/pythonI…
AlexanderWells-diamond 4cbdb94
Refactor tests to split value tests into own file
AlexanderWells-diamond 98de8f6
Add tests for issue #55
AlexanderWells-diamond dd99311
Add coverage to Multiprocess tests
AlexanderWells-diamond adaa286
Restore original epicscorelibs dependency
AlexanderWells-diamond e12572f
Update lock file with epicscorelibs changes
AlexanderWells-diamond 0dd1544
Add procedure to update all dependencies
AlexanderWells-diamond File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,3 @@ | ||
[build-system] | ||
requires = ["setuptools", "wheel", "setuptools_dso>=2.1", "epicscorelibs>=7.0.6.99.1.0"] | ||
requires = ["setuptools", "wheel", "setuptools_dso>=2.1", "epicscorelibs==7.0.6.99.1.0"] | ||
build-backend = "setuptools.build_meta:__legacy__" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This strong tie to a very particular version of
epicscorelibs
rings an alarm bell for me. What's going on here? Surely we don't want this, do we?Separately, the version number is in an alarmingly non-standard format!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is an ordering issue here. The build process is this:
python setup.py bdist_wheel
is called to make a binary wheel, which is compiled against the exact version of epicscorelibs that has been installed, and records this fact in the wheelThe
>=
that was there originally was correct, which would mean that pythonSoftIOC was compiled against the latest available epicscorelibs. Unfortunately in the tests we require p4p, which is also compiled against a particular version of epicscorelibs. If a new version of epicscorelibs is released, but p4p is not, then pip will fail to install dependencies. This is why we are using==
. Without ABI compliance for EPICS, I can't see a way around this, unless a release of p4p is made with every epicscorelibs release. Fortunately we don't care for aioca as we only need API compliance, not ABI compliance.@mdavidsaver can you think of a way we can resolve this?
The first part is the EPICS release, but not sure about the other bits. Maybe @mdavidsaver could comment on this too?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry. I've been sloppy about this as I'm in the (so far long) process of introducing another dependency pvxslibs. I'll try to straighten this out. Though even if I do, there will always be some time when pypy.org has newer versions of parts of the dependency chain. Maybe only minutes, but never zero.
Speaking strictly, API is important at build time (with a compiler), and ABI afterwards. So in an ideal world, pyproject.toml is expressing the build time dependency (
BuildRequires
in an RPM .spec file), whileinstall_requires
in setup.py expresses the runtime dependency (plainRequires
in a .spec). As with a.spec
runtime dependencies are partly generated. so...https://github.com/dls-controls/pythonSoftIOC/blob/3866562259982b6b019d3d5cb2b87b3c8ec98b01/setup.py#L108-L109
So if epicscorelibs
7.0.6.99.1.0
is installed, this will expand to:There are three pieces of information being encoded: upstream EPICS Base version (everything up to and including the
.99
), epicscorelibs ABI, and epicscorelibs revision. So the version range being emitted above allows for later revisions which (hopefully) don't include any ABI change.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the problem is only with GHA, you might be able to pass
--no-binary p4p
to pip when installing the dev dependencies prior to running tests.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @mdavidsaver it looks like p4p 3.5.5 fixes the issue - I've restored the original epicscorelibs dependency in this commit and it seems to be working: adaa286Spoke too soon, the Code CI works but the Docs CI breaks with this change... Investigating...