Skip to content

Added a change-log: new file, v1.0.0_changelog.md - #467

Merged
peterrrock2 merged 8 commits into
mggg:wip/rustworkx-migrationfrom
chief-dweeb:frm_rustworkx_post_alpha
Jul 31, 2026
Merged

Added a change-log: new file, v1.0.0_changelog.md#467
peterrrock2 merged 8 commits into
mggg:wip/rustworkx-migrationfrom
chief-dweeb:frm_rustworkx_post_alpha

Conversation

@chief-dweeb

Copy link
Copy Markdown
Collaborator

Summary

Created a change-log for the RustworkX migration vis-a-vis the currently released GerryChain.

Changes

Added a new file, v1.0.0_changelog.md

Testing

N/A - just documentation

Reviewer Notes

Need feedback on format and on the "Notes" that I have added.

Also need to know where to put this content once it has been approved.

Fred Mueller added 2 commits July 29, 2026 15:01
added, deleted, or changed (classes and functions) in the RustWorkX
migration effort.

@peterrrock2 peterrrock2 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Thank you for putting this together! It looks like this still contains many of the generation artifacts from the diff script, so the next step is to pare this down. Would you mind doing the following:

  • Remove the “Internal functions” section after moving any user-facing changes out of it. Also remove the file-by-file headings, emojis, and raw generated-diff language.
  • Group related entries under subjects such as Graphs, randomness and reproducibility, Markov chains, ReCom, partitions, and optimization.
  • Link to the migration and reproducibility guides for detailed instructions if warranted.
  • Recheck removals, please. The comparison script is not designed to track inheritance, properties, exports, or file moves, so it has falsely flagged a couple of things. For example, Assignment.items(), keys(), and values() remain available through Mapping, and tree.py was reorganized into a package, so the file is gone but gerrychain.tree is still a valid import path.
  • Include constructor changes even though the methods are named init. In particular, the MarkovChain, optimizer, constraint, election, and tally constructor changes are public API changes.

Here is a super short example that should give you a better idea of what I mean:

Added

Markov chains

  • Added incremental configuration through add_constraint(),
    add_updater(), and related methods.

Graphs

  • Added methods for converting between GerryChain, NetworkX, and
    RustworkX graphs.
  • Added node_data() and edge_data() for accessing graph attributes
    (note: this replaces NetworkX-style indexed access).

ReCom proposals

  • Added ready-made proposal builders under the ReCom namespace.
  • Added support for multi-member ReCom.

Changed

  • Graph no longer subclasses networkx.Graph. Node and edge data
    access has changed. See the v1.0 migration guide.
  • GerryChain now uses independent random number generators configured
    through rng=. See the reproducibility guide.

I'll finalize the "Deprecated" and "Removed" sections after the compatibility shims are in.

As for where to put this, let's rename this file to "CHANGELOG.md" and leave it at the repo root. We should be able to expose it in the documentation navigation so that we do not need to maintain two copies.

@chief-dweeb

chief-dweeb commented Jul 30, 2026 via email

Copy link
Copy Markdown
Collaborator Author

@chief-dweeb

Copy link
Copy Markdown
Collaborator Author

OK - I have taken a second pass. My guess is that it is still not quite what you want, but hopefully it is much closer.

Work left to be done:

  • Add links to the migration guide and the user guide (I don't know what URLs to use)
  • Remove everything that should just GO... There is a line in the file saying to delete everything after that point once you (Peter) say to do so.
  • Fix whatever else you want me to fix.

@chief-dweeb

Copy link
Copy Markdown
Collaborator Author

Oh - I pushed the changes so you should see them.

Also - on the TODO list - I don't know where to put this once it is finished.

@peterrrock2 peterrrock2 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This is very close to ready. Responses to a couple of your questions:

... who is the audience? Is it the same audience as the migration guide or is it for gerrychain developers? That is, users vs contributors?

The migration guide is for normal users, and the CHANGELOG will be targeting "super" users.

What level of detail do you want? For instance do you want changes in parameters and parameter names or is that too detailed?

This CHANGELOG should be thorough, but terse. Users should be able to ctrl+f to find information, but the prose should be limited to only what is strictly necessary to understand the change. So, sentence fragments are fine so long as the information is there.

Also - on the TODO list - I don't know where to put this once it is finished.

I think that I have answered that in this comment https://github.com/mggg/GerryChain/pull/467/changes#r3687113591

Comment thread gerrychain/graph/__init__.py Outdated
Comment thread gerrychain/graph/__init__.py Outdated
Comment thread v1.0.0_changelog.md

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

There are a lot of changes to the public signatures, and they might be easiest to organize this in the following way:

Renamed parameters

Parameters accepting functions now generally use the _fn suffix:

  • proposalproposal_fn
    • MarkovChain
    • SingleMetricOptimizer
    • Gingleator

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I started down the path of documenting every place where a parameter name was changed to end in "_fn" and then realized that I was violating the "terse" change-log goal.

This is where I stopped:

* proposal → proposal_fn
    * MarkovChain
    * SingleMetricOptimizer
    * Gingleator
* ??? → acceptance_fn
    * MarkovChain
    * SingleMetricOptimizer.short_burts()
    * ???
* ??? → value_fn
    * Bounds
* ??? → score_fn
    * Gingleator
    * SingleMetricOptimizer
* ??? → optimization_metric_fn
    * SingleMetricOptimizer
* ??? → beta_fn
    * SingleMetricOptimizer.simulated_annealing()
* ??? → container_fn
    * assignmewnt.level_sets()---

I then shifted to just showing one example with the assumption that any code that used the old named parameter would be flagged, and users could easily just say: OK - try adding an "_fn" to the name...

However, if you really want the entire list, I can do that...

Renamed parameters that accept functions

  • Parameters accepting functions now generally have names that use the _fn suffix:

    This is only an issue for function calls using named parameters.

    An example of this is the renaming of "proposal" to "proposal_fn" in the constructor for a MarkovChain object:

    Old:

    my_chain = MarkovChain(
        proposal = my_proposal,
        ...
    )
    

    New:

    my_chain = MarkovChain(
        proposal_fn = my_proposal,
        ...
    )
    

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

With the deprecation shims in place, and the minimality of the change (post-fixing _fn), this is probably sufficient. I'll handle the emails of anyone who is confused

Comment thread v1.0.0_changelog.md Outdated
Comment thread v1.0.0_changelog.md
Comment thread v1.0.0_changelog.md Outdated
Comment thread v1.0.0_changelog.md Outdated
Comment thread v1.0.0_changelog.md Outdated
#### ?

# DELETE EVERYTHING BELOW HERE
After checking with Peter

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Good to go after addressing above comments.

Comment thread v1.0.0_changelog.md

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Can we change this file name to "CHANGELOG.md". When that is finished, we can add it to the documentation by

  1. Creating a file called "docs/topics/CONTRIBUTING.md" and ad: this to it:

```{include} ../../CHANGELOG.md
```

  1. In docs/index.md, we should update the format to look like

```{toctree}
:hidden:
:caption: Topics
:maxdepth: 1

topics/v1p0p0_migration_guide
topics/reproducibility
topics/tools
```

```{toctree}
:hidden:
:caption: Help and Project
:maxdepth: 1

topics/changelog
topics/contributing
topics/reporting
```

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I am inclined to let you do this, because I am not confident that I know how to configure the docs correctly.

On the one hand, how hard could it be, but on the other hand, it looks to be trivial for someone who knows how to do it, so why take the chance of screwing up?

So, I am planning to leave the current file as-is, and let you rename it in git and put it where you want and then update the docs tables of contents, etc.

Also TBD is to add the actual links in the change-log to other documentation. I have flagged each place where a link is needed with my standard: frm: TODO: prefix.

In short, I am assuming that it would take you longer to explain to me what I need to do than it would take you to just do it. If that is not correct, then just tell me to not be a scaredy-cat and to just do it...

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

That's no problem; I'm happy to do all of this.

@chief-dweeb

chief-dweeb commented Jul 31, 2026 via email

Copy link
Copy Markdown
Collaborator Author

chief-dweeb and others added 4 commits July 31, 2026 10:29
Co-authored-by: Peter <27579114+peterrrock2@users.noreply.github.com>
Merge remote-tracking branch 'refs/remotes/origin/frm_rustworkx_post_alpha' into frm_rustworkx_post_alpha

@chief-dweeb chief-dweeb left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Tag you're it (again)...

As stated in my comments, I have done almost everything you asked for.

I did not list every parameter name change that added "_fn" to the end of a function parameter.

I did not add the links from this documentation to other documentation. I am hoping it will be trivial for you to do that, but if not, send it back my way and I will figure it out.

Comment thread v1.0.0_changelog.md
Comment thread v1.0.0_changelog.md Outdated
Comment thread v1.0.0_changelog.md Outdated
Comment thread v1.0.0_changelog.md Outdated
Comment thread v1.0.0_changelog.md

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I am inclined to let you do this, because I am not confident that I know how to configure the docs correctly.

On the one hand, how hard could it be, but on the other hand, it looks to be trivial for someone who knows how to do it, so why take the chance of screwing up?

So, I am planning to leave the current file as-is, and let you rename it in git and put it where you want and then update the docs tables of contents, etc.

Also TBD is to add the actual links in the change-log to other documentation. I have flagged each place where a link is needed with my standard: frm: TODO: prefix.

In short, I am assuming that it would take you longer to explain to me what I need to do than it would take you to just do it. If that is not correct, then just tell me to not be a scaredy-cat and to just do it...

Comment thread v1.0.0_changelog.md

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

I started down the path of documenting every place where a parameter name was changed to end in "_fn" and then realized that I was violating the "terse" change-log goal.

This is where I stopped:

* proposal → proposal_fn
    * MarkovChain
    * SingleMetricOptimizer
    * Gingleator
* ??? → acceptance_fn
    * MarkovChain
    * SingleMetricOptimizer.short_burts()
    * ???
* ??? → value_fn
    * Bounds
* ??? → score_fn
    * Gingleator
    * SingleMetricOptimizer
* ??? → optimization_metric_fn
    * SingleMetricOptimizer
* ??? → beta_fn
    * SingleMetricOptimizer.simulated_annealing()
* ??? → container_fn
    * assignmewnt.level_sets()---

I then shifted to just showing one example with the assumption that any code that used the old named parameter would be flagged, and users could easily just say: OK - try adding an "_fn" to the name...

However, if you really want the entire list, I can do that...

Renamed parameters that accept functions

  • Parameters accepting functions now generally have names that use the _fn suffix:

    This is only an issue for function calls using named parameters.

    An example of this is the renaming of "proposal" to "proposal_fn" in the constructor for a MarkovChain object:

    Old:

    my_chain = MarkovChain(
        proposal = my_proposal,
        ...
    )
    

    New:

    my_chain = MarkovChain(
        proposal_fn = my_proposal,
        ...
    )
    

Comment thread v1.0.0_changelog.md

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

That's no problem; I'm happy to do all of this.

Comment thread v1.0.0_changelog.md

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

With the deprecation shims in place, and the minimality of the change (post-fixing _fn), this is probably sufficient. I'll handle the emails of anyone who is confused

@peterrrock2
peterrrock2 merged commit b20aae2 into mggg:wip/rustworkx-migration Jul 31, 2026
1 check passed
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.

2 participants