Initial release of mepo 2
This is a major release of mepo
that includes a number of changes to the codebase and the way mepo
is used.
The most significant change is the conversion of mepo
to a Python project. This change was made to improve the maintainability of the codebase and to make it easier to add new features in the future. The conversion to a Python project also allows for better integration with other Python tools and libraries. See this commit message for more information.
Internal State Change
This major version also introduces internal changes to mepo
that end users might encounter. The main change is moving from a pickle format to a json format for the internal state of mepo
. This change was made to improve the readability and extensibility of the state file.
For example, if a user has an existing clone of a mepo
repository that was created with mepo
version 1, when they run with mepo
version 2, they will see a message like:
> mepo status
Checking status...
Detected mepo1 style state
Run <mepo update-state> to permanently convert to mepo2 style
GEOSfvdycore | (b) main
env | (t) v4.29.0 (DH)
cmake | (t) v3.45.1 (DH)
...
As the message says, the user can run mepo update-state
to convert the state to mepo2 style (i.e., from pickle to json). Note that this is a one-way change!
macOS multiprocessing issue
If you have a mepo1 style state and you are on macOS, you may encounter an issue when running mepo status
or mepo restore-state
. For example:
> mepo status
Checking status...
Detected mepo1 style state
Run <mepo update-state> to permanently convert to mepo2 style
Process SpawnPoolWorker-2:
Traceback (most recent call last):
Process SpawnPoolWorker-5:
Process SpawnPoolWorker-1:
Traceback (most recent call last):
Process SpawnPoolWorker-3:
Traceback (most recent call last):
File "/Users/mathomp4/.homebrew/brew/Cellar/[email protected]/3.12.4/Frameworks/Python.framework/Versions/3.12/lib/python3.12/multiprocessing/process.py", line 314, in _bootstrap
self.run()
...
This seems to be a macOS issue with Python multiprocessing. The solution is to run mepo update-state
to convert the state to mepo2 style. Then all works as expected:
> mepo update-state
Detected mepo1 style state
Run <mepo update-state> to permanently convert to mepo2 style
Converted mepo1 state to mepo2
> mepo status
Checking status...
GEOSfvdycore | (b) main
env | (t) v4.29.0 (DH)
cmake | (t) v3.45.1 (DH)
ecbuild | (t) geos/v1.3.0 (DH)
GMAO_Shared | (t) v1.9.7 (DH)
GEOS_Util | (t) v2.0.8 (DH)
...
Missing features
Note that at the moment the mepo completion scripts and mepo-cd
scripts are not installed by default. This will be addressed in a future release.
From CHANGELOG.md
-
Added
pyproject.toml
to aid withpip
installation. -
Engineering
-- Formatting with Black
-- Linting with Pylint
-- Dependency management and packaging with Rye -
Added tests to cover more
mepo
commands -
Add new command
update-state
to permanently convert mepo1 style state to mepo2
Changed
-
Converted
mepo
to a Python project via the following renaming
-- Addedsrc/mepo/__init__.py
-- Renamedmepo.d
->src/mepo
-- Renamedmepo.d/utest
->tests
-- Renameddoc
-->docs
-- Amepo
config file is now called amepo
registry
-- More code reorganization -
Helper script
mepo
, used for development, moved to thebin
directory. -
Added README for
docs/make_md_docs.py
script -
State: pickle format (mepo1 style) to json format (mepo2 style)
-- If mepo1 style state is detected, print warning and suggest runningmepo update-state
What's Changed
- Make mepo a pip-installable Python project by @pchakraborty in #269
- Fix small typo by @mathomp4 in #271
- Patch for reading mepo1 state by @pchakraborty in #279
- Python package with expanded testing by @pchakraborty in #278
- Make doc generation work again by @pchakraborty in #286
- Switch from Poetry to Rye for dependency management and packaging by @pchakraborty in #290
- Some engineering by @pchakraborty in #292
- Fixed a bug in mepo state creation during 'mepo update-state' by @pchakraborty in #295
- Make mdutils a dev-dependency instead of a dependency by @pchakraborty in #294
- A bug fix and '--serial' option for status and restore-state commands by @pchakraborty in #296
- Version 2.0.0rc4 by @pchakraborty in #297
- Add docs README, update main README by @mathomp4 in #272
- Ready to release 2.0.0 by @pchakraborty in #298
- Merge develop into main, for release (2.0.0) by @pchakraborty in #300
- Add brew tap installation instructions by @mathomp4 in #302
Full Changelog: v1.52.0...v2.0.0