Skip to content

DEX-2184: warn once at startup and mark the package deprecated on PyPI - #213

Merged
mottymilshtein merged 2 commits into
masterfrom
DEX-2184-deprecation-notice
Oct 4, 2026
Merged

mottymilshtein merged 2 commits into
masterfrom
DEX-2184-deprecation-notice

Conversation

@mottymilshtein

Copy link
Copy Markdown
Collaborator

What

  • Startup warning. FireblocksSDK.__init__ emits a one-time FutureWarning: the SDK is deprecated, it reaches end-of-life on November 1, 2026, and users should migrate to the fireblocks package, with the migration guide link. It fires once per process, and FIREBLOCKS_SDK_SUPPRESS_DEPRECATION_WARNING turns it off, using the same variable as the JS SDK. FireblocksNCW takes a FireblocksSDK, so it's covered too.
  • README banner at the top, with the same points plus "never yanked", pointing at fireblocks.
  • setup.py:
    • long_description now reads README.md. It used to be the hardcoded string "Fireblocks python SDK", so the README never reached the PyPI page, and the banner couldn't have appeared there.
    • The summary (description) now starts with "DEPRECATED — use the fireblocks package instead". It shows in PyPI search results and pip show.
    • The classifier changed from Development Status :: 5 - Production/Stable to 7 - Inactive.

Reviewer note: FutureWarning, not DeprecationWarning

DEX-2184 specifies DeprecationWarning. That's deliberate here: Python's default filters hide a DeprecationWarning raised inside an imported library (PEP 565), so most users would never see it. Python's docs recommend FutureWarning for deprecations aimed at an application's users, and it shows by default.

Tested

  • python -m build succeeds, with the same warnings as on master. The README is in the sdist.
  • twine check passes, so the README renders on PyPI.
  • The wheel's metadata shows the new summary, the 7 - Inactive classifier and the banner.
  • bumpversion --dry-run still finds the version strings in setup.py, so the release workflow is unaffected.
  • I installed the wheel and created the client 3 times. Exactly one FutureWarning appeared with default filters, and none with the env var set.

🤖 Generated with Claude Code

The SDK reaches end-of-life on November 1, 2026.

- FireblocksSDK prints a one-time FutureWarning pointing at the fireblocks
  package, silenced by FIREBLOCKS_SDK_SUPPRESS_DEPRECATION_WARNING. It is a
  FutureWarning rather than a DeprecationWarning because Python hides
  DeprecationWarning raised inside an imported library by default.
- The README opens with a deprecation banner, and long_description now reads
  README.md, so the banner appears on the PyPI project page. It was a
  hardcoded one-line string before, so the README never reached PyPI.
- The PyPI summary starts with DEPRECATED, and the Development Status
  classifier is now 7 - Inactive.
@github-actions github-actions Bot added the chore label Oct 1, 2026
@mottymilshtein
mottymilshtein merged commit 2688d43 into master Oct 4, 2026
21 of 25 checks passed
@mottymilshtein
mottymilshtein deleted the DEX-2184-deprecation-notice branch October 4, 2026 08:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants