Skip to content

Adding type hints for other End files delegating.py, grouping.py, ipexing.py, notifying.py, exchanging.py#355

Open
Sotatek-Patrick-Vu wants to merge 7 commits intoWebOfTrust:mainfrom
cardano-foundation:feat/common_type_hints
Open

Adding type hints for other End files delegating.py, grouping.py, ipexing.py, notifying.py, exchanging.py#355
Sotatek-Patrick-Vu wants to merge 7 commits intoWebOfTrust:mainfrom
cardano-foundation:feat/common_type_hints

Conversation

@Sotatek-Patrick-Vu
Copy link
Contributor

No description provided.

@codecov
Copy link

codecov bot commented Dec 10, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 97.53%. Comparing base (5e540e7) to head (17b63e6).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #355   +/-   ##
=======================================
  Coverage   97.53%   97.53%           
=======================================
  Files           1        1           
  Lines         324      324           
  Branches       24       24           
=======================================
  Hits          316      316           
  Misses          8        8           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

sigs: string[],
recp: string[]
): Promise<any> {
): Promise<Operation<unknown>> {
Copy link
Collaborator

Choose a reason for hiding this comment

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

@lenkan We have a follow up PR (in progress, almost there) that converts these to specific WitnessOperation, GroupOperation etc... (not generics) so should cleanup some of the things from this PR.


assert.strictEqual(offer.exn.p, applySaid);
assert(
'e' in offer.exn &&
Copy link
Collaborator

Choose a reason for hiding this comment

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

@lenkan Hmm, I feel like this will become annoying. We could just use any instead of unknown in these scenarios, or alternatively offer a bunch of type guard functions but that list could grow quite large and hard to maintain. Thoughts?

@iFergal iFergal requested review from kentbull and lenkan December 18, 2025 17:02
@kentbull
Copy link
Collaborator

@iFergal feel free to approve and merge.

@iFergal
Copy link
Collaborator

iFergal commented Jan 14, 2026

@kentbull Going to see if there's a nice way to serialise the exn resources from exchanges().get and infer types based on the route. Because currently embeds are unknown and it's difficult to work with. You need to cast everything, so Signify should at the very least provide those.

@Sotatek-Patrick-Vu Maybe we should mark as draft for a little while

Copy link
Collaborator

@lenkan lenkan left a comment

Choose a reason for hiding this comment

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

Looks good to me.

It introduces a bit too much type casting and type checking in the tests for my taste. But I get how that happened with all the re-assigning of variables, which is a separate problem.

Comment on lines +732 to +737
/** @default null */
groupName: string | null;
/** @default null */
memberName: string | null;
/** @default null */
sender: string | null;
Copy link
Collaborator

Choose a reason for hiding this comment

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

Can these be omitted? Or they have to be explicitly set to null? Was thinking they are groupName?: string | null otherwise.

I haven't checked how they are used yet.

Copy link
Collaborator

Choose a reason for hiding this comment

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

KERIA adds them to some exns in groups().getRequest. I think we could change it to be groupName?: string; over groupName: string | null though

Comment on lines +60 to +61
let rotate_kargs = {} as RotateIdentifierArgs;
result = await delegate.identifiers().rotate('delegate1', rotate_kargs);
Copy link
Collaborator

Choose a reason for hiding this comment

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

Suggested change
let rotate_kargs = {} as RotateIdentifierArgs;
result = await delegate.identifiers().rotate('delegate1', rotate_kargs);
result = await delegate.identifiers().rotate('delegate1', {});

We should be able to avoid the type casting and just inline the empty object. Little less noisy.

@iFergal
Copy link
Collaborator

iFergal commented Jan 27, 2026

@lenkan The type casting is because of unknown everywhere. We have been working on a follow up PR which is almost ready to be opened against this repo: https://github.com/cardano-foundation/signify-ts/pull/22/changes

Feel free to take a look ahead of time. I'd like for both of them to go in together, as I also don't like the type casting.

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.

4 participants