Skip to content

Conversation

@WilliamBergamin
Copy link
Contributor

@WilliamBergamin WilliamBergamin commented Sep 8, 2025

Summary

This PR removes support for Python 3.6.

As announced in our blog post, "Python Development at Slack", we're dropping support for older Python versions. As mentioned in #603 our CI can no longer guarantee stable support of python 3.6

Testing

Everything still work s with python 3.7

Category

  • slack_bolt.App and/or its core components
  • slack_bolt.async_app.AsyncApp and/or its core components
  • Adapters in slack_bolt.adapter
  • Document pages under /docs
  • Others

Requirements

Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you are agreeing to those rules.

  • I've read and understood the Contributing Guidelines and have done my best effort to follow them.
  • I've read and agree to the Code of Conduct.
  • I've run ./scripts/install_all_and_run_tests.sh after making the changes.

@WilliamBergamin WilliamBergamin added this to the 1.25.0 milestone Sep 8, 2025
@WilliamBergamin WilliamBergamin self-assigned this Sep 8, 2025
@WilliamBergamin WilliamBergamin added semver:minor dependencies Pull requests that update a dependency file python Pull requests that update Python code labels Sep 8, 2025
Comment on lines -35 to -47
if sys.version_info.major == 3 and sys.version_info.minor <= 6:
# NOTE: Unfortunately, copy.deepcopy doesn't work in Python 3.6.5.
# --------------------
# > rv = reductor(4)
# E TypeError: can't pickle _thread.RLock objects
# ../../.pyenv/versions/3.6.10/lib/python3.6/copy.py:169: TypeError
# --------------------
# As a workaround, this operation uses shallow copies in Python 3.6.
# If your code modifies the shared data in threads / async functions, race conditions may arise.
# Please consider upgrading Python major version to 3.7+ if you encounter some issues due to this.
return copy.copy(original)
else:
return copy.deepcopy(original)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This makes the project incompatible with python 3.6, I decided to include it since I think it makes sense to but let me know what you think 🧠

Copy link
Member

Choose a reason for hiding this comment

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

⭐ praise: These are all awesome changes to keep this project healthy! I understand this can cause unsupported versions of Python to error, but I believe recommending upgrades in these cases is reasonable and perhaps we even encourage?

@codecov
Copy link

codecov bot commented Sep 8, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
⚠️ Please upload report for BASE (main@9e0b3ed). Learn more about missing BASE report.
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #1359   +/-   ##
=======================================
  Coverage        ?   91.00%           
=======================================
  Files           ?      222           
  Lines           ?     7512           
  Branches        ?        0           
=======================================
  Hits            ?     6836           
  Misses          ?      676           
  Partials        ?        0           

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

Copy link
Member

@zimeg zimeg left a comment

Choose a reason for hiding this comment

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

@WilliamBergamin LGTM! And excellent writeup on our support schedule I think.

Huge fan of the special cases that are no longer needed after this PR. Please do feel free to merge it when the time is right 🚢 💨

Comment on lines -35 to -47
if sys.version_info.major == 3 and sys.version_info.minor <= 6:
# NOTE: Unfortunately, copy.deepcopy doesn't work in Python 3.6.5.
# --------------------
# > rv = reductor(4)
# E TypeError: can't pickle _thread.RLock objects
# ../../.pyenv/versions/3.6.10/lib/python3.6/copy.py:169: TypeError
# --------------------
# As a workaround, this operation uses shallow copies in Python 3.6.
# If your code modifies the shared data in threads / async functions, race conditions may arise.
# Please consider upgrading Python major version to 3.7+ if you encounter some issues due to this.
return copy.copy(original)
else:
return copy.deepcopy(original)
Copy link
Member

Choose a reason for hiding this comment

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

⭐ praise: These are all awesome changes to keep this project healthy! I understand this can cause unsupported versions of Python to error, but I believe recommending upgrades in these cases is reasonable and perhaps we even encourage?

Comment on lines +28 to +29
3.7.17
3.13.7
Copy link
Member

Choose a reason for hiding this comment

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

🏥 praise: Thanks for keeping notes for maintainers current too!

@WilliamBergamin WilliamBergamin merged commit d6c0c2f into main Sep 9, 2025
14 checks passed
@WilliamBergamin WilliamBergamin deleted the remove-3-6-support branch September 9, 2025 13:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update Python code semver:minor

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants