• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

nolar / kopf
84%
main: 0%

Build:
Build:
LAST BUILD BRANCH: pyproject-toml
DEFAULT BRANCH: main
Repo Added 24 May 2019 05:56PM UTC
Files 0
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH release/0.27.1
branch: release/0.27.1
CHANGE BRANCH
x
Reset
  • release/0.27.1
  • 0.27.1
  • 0.28
  • 0.28rc1
  • 0.28rc2
  • 0.28rc3
  • 0.28rc4
  • 0.28rc5
  • 0.28rc6
  • 112-no-resumes-for-deleted
  • 112-user-memos
  • 12-better-templates
  • 12-evc-story
  • 184-embedded-signals
  • 242-auth-basic
  • 242-ssl-data-fields
  • 246-aiohttp
  • 246-aiohttp4-readiness
  • 249-cluster-resources-in-namespaces
  • 261-crd-fields
  • 269-cicd-kubernetes
  • 269-minikube-rbac
  • 272-coverage-pinning
  • 275-line-too-long
  • 356-keep-finalizers-on-multistep-deletion
  • 356-no-effect-patches
  • 356-timer-with-delete
  • HEAD
  • activities
  • activity-ignore-errors
  • aiohttp
  • aiohttp-2
  • aiohttp-initial-wip
  • aiohttp-timed-tests
  • annotations-charsets
  • annotations-length-cuts-v2
  • async-clients
  • auth-handlers
  • authentication
  • awakening-on-event
  • background-handlers
  • background-handlers-1
  • background-handlers-2
  • background-handlers-3
  • background-handlers-4
  • background-handlers-everything-moved
  • background-handlers-on-top-of-moves
  • background-handlers-with-finalizers
  • backoff-not-cooldown
  • better-401-hints
  • cancellations
  • causation-terminology
  • cause-factory-in-tests
  • classes-moved
  • cleanup-leftovers
  • click-8.2.0
  • codacy
  • code-moves-5
  • code-overhead-minmax
  • codecov-off
  • compact-json
  • configs
  • configurable-finalizer
  • consistent-now-when-awakening
  • continuous-watching
  • convert-to-python39
  • convert-to-python39-narrow-down-dicts
  • coverage
  • coverage-off-default
  • crash-on-fatals
  • deprecate-k8s-versions
  • deprecate-python38
  • dev_dockerdesktop
  • diff-dsl
  • diff-of-fields
  • discover-substatus
  • discoveries
  • discoveries-1
  • doc-classes-improperly-named
  • doc-common-aspects-as-pages
  • doc-preserve-arbitrary-fields
  • drop-py39
  • dsl-of-bodies
  • dummy-patches-via-annotations
  • e2e-fixes
  • e2e-stop-flag
  • e2e-with-ast
  • embeddable-peering-fix
  • events-for-cluster-crds
  • executor-shutdown-on-exit
  • fancy-crd-aliases
  • fields-on-all-handlers
  • filter-labels-by-callbacks
  • filtered-daemons
  • fix-asyncio-tests
  • fix-conntrack-in-cicd
  • fix-lastseen-loss
  • fix-master-errors
  • fix-mypy-for-contextmanager
  • fix-py313-tests
  • fix-stop-flag-setting
  • fix-timing-of-queue-batching-tests
  • fix-watching-http-errors
  • flexible-states
  • flexible-states-2
  • flexible-states-3
  • fork-it
  • freeze-resets
  • handler-error-modes
  • homebrew
  • implicit-owners
  • isort-imports
  • isort-mode-11
  • json-logging
  • jsonlogger
  • k3d-k3s
  • k8s-1.15
  • kubecon
  • kwargs-docs-old-one
  • less-logging
  • lgtm
  • lgtm-no-duplicated-code
  • limited-annotations
  • linting
  • linting-3
  • liveliness
  • log-queues-sync
  • login-handlers
  • loglevels-ignored
  • main
  • master
  • module-moves
  • more-exit-logs
  • more-k8ses
  • multi-callbacks
  • multiple-namespaces
  • no-coveralls
  • no-partials
  • no-resumes-repeated
  • no-stacktraces-on-special-errors
  • no-thread-leaks
  • no-unexpected-warnings-in-tests
  • nonexistent-fields-false-triggering
  • nonexistent-fields-triggered
  • optional-apiversion-in-events
  • patch-of-unexistent
  • peering-tests
  • peerings-not-found
  • pin-ci-cd-libraries
  • pod-filtering-example
  • poetry
  • progress-in-annotations
  • proper-dying
  • proper-trusted-publishing
  • purge-subhandlers
  • py314
  • py38
  • py39-for-kopf027
  • py39-for-kopf027-with-pypi
  • pykube-timeouts
  • pypi-trusted-publisher
  • pyproject-toml
  • rebalance-entities-2
  • rebalance-modules-3
  • refactor-effectuation
  • refactor-imports
  • refactor-registries
  • refactor-watcher-depletion
  • registries-2
  • registries-3
  • registries-5
  • relations
  • release-1.0-purge
  • release/0.22
  • release/0.27
  • release/0.28
  • release/1.29
  • release/1.30
  • remove-legacy-tweaks
  • resource-globs
  • rewrite-py310
  • security
  • security-logging-injections
  • security-only-fstrings
  • session-closed-in-reauth
  • settings-naming-followup
  • settion_timeout
  • setuptools-and-co
  • simplify-registries
  • simplify-registries-2
  • simplify-registries-4
  • simplify-registries-4-py38
  • split-handers-types
  • states-and-outcomes
  • strict-relaxed-errors
  • sync-primitives
  • system-handlers
  • task-cancellation
  • terminology-1
  • terminology-3
  • terminology-5
  • threaded-watching
  • thrifty-essence-patches
  • throttle-on-api-calls
  • throttle-on-unexpected-errors
  • tracable-changes
  • typehints
  • typehints-cause-reasons-renamed
  • typehints-everywhere
  • typehints-hide-response
  • typehints-lazydictview
  • typehints-remaining-changes
  • typehints-resources
  • typehints-toolkits
  • ubuntu-20.04-deprecated
  • unleash-coverage
  • unpin-upgrade-pytest-and-co
  • upgrade-mypy
  • upgrade-ubuntu
  • upgrades
  • vault-with-toggles
  • warn-on-patch-inconsistencies
  • wip/cause-deprecation
  • wip/diff-dsl
  • wip/master/20190713
  • wip/master/20190716
  • wip/master/20190730
  • wip/master/20191001
  • wip/master/20191002
  • wip/master/20191005
  • wip/master/20191006
  • wip/master/20191022
  • wip/master/2020-03-10
  • wip/maybe-fix-worker-mocks-in-queueing-tests

pending completion
37

push

travis-ci

nolar
Select the field-handlers based on actual diff of that field present

Filtering only by diff's fields without actual diff values checked
was used since the initial import and release of the framework, and
was only modified in #340 by extending the filtering logic to react
to sub-fields of a bigger structure changed (for example, for a
field "spec.struct.field" when "spec.struct" is added at once).

Yet such an approach is prone to improper detection of actually
changed fields, as documented in #375: when a bigger struct is added
while we expect a non-existent sub-field of it, it is believed to
exist there, as the sub-field matches the bigger struct; in particular,
when an object is created, it is a root-level diff from `None` to actual
content, and all the non-existent fields trigger their field handlers.

By checking if the actual diff of a specific field is not empty, we
can properly detect if that specific field was added, removed, or changed,
be that as a part of a bigger (containing) structure change, or as a change
in any of its (contained) sub-fields.

This comes at a cost of performance loss: the diff reduction is less performant
than a flat iteration over the diff fields: from 20% to 150% (2.5x) slower.
However, the scale of the slowdown is measured in 5-10s per 1'000'000 checks
on MacBook Air 2013, so we can consider it negligible for real operators.

894 of 1147 branches covered (77.94%)

Branch coverage included in aggregate %.

3313 of 3856 relevant lines covered (85.92%)

3.44 hits per line

Relevant lines Covered
Build:
Build:
3856 RELEVANT LINES 3313 COVERED LINES
3.44 HITS PER LINE
Source Files on release/0.27.1
  • Tree
  • List 56
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
37 release/0.27.1 Select the field-handlers based on actual diff of that field present Filtering only by diff's fields without actual diff values checked was used since the initial import and release of the framework, and was only modified in #340 by extending the... push 23 Aug 2020 11:18PM UTC nolar travis-ci pending completion  
See All Builds (2088)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc