Servox

Latest version: v25.3.0

Safety actively analyzes 725062 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 7 of 9

0.8.2

Added

- Connectors can now be dynamically added and removed from the servo via the
`servo.servo.Servo` methods `add_connector` and `remove_connector`.
- Individual checks can now be run by ID or name via the
`servo.checks.BaseChecks.run_one` method.
- Developer Makefile tasks `format`, `lint`, and `test`.
- Introduced pre-commit hooks for enforcing style guides and engineering
standards.

Changed

- Code across the library is now referenced by package and module rather than
importing individual classes and functions. This reduces the amount of
boilerplate code in any given module and makes the code more accessible by
making implicit references explicit and unambiguous.
- Simplified `servo.logging.ProgressHandler` implementation with an asyncio
queue and producer/consumer pattern.
- Renamed `servo.checks.BaseChecks.run_` method to
`servo.checks.BaseChecks.run_all`.
- Renamed the `filter_` argument of check runners to `matching`.
- Millicore values are now serialized to strings as simple integers when evenly
divisible by 1000 (e.g., `str(Millicore(3000)) == "3"`).
- The canonical coding style for the project has been evolved to directly import
packages and modules instead of class and functions.

Fixed

- `servo show components` now includes the setting names instead of naked
values.
- Type resolution (used in eventing and checks) is now able to flexibly handle
arbitrary imports path and type aliases.
- Settlement time can now be supplied to adjust operations by the optimizer via
the `servo.types.Control` type.
- Before and after event handlers are no longer invoked with extraneous
arguments from the on event definition.

0.8.1

Maintenance release to remove development packages from Docker images.

Changed

- Reworked Docker build automation to decouple from release process.
- Fixed breakage in production builds.
- Updated Poetry dependency to v1.1.0 in Dockerfile.

0.8.0

Added

- `servo.__codename__` constant now contains the release codename.
- Extensive docstring comments for all members of the `servo.types` module.
- Kubernetes Containers can be aliased to set explicit Compomnent names rather
rather than automatically deriving names from Deployment/Container.
- Kubernetes Optimization Strategy classes can now accept options from the
config file (currently supports `alias` for canaries).
- Integrated orjson to gain control over JSON/YAML serialization for classes
that inherit from built-in types (e.g., str, int, float).
- The `ProgressHandler` now handles exceptions and optionally notifies an
external exception handler.
- Servo will now interrupt operations when it detects losing sync with the
backend by encountering unexpected operation errors.
- Critical checks can be declared via the `require` decorator.
- Added the `warn` decorator for creating checks that emit warnings rather than
failing.

Removed

- Subprocess methods have been removed from `servo.connector.Connector` in favor
of directly importing the subprocess module from the utilities module.
- The `required` attribute from the `servo.checks` module in favor of
`severity`.

Changed

- The `servo.logging` module has been generalized for use outside of the
`servo.connectors.Connector` inheritance hierarchy.
- The active connector is now managed via a `ContextVar` just as the active
event is. This enables logging to correctly be attributed to the active
connector without having to pass a specific logger object around everywhere.
- The `servo.types.Setting` class has been significantly overhauled:
- Setting is now an abstract base class
- RangeSetting models range settings
- EnumSetting models enum settings
- Introduce CPU, Memory, Replicas, and InstanceType settings for special
optimizer settings
- Validate numerous behaviors (range inclusion, enum inclusion, type
agreement, etc)
- JSON and YAML serializations now favor human readable representations by
default whenever possible.
- Multicheck methods now yield more readable IDs based off the parent multicheck
method name (e.g., `check_resource_requirements_item_0`).
- Checks now have a severity described by the `servo.checks.Severity`
enumeration, replacing required.
- Required check nomenclature has been replaced with the `critical` severity
level to clarify expectations and eliminate ambiguity in check behavior.

Fixed

- Progress tracking now handles zero length durations appropriately (e.g., in
warmup, settlement, etc).
- Model objects that inherit from builtin classes can now be serialized to
custom representations.
- Kubernetes configuration values now serialize to human readable values instead
of numerics.
- Multicheck expanded methods are now filterable and taggable.
- Progress logging and reporting will no longer trigger unhandled exceptions.
- Adjust operations now return a state descriptor rather than parroting back the
requested state.
- Kubernetes Connector is now aware of out of band changes such as those made by
Horizontal Pod Autoscalers.

0.7.0

Added

- `servo run --check` can now be controlled via the `SERVO_RUN_CHECK`
environment variable.
- The `servo.logging` module now provides the `set_colors` function for
programmatically enabling or disabling coloring.
- The CLI accepts a `—no-colors` argument that will explicitly disable coloring.
- The `SERVO_NO_COLOR` and `NO_COLOR` environment variables are respected to
disable coloring.
- The API URL can be now be overridden via the hidden `--url` CLI option or the
`OPSANI_URL` environment variable.
- Introduce the `multicheck` decorator for use in checks implementations. A
multicheck is method that returns an iterable collection of checkable objects
and a `CheckHandler` callable that can evaluate each item. Each item in the
iterable collection is wrapped into an individual check and run independently.
This provides a simple mechanism for checking configurations that have a mix
of settings that need to be handled specifically and homogenous collections
that can be handled iteratively. The generated checks are filterable and fully
integrated with the CLI.
- Checks and multichecks now support templated string inputs. The `self` and
`item` arguments are made available as format variables, enabling the names
and descriptions given to the decorators to produce dynamic, contextual values
from the configuration. This enhances the readability and diagnostic context
of the checks output.
- The Prometheus connector now exposes a rich set of checks.
- The Prometheus connector now accepts an optional list of targets that are
expected to be scraped.

Changed

- Log coloring is now conditionally enabled via TTY auto-detection.

Fixed

- Handle measure command responses that include metric units (`oco-e`
compatibility).
- Prometheus can now connect to localhost URLs.
- The `get_instance_methods` utility function now returns instance methods that
are bound to a specific object instance

0.6.2

Changed

- Switched Docker base image to `python:3.8-slim`.

0.6.1

Enhanced

- Logging when connecting via a proxy.

Fixed

- Handled null annotations and labels when cloning a Deployment in order to
create a Pod.
- Servo runner now honors proxy settings (previously only honored within
connectors).
- `servo check servo` now works as expected (previously not handled as a
connector name).

Changed

- Updated to httpx v0.14.3.

Page 7 of 9

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.