diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d69488f3a9..5d132a622b 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -42,7 +42,7 @@ jobs: python3.exe -m pip wheel . if(!$?) { Exit $LASTEXITCODE } - python3.exe -m pip install openPMD_api-0.16.0-cp39-cp39-win_amd64.whl + python3.exe -m pip install openPMD_api-0.17.0.dev0-cp39-cp39-win_amd64.whl if(!$?) { Exit $LASTEXITCODE } python3.exe -c "import openpmd_api as api; print(api.variants)" diff --git a/CITATION.cff b/CITATION.cff index b3bb13c8b0..9504dca156 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -37,7 +37,7 @@ contact: orcid: https://orcid.org/0000-0003-1943-7141 email: axelhuebl@lbl.gov title: "openPMD-api: C++ & Python API for Scientific I/O with openPMD" -version: 0.16.0 +version: 0.17.0-dev repository-code: https://github.com/openPMD/openPMD-api doi: 10.14278/rodare.27 license: LGPL-3.0-or-later diff --git a/CMakeLists.txt b/CMakeLists.txt index a0cc161f4a..fc5d6d5de5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ # cmake_minimum_required(VERSION 3.22.0) -project(openPMD VERSION 0.16.0) # LANGUAGES CXX +project(openPMD VERSION 0.17.0) # LANGUAGES CXX # the openPMD "markup"/"schema" standard version set(openPMD_STANDARD_VERSION 1.1.0) diff --git a/README.md b/README.md index f55bfac308..79dc6f1714 100644 --- a/README.md +++ b/README.md @@ -304,7 +304,7 @@ export CMAKE_PREFIX_PATH=$HOME/somepath:$CMAKE_PREFIX_PATH Use the following lines in your project's `CMakeLists.txt`: ```cmake # supports: COMPONENTS MPI NOMPI HDF5 ADIOS2 -find_package(openPMD 0.16.0 CONFIG) +find_package(openPMD 0.17.0 CONFIG) if(openPMD_FOUND) target_link_libraries(YourTarget PRIVATE openPMD::openPMD) @@ -332,7 +332,7 @@ set(openPMD_INSTALL OFF) # or instead use: set(openPMD_USE_PYTHON OFF) FetchContent_Declare(openPMD GIT_REPOSITORY "https://github.com/openPMD/openPMD-api.git" - GIT_TAG "0.16.0") + GIT_TAG "0.17.0") FetchContent_MakeAvailable(openPMD) ``` diff --git a/docs/source/conf.py b/docs/source/conf.py index 6a4cecf028..af1253a139 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -86,9 +86,9 @@ # built documents. # # The short X.Y version. -version = u'0.16.0' +version = u'0.17.0' # The full version, including alpha/beta/rc tags. -release = u'0.16.0' +release = u'0.17.0-dev' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/source/dev/linking.rst b/docs/source/dev/linking.rst index 191612f541..033f813839 100644 --- a/docs/source/dev/linking.rst +++ b/docs/source/dev/linking.rst @@ -23,7 +23,7 @@ Use the following lines in your project's ``CMakeLists.txt``: .. code-block:: cmake # supports: COMPONENTS MPI NOMPI HDF5 ADIOS2 - find_package(openPMD 0.16.0 CONFIG) + find_package(openPMD 0.17.0 CONFIG) if(openPMD_FOUND) target_link_libraries(YourTarget PRIVATE openPMD::openPMD) @@ -53,7 +53,7 @@ Just replace the ``add_subdirectory`` call with: set(openPMD_USE_PYTHON OFF) FetchContent_Declare(openPMD GIT_REPOSITORY "https://github.com/openPMD/openPMD-api.git" - GIT_TAG "0.16.0") + GIT_TAG "0.17.0") FetchContent_MakeAvailable(openPMD) diff --git a/docs/source/index.rst b/docs/source/index.rst index 5939b61965..db2bbc3002 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -44,7 +44,7 @@ openPMD-api version supported openPMD standard versions ======================== =================================== ``2.0.0+`` ``2.0.0+`` (not released yet) ``1.0.0+`` ``1.0.1-1.1.0`` (not released yet) -``0.13.1-0.16.0`` (beta) ``1.0.0-1.1.0`` +``0.13.1-0.17.0`` (beta) ``1.0.0-1.1.0`` ``0.1.0-0.12.0`` (alpha) ``1.0.0-1.1.0`` ======================== =================================== diff --git a/include/openPMD/version.hpp b/include/openPMD/version.hpp index 9f32154d92..bc1de8a5c6 100644 --- a/include/openPMD/version.hpp +++ b/include/openPMD/version.hpp @@ -28,9 +28,9 @@ * @{ */ #define OPENPMDAPI_VERSION_MAJOR 0 -#define OPENPMDAPI_VERSION_MINOR 16 +#define OPENPMDAPI_VERSION_MINOR 17 #define OPENPMDAPI_VERSION_PATCH 0 -#define OPENPMDAPI_VERSION_LABEL "" +#define OPENPMDAPI_VERSION_LABEL "dev" /** @} */ /** maximum supported version of the openPMD standard (read & write, diff --git a/new_version.py b/new_version.py index 59f2e4e49d..a261c99add 100755 --- a/new_version.py +++ b/new_version.py @@ -14,13 +14,11 @@ # Maintainer Inputs ########################################################### -print( - """Hi there, this is an openPMD maintainer tool to update the source +print("""Hi there, this is an openPMD maintainer tool to update the source code of openPMD-api to a new version. For it to work, you need write access on the source directory and you should be working in a clean git branch without ongoing -rebase/merge/conflict resolves and without unstaged changes.""" -) +rebase/merge/conflict resolves and without unstaged changes.""") # check source dir # REPO_DIR = Path(__file__).parent.parent.parent.absolute() @@ -40,6 +38,7 @@ VERSION_STR = f"{MAJOR}.{MINOR}.{PATCH}" VERSION_STR_SUFFIX = VERSION_STR + (f"-{SUFFIX}" if SUFFIX else "") +VERSION_STR_SUFFIX_WITH_DOT = VERSION_STR + (f".{SUFFIX}" if SUFFIX else "") print() print(f"Your new version is: {VERSION_STR_SUFFIX}") @@ -51,20 +50,41 @@ for line in f: match = re.search(r"find_package.*openPMD *([^ ]*) *CONFIG\).*", line) if match: - OLD_VERSION_STR = match.group(1) + OLD_VERSION_STR_README = match.group(1) + break + +with open(str(REPO_DIR.joinpath("CMakeLists.txt")), encoding="utf-8") as f: + for line in f: + match = re.search(r"project\(openPMD *VERSION *(.*)\)", line) + if match: + OLD_VERSION_STR_CMAKE = match.group(1) break +OLD_VERSION_TAG = "" +with open(str(REPO_DIR.joinpath("include/openPMD/version.hpp")), + encoding="utf-8") as f: + for line in f: + match = re.search(r'#define OPENPMDAPI_VERSION_LABEL "([^"]+)"', line) + if match: + OLD_VERSION_TAG = match.group(1) + break + +OLD_VERSION_SUFFIX = f"(-{OLD_VERSION_TAG})?" if OLD_VERSION_TAG else "" +# The order of the alternatives is important, since the Regex parser +# should greedily include the old version suffix +OLD_VERSION_STR = \ + f"({re.escape(OLD_VERSION_STR_CMAKE)}{OLD_VERSION_SUFFIX})" + \ + f"|({re.escape(OLD_VERSION_STR_README)})" + print(f"The old version is: {OLD_VERSION_STR}") print() - REPLY = input("Is this information correct? Will now start updating! [y/N] ") print() if REPLY not in ["Y", "y", ""]: print("You did not confirm with 'y', aborting.") sys.exit(1) - # Ask for new ################################################################# print("""We will now run a few sed commands on your source directory.\n""") @@ -86,18 +106,56 @@ f.write(cmakelists_content) -def generic_replace(filename): +def generic_replace(filename, previous, after): filename = str(REPO_DIR.joinpath(filename)) with open(filename, encoding="utf-8") as f: content = f.read() - content = re.sub(re.escape(OLD_VERSION_STR), VERSION_STR, content) + content = re.sub(previous, after, content, flags=re.MULTILINE) with open(filename, "w", encoding="utf-8") as f: f.write(content) -for file in ["docs/source/dev/linking.rst", "README.md"]: - generic_replace(file) +for file in [ + "docs/source/dev/linking.rst", + "README.md", +]: + generic_replace(file, previous=OLD_VERSION_STR, after=VERSION_STR) + +for file in ["CITATION.cff", "test/SerialIOTest.cpp"]: + generic_replace(file, previous=OLD_VERSION_STR, after=VERSION_STR_SUFFIX) + +generic_replace( + "docs/source/index.rst", + previous=r"``0.13.1-[^`]*``", + after=f"``0.13.1-{VERSION_STR}``", +) +setup_py_path = str(REPO_DIR.joinpath("setup.py")) +with open(setup_py_path, encoding="utf-8") as f: + for line in f: + match = re.search(r"version='([^']+)',", line) + if match: + PREVIOUS_PIP_VERSION = match.group(1) + break +generic_replace("setup.py", + previous=PREVIOUS_PIP_VERSION, + after=VERSION_STR_SUFFIX_WITH_DOT) +generic_replace( + ".github/workflows/windows.yml", + previous=f"{PREVIOUS_PIP_VERSION}0?", + after=(f"{VERSION_STR_SUFFIX_WITH_DOT}0" + if SUFFIX else VERSION_STR_SUFFIX_WITH_DOT), +) +generic_replace( + "docs/source/conf.py", + previous=r"^version.*=.*", + after=f"version = u'{VERSION_STR}'", +) +generic_replace( + "docs/source/conf.py", + previous=r"^release.*=.*", + after=f"release = u'{VERSION_STR_SUFFIX}'", +) version_hpp_path = str(REPO_DIR.joinpath("include/openPMD/version.hpp")) with open(version_hpp_path, encoding="utf-8") as f: @@ -122,8 +180,6 @@ def replace(key, value): # Epilogue #################################################################### -print( - """Done. Please check your source, e.g. via +print("""Done. Please check your source, e.g. via git diff -now and commit the changes if no errors occurred.""" -) +now and commit the changes if no errors occurred.""") diff --git a/setup.py b/setup.py index ac0d86fcb7..1ef958e87d 100644 --- a/setup.py +++ b/setup.py @@ -181,7 +181,7 @@ def build_extension(self, ext): setup( name='openPMD-api', # note PEP-440 syntax: x.y.zaN but x.y.z.devN - version='0.16.0', + version='0.17.0.dev', author='Axel Huebl, Franz Poeschel, Fabian Koller, Junmin Gu', author_email='axelhuebl@lbl.gov, f.poeschel@hzdr.de', maintainer='Axel Huebl', diff --git a/test/SerialIOTest.cpp b/test/SerialIOTest.cpp index f55c5ec235..b21e459270 100644 --- a/test/SerialIOTest.cpp +++ b/test/SerialIOTest.cpp @@ -6363,7 +6363,7 @@ void adios2_bp5_no_steps(bool usesteps) IO.DefineAttribute("/openPMD", std::string("1.1.0")); IO.DefineAttribute("/openPMDextension", uint32_t(0)); IO.DefineAttribute("/software", std::string("openPMD-api")); - IO.DefineAttribute("/softwareVersion", std::string("0.16.0")); + IO.DefineAttribute("/softwareVersion", std::string("0.17.0-dev")); IO.DefineAttribute("/data/0/dt", double(1)); IO.DefineAttribute(