dantali0n / radloggerpy Goto Github PK
View Code? Open in Web Editor NEWRadiation monitoring solution for a variety of instrument types.
License: Apache License 2.0
Radiation monitoring solution for a variety of instrument types.
License: Apache License 2.0
From the Python documentation it is clear that using TypeVar(... bound=Example)
will constraint the type to a subclass of Example
.
What is unclear is how:
_U = TypeVar('_U', bound=Example)
Type[_U]
Is different from:
Type[Example]
Is there any reason to prefer one over the other? and what are the consequences of these differences?
When CI generates the pot files it should verify that the currently commited pot file matches what is generated by the CI.
Sometimes it might be desired to execute a command and store the results in a file. In this case it is undesirable to output any additional messages as these would globber the file being generated.
A special silent mode needs to be added that will disable any unwanted output. The silent mode should be enabled by default when the -f
parameter is supplied in radloggercli
-f
is setUse and implement the https://www.sphinx-doc.org/en/master/usage/advanced/intl.html project such that our readthedocs documentation can be accessed in different languages.
Also some debug info about were gettext has looked to try and find them. Finally some option to add an additional path through oslo.config
The warning should take into consideration the configured locale especially.
Manually changing both requirements files and adjusting lower-constraints.txt is error prone. This process should be automated such that any discrepancy raises an error in CI/CD pipeline.
No more twitter to contact me
Consider mechanisms such as zero copy, threads, data locality, lockless queues and overhead of synchronization paradigms such as conditions and mutexes.
DeviceTypes in terms of radiological devices is quite vague and does not clearly indicate that it implies the communication interface for a device. Instead DeviceInterfaces
would be a better indicator which would than subsequently allow DeviceTypes to be used more effectively.
For instance, DeviceTypes could be used to distinguish between geiger counters, proportional counters, scintillation devices or semiconductor based counters. This distinction is quite important as it allows to associate certain types of radiation measurements with devices.
As an example, Geiger counters can not accurately measure absorbed dose as they do not proportionally measure the energy of each count (event). While a dosimeter will sometimes only measure effective and or equivalent dose and not have any way to report absorbed dose.
Requires certbot configuration for wildcard dns, investigate dns provider plugin support.
Currently the placement and location of the SQLite database file is depending upon working directory of the user, this is very error prone and unsuitable for daemon like applications.
Instead, the placement of the SQLite database should default to a subfolder in the user directory unless it is specified at an alternative location in the configuration files.
The Device abstract class inherits StateMachine which allows external access to the transition method. This is undesirable, instead Device should keep an instance of StateMachine as internal object and only expose get_state.
Exceptions
that inherit from Warning
should never be raised they should be logged using oslo log. Create a hacking rule to catch these programming mistakes.
Many of the database objects methods share a lot of code that could potentially be reduced.
def find(session, reference, allow_multiple=True):
reference._build_object()
"""Only look for serial devices"""
reference.m_device.interface = DeviceInterfaces.SERIAL
base_filters = reference._filter(reference.m_device)
"""Check if reference is base or child type when setting filters"""
if hasattr(reference, 'm_serial_device'):
filters = reference._filter(reference.m_serial_device)
else:
filters = {}
query = session.query(Device).filter_by(**base_filters)\
.join(SerialDevice).filter_by(**filters)
def delete(session, reference, allow_multiple=False):
reference._build_object()
filters = reference._filter(reference.m_device)
query = session.query(Device).filter_by(**filters)
The device CLI has many duplicates of the fields
tuple and similarly reuses the same tuple of attributes often. These variables could be part of base classes similar to the pattern used for the arguments
property in combination with the _arguments
variable.
class Example(metaclass=abc.ABCMeta):
"""Arguments property is extensible by child classes"""
_arguments = None
@property
def arguments(self):
if self._arguments is None:
self._arguments = dict()
self._arguments.update({
'--id': Argument(
'-i', help="Example argument attribute",
type=int)
})
return self._arguments
Gather releasenotes from gitlab releases and use squash merge strategy
The IMPLEMENTATION_CHOICES variable needs to be fully evaluated statically as it is used to fill possible values in database table columns. However, due to circular imports the DeviceManager its dynamic discovery features can't be used in this static context.
Make this somewhat smart where it uses LOG.error for error exceptions and LOG.warning if the exception inherits Warning
.
Only CLI should be allowed to actually raise
a Warning.
Release dependency versions should be set in stone at the time of release
Design how the interface class will look and operate for the endpoints as well as the topic and message broker receiving the events for these endpoints.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.