Skip to content

Remove support for IronPython 2.7 - #28

Open
gonzalocasas wants to merge 1 commit into
mainfrom
chore/remove-ironpython
Open

gonzalocasas wants to merge 1 commit into
mainfrom
chore/remove-ironpython

Conversation

@gonzalocasas

Copy link
Copy Markdown
Contributor

IronPython 2.7 has been unmaintained for years and Rhino 8 ships CPython, so the compatibility layer no longer buys anything.

Removed

  • The ironpython CI workflow and tests/ipy_test_runner.py it drove.
  • compas_rrc.__install — the plugin only served python -m compas_rhino.install for Rhino 6/7. compas_fab and compas_eve both dropped their equivalents; Rhino 8 installs with pip.
  • The IronPython Grasshopper componentizer wiring in tasks.py and release.yml. It pointed at src/compas_rrc/ghpython/components, which does not exist in this repo, so it was dead config either way.
  • Python 2 era idioms IronPython required: from __future__ imports, explicit object bases, two-argument super().
  • [bdist_wheel] universal = 1, meaningless for a Python 3 only package.

Changed

  • Python floor is now 3.9 (matching compas_fab), declared via python_requires.
  • CI matrices move from 3.8–3.10 to 3.9–3.13.

Tests pass locally against compas_fab 1.1.4 / compas 2.15.1.

Part of a series of maintenance PRs. Standalone — no dependency on the others.

🤖 Generated with Claude Code

IronPython 2.7 has been unmaintained for years and Rhino 8 ships CPython,
so the compatibility layer no longer buys anything. This drops:

* the `ironpython` CI workflow and the `ipy_test_runner` it drove;
* the `compas_rrc.__install` plugin, which only served
  `python -m compas_rhino.install` for Rhino 6/7 (compas_fab dropped its
  equivalent for the same reason) -- Rhino 8 installs with pip;
* the IronPython Grasshopper componentizer wiring in `tasks.py` and
  `release.yml`, which pointed at a `ghpython/components` directory that
  does not exist in this repository;
* the Python 2 era idioms IronPython needed: `from __future__` imports,
  explicit `object` bases and two-argument `super()`;
* the universal wheel setting, which is meaningless for a Python 3 only
  package.

The floor moves to Python 3.9, matching compas_fab, and the CI matrices
move to 3.9 through 3.13.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@gonzalocasas
gonzalocasas force-pushed the chore/remove-ironpython branch from 48a0811 to 826cb54 Compare September 4, 2026 18:14
@gonzalocasas

Copy link
Copy Markdown
Contributor Author

Evidence that IronPython support was already non-functional, rather than something this PR is dropping while it still worked:

The windows-ironpython job fails on #27 too, and #27 only touches .gitignore and CHANGELOG.md. The cause is environmental — IronPython 2.7's pip cannot install the current COMPAS sdists any more:

IOError: [Errno 2] Could not find file '...\pip-o6vxz0-build\setup.py'
Command "python setup.py egg_info" failed with error code 1

compas, compas_robots and compas_fab are all pyproject-only now, and IronPython's pip predates PEP 517, so it falls back to setup.py egg_info and finds nothing. The workflow has been red for whatever COMPAS release first dropped setup.py.

This branch has not been deployed

No deployments
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