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

kivy / kivy / 30009365486
60%

Build:
DEFAULT BRANCH: master
Ran 23 Jul 2026 01:15PM UTC
Jobs 2
Files 346
Run time 1min
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

23 Jul 2026 01:00PM UTC coverage: 59.989% (+0.2%) from 59.831%
30009365486

push

github

web-flow
Accept pathlib.Path in path-accepting APIs (#9350)

Kivy's path-accepting APIs historically required a str. This lets them also
accept any os.PathLike (e.g. pathlib.Path) by coercing to str via os.fspath()
at a small set of central choke points, keeping all internals (string parsing,
cache keys, Cython .encode()) string-based.

- utils: add path_to_str() helper (coerces os.PathLike -> str; leaves str,
  bytes, None, file-like and URIs unchanged).
- properties: StringProperty.convert() now coerces os.PathLike -> str, so every
  path-bearing StringProperty (Image.source, font_name, App.kv_file, the
  background_*/atlas image sources, Window.icon, ...) accepts Path. Non-path,
  non-str values still raise ValueError.
- resource_find / resource_add_path / resource_remove_path: coerce up front so
  cache keys and path-list membership stay consistent.
- core loaders: Image/ImageLoader (load/save/filename), SoundLoader.load,
  VideoBase.filename/generate_thumbnail, LabelBase.resolve_font_name/register,
  SvgLoader.load, Lottie filename.
- lang/atlas/storage: Builder.load_file/unload_file/load_string, Atlas,
  JsonStore, DictStore.
- app/config: App.load_kv/get_application_config; Config.read now accepts
  os.PathLike while still rejecting multiple filenames.
- tests: new kivy/tests/test_pathlib_support.py, parametrized over str vs Path.

Coercion only fires for isinstance(x, os.PathLike), so str inputs (including
atlas://, http://, data: URIs) and BytesIO pass through unchanged. On Windows a
Path canonicalizes to native separators; coercion is consistent per argument.

3271 of 6511 branches covered (50.24%)

180 of 195 new or added lines in 15 files covered. (92.31%)

6 existing lines in 3 files now uncovered.

29418 of 49039 relevant lines covered (59.99%)

1.18 hits per line

Uncovered Changes

Lines Coverage ∆ File
9
94.16
kivy/tests/test_pathlib_support.py
2
62.22
0.29% kivy/utils.py
1
62.39
-0.08% kivy/app.py
1
21.88
2.07% kivy/config.py
1
66.52
0.0% kivy/lang/builder.py
1
57.38
10.83% kivy/resources.py

Coverage Regressions

Lines Coverage ∆ File
4
64.96
0.0% kivy/modules/inspector.py
1
66.52
0.0% kivy/lang/builder.py
1
62.22
0.29% kivy/utils.py
Jobs
ID Job ID Ran Files Coverage
1 30009365486.1 23 Jul 2026 01:15PM UTC 346
59.94
GitHub Action Run
2 30009365486.2 23 Jul 2026 01:17PM UTC 346
58.52
GitHub Action Run
Source Files on build 30009365486
  • Tree
  • List 346
  • Changed 15
  • Source Changed 14
  • Coverage Changed 15
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30009365486
  • 4dd388cf on github
  • Prev Build on master (#30009088541)
  • Next Build on master (#30009965577)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc