From a77748693a0c980527282967a68fc5bcfae390d6 Mon Sep 17 00:00:00 2001 From: Chris Bradley Date: Mon, 6 Jan 2025 15:49:53 +0000 Subject: [PATCH 01/13] Fix potential deadlock on full work queue --- src/gribjump/Task.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/gribjump/Task.cc b/src/gribjump/Task.cc index 54bc4fb..49346e5 100644 --- a/src/gribjump/Task.cc +++ b/src/gribjump/Task.cc @@ -114,9 +114,12 @@ void TaskGroup::cancelTasks() { } void TaskGroup::enqueueTask(Task* task) { - std::lock_guard lock(m_); - tasks_.push_back(std::unique_ptr(task)); // TaskGroup takes ownership of its tasks - WorkQueue::instance().push(task); + { + std::lock_guard lock(m_); + tasks_.push_back(std::unique_ptr(task)); // TaskGroup takes ownership of its tasks + } + + WorkQueue::instance().push(task); /// @note Can block, so release the lock first LOG_DEBUG_LIB(LibGribJump) << "Queued task " << tasks_.size() << std::endl; } From 042bd595fc725bcae43f3bbad19fd8515bf5552f Mon Sep 17 00:00:00 2001 From: Chris Bradley Date: Mon, 6 Jan 2025 15:50:18 +0000 Subject: [PATCH 02/13] Vector reserve --- src/gribjump/info/InfoExtractor.cc | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gribjump/info/InfoExtractor.cc b/src/gribjump/info/InfoExtractor.cc index 45bf735..922b5e0 100644 --- a/src/gribjump/info/InfoExtractor.cc +++ b/src/gribjump/info/InfoExtractor.cc @@ -53,6 +53,7 @@ std::vector> InfoExtractor::extract(const eckit::PathN eckit::FileHandle fh(path); std::vector> infos; + infos.reserve(offsets.size()); for (size_t i = 0; i < offsets.size(); i++) { fh.openForRead(); From d883a49cc90414f850984f6182993806019c9783 Mon Sep 17 00:00:00 2001 From: Chris Bradley Date: Mon, 6 Jan 2025 15:52:07 +0000 Subject: [PATCH 03/13] Use fdb callback interface --- src/gribjump/FDBPlugin.cc | 4 ++-- src/gribjump/FDBPlugin.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gribjump/FDBPlugin.cc b/src/gribjump/FDBPlugin.cc index bff940b..33555ba 100644 --- a/src/gribjump/FDBPlugin.cc +++ b/src/gribjump/FDBPlugin.cc @@ -35,7 +35,7 @@ FDBPlugin& FDBPlugin::instance() { FDBPlugin::FDBPlugin() { // NB: Can't access eckit::Resource outside the callback because eckit::main has not finished initialising - fdb5::LibFdb5::instance().registerConstructorCallback([](fdb5::FDB& fdb) { + fdb5::LibFdb5::instance().registerConstructorCallback([](fdb5::CallbackInterface& fdb) { static bool enableGribjump = eckit::Resource("fdbEnableGribjump;$FDB_ENABLE_GRIBJUMP", false); static bool disableGribjump = eckit::Resource("fdbDisableGribjump;$FDB_DISABLE_GRIBJUMP", false); // Emergency off-switch if (enableGribjump && !disableGribjump) { @@ -44,7 +44,7 @@ FDBPlugin::FDBPlugin() { }); } -void FDBPlugin::addFDB(fdb5::FDB& fdb) { +void FDBPlugin::addFDB(fdb5::CallbackInterface& fdb) { parseConfig(); std::lock_guard lock(mutex_); diff --git a/src/gribjump/FDBPlugin.h b/src/gribjump/FDBPlugin.h index 393370d..77429ba 100644 --- a/src/gribjump/FDBPlugin.h +++ b/src/gribjump/FDBPlugin.h @@ -23,7 +23,7 @@ class FDBPlugin { public: static FDBPlugin& instance(); - void addFDB(fdb5::FDB& fdb); + void addFDB(fdb5::CallbackInterface& fdb); private: From 64348b09ab7422d9f7f39ab05f8fe6dc7455a2a0 Mon Sep 17 00:00:00 2001 From: Chris Bradley Date: Thu, 9 Jan 2025 17:22:47 +0000 Subject: [PATCH 04/13] Check if file exists in dump-info tool --- src/tools/gribjump-dump-info.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/tools/gribjump-dump-info.cc b/src/tools/gribjump-dump-info.cc index 5ef86a1..87804cf 100644 --- a/src/tools/gribjump-dump-info.cc +++ b/src/tools/gribjump-dump-info.cc @@ -39,6 +39,9 @@ void DumpInfo::usage(const std::string &tool) const { void DumpInfo::execute(const eckit::option::CmdArgs &args) { for (size_t i = 0; i < args.count(); i++) { eckit::PathName file(args(i)); + if (!file.exists()) { + throw eckit::UserError("File not found", file); + } IndexFile index = IndexFile(file); index.print(std::cout); } From cc3d32308b54dda65466b29be4ae50e4cae85de9 Mon Sep 17 00:00:00 2001 From: Chris Bradley Date: Tue, 14 Jan 2025 17:15:40 +0000 Subject: [PATCH 05/13] Rename to CallbackRegistry --- src/gribjump/FDBPlugin.cc | 4 ++-- src/gribjump/FDBPlugin.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gribjump/FDBPlugin.cc b/src/gribjump/FDBPlugin.cc index 33555ba..b1d4405 100644 --- a/src/gribjump/FDBPlugin.cc +++ b/src/gribjump/FDBPlugin.cc @@ -35,7 +35,7 @@ FDBPlugin& FDBPlugin::instance() { FDBPlugin::FDBPlugin() { // NB: Can't access eckit::Resource outside the callback because eckit::main has not finished initialising - fdb5::LibFdb5::instance().registerConstructorCallback([](fdb5::CallbackInterface& fdb) { + fdb5::LibFdb5::instance().registerConstructorCallback([](fdb5::CallbackRegistry& fdb) { static bool enableGribjump = eckit::Resource("fdbEnableGribjump;$FDB_ENABLE_GRIBJUMP", false); static bool disableGribjump = eckit::Resource("fdbDisableGribjump;$FDB_DISABLE_GRIBJUMP", false); // Emergency off-switch if (enableGribjump && !disableGribjump) { @@ -44,7 +44,7 @@ FDBPlugin::FDBPlugin() { }); } -void FDBPlugin::addFDB(fdb5::CallbackInterface& fdb) { +void FDBPlugin::addFDB(fdb5::CallbackRegistry& fdb) { parseConfig(); std::lock_guard lock(mutex_); diff --git a/src/gribjump/FDBPlugin.h b/src/gribjump/FDBPlugin.h index 77429ba..7a13ef5 100644 --- a/src/gribjump/FDBPlugin.h +++ b/src/gribjump/FDBPlugin.h @@ -23,7 +23,7 @@ class FDBPlugin { public: static FDBPlugin& instance(); - void addFDB(fdb5::CallbackInterface& fdb); + void addFDB(fdb5::CallbackRegistry& fdb); private: From 1d94546f6479502f8118fbc911e792dc3c303fe8 Mon Sep 17 00:00:00 2001 From: Chris Bradley Date: Mon, 13 Jan 2025 18:16:50 +0000 Subject: [PATCH 06/13] Add status logging for monitoring --- src/gribjump/Task.cc | 32 ++++++++++++++++++++++++++++- src/gribjump/Task.h | 17 ++++++++++++++- src/gribjump/remote/GribJumpUser.cc | 1 + src/gribjump/remote/Request.cc | 19 +++++++++++++++++ src/gribjump/remote/Request.h | 13 ++++++++++++ src/gribjump/remote/WorkQueue.cc | 1 + 6 files changed, 81 insertions(+), 2 deletions(-) diff --git a/src/gribjump/Task.cc b/src/gribjump/Task.cc index 49346e5..2dee08b 100644 --- a/src/gribjump/Task.cc +++ b/src/gribjump/Task.cc @@ -55,11 +55,12 @@ void Task::notifyCancelled() { } void Task::execute() { - // atomically set status to executing, but only if it is currently pending + // atomically set status to executing, but only if it is currently pending (i.e. not cancelled) Status expected = Status::PENDING; if (!status_.compare_exchange_strong(expected, Status::EXECUTING)) { return; } + info(); executeImpl(); notify(); } @@ -85,6 +86,7 @@ void TaskGroup::notify(size_t taskid) { } cv_.notify_one(); + info(); } void TaskGroup::notifyCancelled(size_t taskid) { @@ -92,6 +94,7 @@ void TaskGroup::notifyCancelled(size_t taskid) { nComplete_++; nCancelledTasks_++; cv_.notify_one(); + info(); } void TaskGroup::notifyError(size_t taskid, const std::string& s) { @@ -99,12 +102,17 @@ void TaskGroup::notifyError(size_t taskid, const std::string& s) { errors_.push_back(s); nComplete_++; cv_.notify_one(); + info(); if (cancelOnFirstError) { cancelTasks(); } } +void TaskGroup::info() const { + eckit::Log::status() << nComplete_ << " of " << tasks_.size() << " tasks complete" << std::endl; +} + // Note: This will only affect tasks that have not yet started. Cancelled tasks will call notifyCancelled() when they are executed. // NB: We do not lock a mutex as this will be called from notifyError() void TaskGroup::cancelTasks() { @@ -227,6 +235,10 @@ void FileExtractionTask::extract() { } } +void FileExtractionTask::info() const { + eckit::Log::status() << "Extract " << extractionItems_.size() << " items from " << fname_ << std::endl; +} + //---------------------------------------------------------------------------------------------------------------------- // Forward the work to a remote server, and wait for the results. @@ -242,6 +254,12 @@ void ForwardExtractionTask::executeImpl(){ remoteGribJump.forwardExtract(filemap_); } +void ForwardExtractionTask::info() const { + eckit::Log::status() << "Forward extract to " << endpoint_ << "nfiles=" << filemap_.size() << std::endl; +} + +//---------------------------------------------------------------------------------------------------------------------- + ForwardScanTask::ForwardScanTask(TaskGroup& taskgroup, const size_t id, eckit::net::Endpoint endpoint, scanmap_t& scanmap, std::atomic& nfields): Task(taskgroup, id), endpoint_(endpoint), @@ -255,6 +273,10 @@ void ForwardScanTask::executeImpl(){ nfields_ += remoteGribJump.forwardScan(scanmap_); } +void ForwardScanTask::info() const { + eckit::Log::status() << "Forward scan to " << endpoint_ << std::endl; +} + //---------------------------------------------------------------------------------------------------------------------- InefficientFileExtractionTask::InefficientFileExtractionTask(TaskGroup& taskgroup, const size_t id, const eckit::PathName& fname, ExtractionItems& extractionItems): FileExtractionTask(taskgroup, id, fname, extractionItems) { @@ -299,6 +321,10 @@ void InefficientFileExtractionTask::extract() { } } +void InefficientFileExtractionTask::info() const { + eckit::Log::status() << "Inefficiently extract " << extractionItems_.size() << " items from " << fname_ << std::endl; +} + //---------------------------------------------------------------------------------------------------------------------- @@ -325,6 +351,10 @@ void FileScanTask::scan() { nfields_ += InfoCache::instance().scan(fname_, offsets_); } +void FileScanTask::info() const { + eckit::Log::status() << "Scan " << offsets_.size() << " offsets in " << fname_ << std::endl; +} + //---------------------------------------------------------------------------------------------------------------------- } // namespace gribjump \ No newline at end of file diff --git a/src/gribjump/Task.h b/src/gribjump/Task.h index 960da5d..13f1948 100644 --- a/src/gribjump/Task.h +++ b/src/gribjump/Task.h @@ -58,11 +58,14 @@ class Task { /// cancels the task. If execute() is called after this, it will return immediately. void cancel(); + /// Write description of task to eckit::Log::status() for monitoring + virtual void info() const = 0; + protected: virtual void executeImpl() = 0; protected: - + TaskGroup& taskGroup_; //< Groups like-tasks to be executed in parallel size_t taskid_; //< Task id within parent request std::atomic status_ = Status::PENDING; @@ -129,6 +132,8 @@ class TaskGroup { return errors_.size(); } + void info() const; + private: void enqueueTask(Task* task); @@ -165,6 +170,8 @@ class FileExtractionTask : public Task { virtual void extract(); + virtual void info() const override; + protected: eckit::PathName fname_; ExtractionItems& extractionItems_; @@ -183,6 +190,8 @@ class InefficientFileExtractionTask : public FileExtractionTask { void extract() override; + virtual void info() const override; + }; //---------------------------------------------------------------------------------------------------------------------- @@ -194,6 +203,8 @@ class ForwardExtractionTask : public Task { void executeImpl() override; + virtual void info() const override; + private: eckit::net::Endpoint endpoint_; filemap_t& filemap_; @@ -207,6 +218,8 @@ class ForwardScanTask : public Task { void executeImpl() override; + virtual void info() const override; + private: eckit::net::Endpoint endpoint_; scanmap_t& scanmap_; @@ -226,6 +239,8 @@ class FileScanTask : public Task { void scan(); + virtual void info() const override; + private: eckit::PathName fname_; std::vector offsets_; diff --git a/src/gribjump/remote/GribJumpUser.cc b/src/gribjump/remote/GribJumpUser.cc index 85fca7e..43c585e 100644 --- a/src/gribjump/remote/GribJumpUser.cc +++ b/src/gribjump/remote/GribJumpUser.cc @@ -98,6 +98,7 @@ void GribJumpUser::processRequest(eckit::Stream& s) { RequestType request(s); MetricsManager::instance().set("elapsed_receive", timer.elapsed()); timer.reset("Request received"); + request.info(); request.execute(); MetricsManager::instance().set("elapsed_execute", timer.elapsed()); diff --git a/src/gribjump/remote/Request.cc b/src/gribjump/remote/Request.cc index 3477fb1..bef006a 100644 --- a/src/gribjump/remote/Request.cc +++ b/src/gribjump/remote/Request.cc @@ -66,6 +66,10 @@ void ScanRequest::replyToClient() { client_ << nFields_; } +void ScanRequest::info() const { + eckit::Log::status() << "New ScanRequest: nRequests=" << requests_.size() << std::endl; +} + //---------------------------------------------------------------------------------------------------------------------- @@ -127,6 +131,10 @@ void ExtractRequest::replyToClient() { LOG_DEBUG_LIB(LibGribJump) << "Sent " << nRequests << " results to client" << std::endl; } +void ExtractRequest::info() const { + eckit::Log::status() << "New ExtractRequest: nRequests=" << requests_.size() << std::endl; +} + //---------------------------------------------------------------------------------------------------------------------- ForwardedExtractRequest::ForwardedExtractRequest(eckit::Stream& stream) : Request(stream) { @@ -178,6 +186,9 @@ void ForwardedExtractRequest::replyToClient() { } } +void ForwardedExtractRequest::info() const { + eckit::Log::status() << "New ForwardedExtractRequest: nItems=" << items_.size() << std::endl; +} //---------------------------------------------------------------------------------------------------------------------- @@ -210,6 +221,10 @@ void ForwardedScanRequest::execute() { void ForwardedScanRequest::replyToClient() { client_ << nfields_; } + +void ForwardedScanRequest::info() const { + eckit::Log::status() << "New ForwardedScanRequest: nfiles=" << scanmap_.size() << std::endl; +} //---------------------------------------------------------------------------------------------------------------------- AxesRequest::AxesRequest(eckit::Stream& stream) : Request(stream) { @@ -246,6 +261,10 @@ void AxesRequest::replyToClient() { } } +void AxesRequest::info() const { + eckit::Log::status() << "New AxesRequest: " << request_ << ", level=" << level_ << std::endl; +} + //---------------------------------------------------------------------------------------------------------------------- } // namespace gribjump diff --git a/src/gribjump/remote/Request.h b/src/gribjump/remote/Request.h index a8e8b4b..0a98a3c 100644 --- a/src/gribjump/remote/Request.h +++ b/src/gribjump/remote/Request.h @@ -42,6 +42,9 @@ class Request { void reportErrors(); + /// Print information about the request to status(), for monitoring + virtual void info() const = 0; + protected: // members eckit::Stream& client_; @@ -63,6 +66,8 @@ class ScanRequest : public Request { void replyToClient() override; + void info() const override; + private: std::vector requests_; @@ -85,6 +90,8 @@ class ExtractRequest : public Request { void replyToClient() override; + void info() const override; + private: std::vector requests_; @@ -105,6 +112,8 @@ class ForwardedExtractRequest : public Request { void replyToClient() override; + void info() const override; + private: std::vector> items_; @@ -127,6 +136,8 @@ class ForwardedScanRequest : public Request { void replyToClient() override; + void info() const override; + private: std::vector> items_; @@ -149,6 +160,8 @@ class AxesRequest : public Request { void replyToClient() override; + void info() const override; + private: std::string request_; /// @todo why is this a string? diff --git a/src/gribjump/remote/WorkQueue.cc b/src/gribjump/remote/WorkQueue.cc index f18e24a..51efb2c 100644 --- a/src/gribjump/remote/WorkQueue.cc +++ b/src/gribjump/remote/WorkQueue.cc @@ -43,6 +43,7 @@ WorkQueue::WorkQueue() : queue_(eckit::Resource("$GRIBJUMP_QUEUESIZE;gri // GribJump gj = GribJump(); // one per thread for (;;) { + eckit::Log::status() << "Waiting for job" << std::endl; WorkItem item; if (queue_.pop(item) == -1) { LOG_DEBUG_LIB(LibGribJump) << "Thread " << std::this_thread::get_id() << " stopping (queue closed)" << std::endl; From f619e574d2b8016a533af6ec7930cd07032d9546 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Mon, 16 Dec 2024 13:25:07 +0100 Subject: [PATCH 07/13] Trigger downstream ci for pygribjump --- .github/workflows/ci.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 14cb745..cc2754e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,10 +4,10 @@ on: # Trigger the workflow on push to master or develop, except tag creation push: branches: - - 'master' - - 'develop' + - "master" + - "develop" tags-ignore: - - '**' + - "**" # Trigger the workflow on pull request pull_request: ~ @@ -27,6 +27,7 @@ jobs: uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci.yml@main with: gribjump: ecmwf/gribjump@${{ github.event.pull_request.head.sha || github.sha }} + pygribjump: pygribjump:ecmwf/gribjump@${{ github.event.pull_request.head.sha || github.sha }} codecov_upload: true secrets: inherit @@ -55,6 +56,7 @@ jobs: uses: ecmwf-actions/downstream-ci/.github/workflows/downstream-ci-hpc.yml@main with: gribjump: ecmwf/gribjump@${{ github.event.pull_request.head.sha || github.sha }} + pygribjump: pygribjump:ecmwf/gribjump@${{ github.event.pull_request.head.sha || github.sha }} secrets: inherit # Run CI of private downstream packages on HPC From 7a9c01d480a5396a15f19d776d902dbe7508bbfd Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Mon, 16 Dec 2024 13:40:03 +0100 Subject: [PATCH 08/13] Add ci build config for pygribjump --- .github/ci-config-pygribjump.yml | 11 +++++++++++ .github/ci-hpc-config-pygribjump.yml | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 .github/ci-config-pygribjump.yml create mode 100644 .github/ci-hpc-config-pygribjump.yml diff --git a/.github/ci-config-pygribjump.yml b/.github/ci-config-pygribjump.yml new file mode 100644 index 0000000..c0299f6 --- /dev/null +++ b/.github/ci-config-pygribjump.yml @@ -0,0 +1,11 @@ +cmake_options: -DENABLE_FDB_BUILD_TOOLS=ON +dependencies: | + ecmwf/ecbuild + MathisRosenhauer/libaec@master + ecmwf/eccodes + ecmwf/eckit@develop + ecmwf/metkit + ecmwf/fdb +dependency_branch: develop +parallelism_factor: 8 +self_build: false diff --git a/.github/ci-hpc-config-pygribjump.yml b/.github/ci-hpc-config-pygribjump.yml new file mode 100644 index 0000000..d0eb34c --- /dev/null +++ b/.github/ci-hpc-config-pygribjump.yml @@ -0,0 +1,19 @@ +build: + python: "3.10" + modules: + - ninja + - aec + dependencies: + - ecmwf/ecbuild@develop + - ecmwf/eccodes@develop + - ecmwf/eckit@develop + - ecmwf/metkit@develop + - ecmwf/fdb@develop + - ecmwf/gribjump@develop + dependency_cmake_options: + - "ecmwf/gribjump: '-DENABLE_FDB_BUILD_TOOLS=ON'" + - "ecmwf/fdb: '-DENABLE_LUSTRE=OFF'" + parallel: 64 + env: + - ECCODES_SAMPLES_PATH=$ECCODES_DIR/share/eccodes/samples + - ECCODES_DEFINITION_PATH=$ECCODES_DIR/share/eccodes/definitions From f7dab61b1e111c3dcc7d03955fcb0beac10c3dc2 Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Mon, 20 Jan 2025 14:59:56 +0100 Subject: [PATCH 09/13] Fix fdb dependency cmake options --- .github/ci-config-pygribjump.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ci-config-pygribjump.yml b/.github/ci-config-pygribjump.yml index c0299f6..e923c10 100644 --- a/.github/ci-config-pygribjump.yml +++ b/.github/ci-config-pygribjump.yml @@ -1,4 +1,3 @@ -cmake_options: -DENABLE_FDB_BUILD_TOOLS=ON dependencies: | ecmwf/ecbuild MathisRosenhauer/libaec@master @@ -6,6 +5,8 @@ dependencies: | ecmwf/eckit@develop ecmwf/metkit ecmwf/fdb +dependency_cmake_options: | + ecmwf/fdb: "-DENABLE_FDB_BUILD_TOOLS=ON" dependency_branch: develop parallelism_factor: 8 self_build: false From 8c6a65c9cdd912b0f321009307946cc16c39144c Mon Sep 17 00:00:00 2001 From: Dusan Figala Date: Mon, 20 Jan 2025 15:04:39 +0100 Subject: [PATCH 10/13] Add gribjump as dep for pygribjump --- .github/ci-config-pygribjump.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ci-config-pygribjump.yml b/.github/ci-config-pygribjump.yml index e923c10..27a5deb 100644 --- a/.github/ci-config-pygribjump.yml +++ b/.github/ci-config-pygribjump.yml @@ -5,8 +5,9 @@ dependencies: | ecmwf/eckit@develop ecmwf/metkit ecmwf/fdb + ecmwf/gribjump dependency_cmake_options: | - ecmwf/fdb: "-DENABLE_FDB_BUILD_TOOLS=ON" + ecmwf/gribjump: "-DENABLE_FDB_BUILD_TOOLS=ON" dependency_branch: develop parallelism_factor: 8 self_build: false From f8576fb2a0ee0094a2c961e72885263f9c49a8d2 Mon Sep 17 00:00:00 2001 From: Christopher Bradley Date: Fri, 31 Jan 2025 09:40:51 +0000 Subject: [PATCH 11/13] Update pygribjump versioning --- pygribjump/src/pygribjump/VERSION | 1 - pygribjump/src/pygribjump/_version.py | 4 ++-- pyproject.toml | 5 ++++- 3 files changed, 6 insertions(+), 4 deletions(-) delete mode 120000 pygribjump/src/pygribjump/VERSION diff --git a/pygribjump/src/pygribjump/VERSION b/pygribjump/src/pygribjump/VERSION deleted file mode 120000 index d62dc73..0000000 --- a/pygribjump/src/pygribjump/VERSION +++ /dev/null @@ -1 +0,0 @@ -../../../VERSION \ No newline at end of file diff --git a/pygribjump/src/pygribjump/_version.py b/pygribjump/src/pygribjump/_version.py index 7f8bcdd..b8f87f7 100644 --- a/pygribjump/src/pygribjump/_version.py +++ b/pygribjump/src/pygribjump/_version.py @@ -1,5 +1,5 @@ from pathlib import Path from .pygribjump import * +import importlib.metadata -with open(Path(__file__).parent / "VERSION") as f: - __version__ = f.read().strip() +__version__ = importlib.metadata.version("pygribjump") diff --git a/pyproject.toml b/pyproject.toml index 9618bf1..d4d1bca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,4 +45,7 @@ include-package-data = true zip-safe = false [tool.setuptools.package-data] -"pygribjump" = ["VERSION", "pygribjump/src/pygribjump/gribjump_c.h"] +"pygribjump" = [ + "VERSION", + "gribjump_c.h" +] From 3f4679b14bd2f793ce4b281f470cef346c061c3e Mon Sep 17 00:00:00 2001 From: Chris Bradley Date: Fri, 31 Jan 2025 11:08:54 +0000 Subject: [PATCH 12/13] Update dependency versions --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 65f7283..f251d53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,8 +13,8 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") ### dependencies and options set( PERSISTENT_NAMESPACE "eckit" CACHE INTERNAL "" ) # needed for generating .b files for persistent support -ecbuild_find_package( NAME eckit VERSION 1.25.2 REQUIRED ) -ecbuild_find_package( NAME metkit VERSION 1.5 REQUIRED ) +ecbuild_find_package( NAME eckit VERSION 1.28.3 REQUIRED ) +ecbuild_find_package( NAME metkit VERSION 1.11.22 REQUIRED ) # Set "GRIBJUMP_LOCAL_EXTRACT" to build everything. If it is off, build only minimal clientside functionality. ecbuild_add_option( FEATURE GRIBJUMP_LOCAL_EXTRACT @@ -22,7 +22,7 @@ ecbuild_add_option( FEATURE GRIBJUMP_LOCAL_EXTRACT DESCRIPTION "Build local extraction and serverside functionality") if (HAVE_GRIBJUMP_LOCAL_EXTRACT) - ecbuild_find_package( NAME fdb5 VERSION 5.13.1 REQUIRED ) + ecbuild_find_package( NAME fdb5 VERSION 5.14.0 REQUIRED ) set(GRIBJUMP_HAVE_FDB 1) ecbuild_find_package( NAME eccodes VERSION 2.32.1 REQUIRED ) From d73b494f358666fbce81227e56f12f13bcc57afe Mon Sep 17 00:00:00 2001 From: Chris Bradley Date: Fri, 31 Jan 2025 11:09:17 +0000 Subject: [PATCH 13/13] Bump version 0.9.0 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 6f4eebd..ac39a10 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.8.1 +0.9.0