Expand type annotations and add classes for path item handling
This PR adds extensive type annotations, various missing properties, classes for interacting with path items and tries to lessen some of the repetition within the code. The type annotations don't cover everything, especially things that would have required creating new wrapper classes. The annotations are mostly based on Photoshop Scripting Reference and Photoshop JavaScript Scripting Reference 2020.
Breaking Changes
- Python requirement is raised to 3.10 because of the used syntax, though I haven't touched any of the Python version requirement definitions in, e.g.,
pyproject.toml. - Removes
Application.compareWithNumbers,Application.systemandSession.echofunctions as they simply wrapped basic Python actions without adding any extra functionality to them, so I assumed they aren't really necessary. getByNamenow returnsNoneinstead of throwing, as I find that easier to work with in a strictly typed codebase.
Testing
I added some tests of my own and ran some of the existing tests, though many of them didn't pass even when using the version from main branch. I also used this a bit with Proxyshop, which uses especially the basic layer modification and action manager parts of the API. There's still many untested properties and functions, so bugs are quite likely.
This might also help with #405.
Please let me know what further changes would be required to get this merged.