Skip to content

Expand type annotations and add classes for path item handling#412

Open
pappnu wants to merge 30 commits into
loonghao:mainfrom
pappnu:type-annotation
Open

Expand type annotations and add classes for path item handling#412
pappnu wants to merge 30 commits into
loonghao:mainfrom
pappnu:type-annotation

Conversation

@pappnu
Copy link
Copy Markdown

@pappnu pappnu commented Aug 12, 2025

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 VBS Scripting Reference 2020.

Breaking Changes

  • Python requirement is raised to 3.10 because of the used syntax.
  • Removes Application.compareWithNumbers, Application.system and Session.echo functions as they simply wrapped basic Python actions without adding any extra functionality to them, so I assumed they aren't really necessary.
  • getByName now returns None instead 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 have also used this extensively 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.

def get(self, key: str) -> TextFont | None:
...

def get(self, key: str, default: T | None = None) -> TextFont | T | None:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

redefinition of unused 'get' from line 81

...

@overload
def get(self, key: str) -> TextFont | None:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

redefinition of unused 'get' from line 77

@pappnu
Copy link
Copy Markdown
Author

pappnu commented May 26, 2026

@loonghao The hound bot seems to complain about valid overload definitions and its documentation suggests that it is using a very old version of Flake8. Should it be removed from the project? I assume that there would be more up to date alternatives, though I'm not familiar with such tools. The pull request workflows also check at least partially the same things that the hound bot does.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant