Repository: conda-forge/staged-recipes
Pull request #30114: Adding SHARPlib_rc package
Author: login: keltonhalbert
Labels: name: staged-recipes
name: review-requested
name: c-cpp
Created: 2025-05-22T18:22:37Z | Merged: 2025-05-23T12:30:42Z

<!--
Thank you very much for putting in this recipe PR!

This repository is very active, so if you need help with a PR, please let the
right people know. There are language-specific teams for reviewing recipes.

| Language        | Name of review team           |
| --------------- | ----------------------------- |
| python          | `@conda-forge/help-python`    |
| python/c hybrid | `@conda-forge/help-python-c`  |
| r               | `@conda-forge/help-r`         |
| java            | `@conda-forge/help-java`      |
| nodejs          | `@conda-forge/help-nodejs`    |
| c/c++           | `@conda-forge/help-c-cpp`     |
| perl            | `@conda-forge/help-perl`      |
| Julia           | `@conda-forge/help-julia`     |
| ruby            | `@conda-forge/help-ruby`      |
| Rust            | `@conda-forge/help-rust`      |
| Go              | `@conda-forge/help-go`        |
| other           | `@conda-forge/staged-recipes` |

Once the PR is ready for review, please mention one of the teams above in a
new comment. i.e. `@conda-forge/help-some-language, ready for review!`
Then, a bot will label the PR as 'review-requested'.

Due to GitHub limitations, first time contributors to conda-forge are unable
to ping conda-forge teams directly, but you can [ask a bot to ping the team][1]
using a special command in a comment on the PR to get the attention of the
`staged-recipes` team. You can also consider asking on our [Zulip chat][2]
if your recipe isn't reviewed promptly.

[1]: https://conda-forge.org/docs/maintainer/infrastructure.html#conda-forge-admin-please-ping-team
[2]: https://conda-forge.zulipchat.com

All apologies in advance if your recipe PR does not receive prompt attention.
This is a high volume repository and the reviewers are volunteers. Review times
vary depending on the number of reviewers on a given language team and may be days
or weeks. We are always looking for more staged-recipe reviewers. If you are
interested in volunteering, please contact a member of @conda-forge/core.
We'd love to have the help!
-->

Checklist
- [x] Title of this PR is meaningful: e.g. "Adding my_nifty_package", not "updated meta.yaml".
- [x] License file is packaged (see [here](https://github.com/conda-forge/staged-recipes/blob/5eddbd7fc9d1502169089da06c3688d9759be978/recipes/example/meta.yaml#L64-L73) for an example).
- [x] Source is from official source.
- [x] Package does not vendor other packages. (If a package uses the source of another package, they should be separate packages or the licenses of all packages need to be packaged).
- [x] If static libraries are linked in, the license of the static library is packaged.
- [x] Package does not ship static libraries. If static libraries are needed, [follow CFEP-18](https://github.com/conda-forge/cfep/blob/main/cfep-18.md).
- [x] Build number is 0.
- [x] A tarball (`url`) rather than a repo (e.g. `git_url`) is used in your recipe (see [here](https://conda-forge.org/docs/maintainer/adding_pkgs.html#build-from-tarballs-not-repos) for more details).
- [x] GitHub users listed in the maintainer section have posted a comment confirming they are willing to be listed there.
- [x] When in trouble, please check our [knowledge base documentation](https://conda-forge.org/docs/maintainer/knowledge_base.html) before pinging a team.



Diff:
diff --git a/recipes/SHARPlib/conda_build_config.yaml b/recipes/SHARPlib/conda_build_config.yaml
new file mode 100644
index 0000000000000..a326bb6765dda
--- /dev/null
+++ b/recipes/SHARPlib/conda_build_config.yaml
@@ -0,0 +1,2 @@
+channel_targets:
+  - conda-forge sharplib_rc
diff --git a/recipes/SHARPlib/meta.yaml b/recipes/SHARPlib/meta.yaml
new file mode 100644
index 0000000000000..726f831bbf043
--- /dev/null
+++ b/recipes/SHARPlib/meta.yaml
@@ -0,0 +1,68 @@
+{% set name = "SHARPlib" %}
+{% set version = "1.0.0rc4" %}
+
+package:
+  name: {{ name|lower }}
+  version: {{ version }}
+
+source:
+  url: https://pypi.org/packages/source/{{ name[0] }}/{{ name }}/sharplib-{{ version }}.tar.gz
+  sha256: 6a791878465c32bfaf95b8a94a00a237e9c6671dad87143a157ef8179ebb4129
+
+build:
+  skip: true  # [py<310]
+  script: {{ PYTHON }} -m pip install . -vv --no-deps --no-build-isolation
+  number: 0
+
+requirements:
+  build:
+    - {{ compiler('cxx') }}
+    - {{ stdlib("c") }}
+    - cmake
+    - make
+  host:
+    - python
+    - scikit-build-core
+    - setuptools_scm
+    - nanobind >=2.0.0
+    - pip
+  run:
+    - python
+    - numpy >=1.23.0
+
+test:
+  source_files:
+    - tests/python
+    - data/test_snds
+  imports:
+    - nwsspc.sharp.calc
+  commands:
+    - pip check
+    - pytest 
+  requires:
+    - pip
+    - pandas
+    - fastparquet
+    - pytest
+
+about:
+  home: https://github.com/keltonhalbert/SHARPlib
+  summary: Sounding and Hodograph Analysis and Research Program Library (SHARPlib) for processing vertical profiles of meteorological/atmospheric sounding data.
+  description: |
+    SHARPlib is a performance optimized library for analyzing data from weather balloons and vertical profiles of atmospheric data from weather models. It is a C++
+    library wrapped for python using nanobind, and supports Python 3.10+. It's only runtime dependency is NumPy.
+  license: MIT AND Unlicense AND BSD-3-Clause AND Apache-2.0
+  license_file:
+    - LICENSE
+    - external/benchmark/LICENSE
+    - external/fmt/LICENSE
+    - external/nanobind/LICENSE
+    - external/nanobind/ext/robin_map/LICENSE
+    - src/nanobind/nanobind/LICENSE
+    - src/nanobind/nanobind/ext/robin_map/LICENSE
+  doc_url: https://keltonhalbert.github.io/SHARPlib/
+  dev_url: https://github.com/keltonhalbert/SHARPlib
+
+extra:
+  recipe-maintainers:
+    - keltonhalbert


Reviews:
user: login: ocefpaf
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-22T20:56:48Z
user: login: keltonhalbert
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-22T21:17:16Z
user: login: ocefpaf
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-22T21:21:31Z
user: login: keltonhalbert
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-22T21:40:22Z
user: login: keltonhalbert
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-22T22:19:25Z
user: login: ocefpaf
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-23T12:30:34Z

Review comments:
diff_hunk: @@ -0,0 +1,68 @@
+{% set name = "SHARPlib" %}
+{% set version = "1.0.0rc4" %}
path: recipes/SHARPlib/meta.yaml
user: login: ocefpaf
body: This one falls under https://github.com/conda-forge/cfep/blob/main/cfep-05.md 
created_at: 2025-05-22T20:56:48Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,68 @@
+{% set name = "SHARPlib" %}
+{% set version = "1.0.0rc4" %}
path: recipes/SHARPlib/meta.yaml
user: login: keltonhalbert
body: @ocefpaf I took a look at the document linked, are there any specific steps I need to take before this can be merged? As far as I gathered reading it, rc status isn't forbidden or anything, but this is my first time packaging for conda. I'm the maintainer of the library being packaged, and it's rc status is primarily being held up by me making sure it can be built and packaged for PyPI and conda-forge. It should not remain in rc status too much longer past that goalpost. 
created_at: 2025-05-22T21:17:16Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,68 @@
+{% set name = "SHARPlib" %}
+{% set version = "1.0.0rc4" %}
path: recipes/SHARPlib/meta.yaml
user: login: ocefpaf
body: Please see https://github.com/conda-forge/cfep/blob/main/cfep-05.md#specification
created_at: 2025-05-22T21:21:31Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,68 @@
+{% set name = "SHARPlib" %}
+{% set version = "1.0.0rc4" %}
path: recipes/SHARPlib/meta.yaml
user: login: keltonhalbert
body: @ocefpaf Thank you, and pardon my lack of clarity. I have been following the[ documentation on contributing here](https://conda-forge.org/docs/maintainer/adding_pkgs/), but can't find anything on ```conda_build_config.yaml```. I was using grayskull to auto-generate my ```meta.yaml```.

Is it sufficient to add a ```conda_build_config.yaml``` with the following contents? Does it need more, or is this + meta.yaml sufficient?
```yaml
channel_targets:
    - conda-forge sharplib_rc
```

Thank you for your patience and assistance

created_at: 2025-05-22T21:40:22Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,68 @@
+{% set name = "SHARPlib" %}
+{% set version = "1.0.0rc4" %}
path: recipes/SHARPlib/meta.yaml
user: login: keltonhalbert
body: @ocefpaf assuming I understood you correctly, this has been addressed and pushed :smile: 
created_at: 2025-05-22T22:19:25Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,68 @@
+{% set name = "SHARPlib" %}
+{% set version = "1.0.0rc4" %}
path: recipes/SHARPlib/meta.yaml
user: login: ocefpaf
body: > Is it sufficient to add a conda_build_config.yaml with the following contents? Does it need more, or is this + meta.yaml sufficient?

Yep. When updstream issue a stable release, please drop that file and re-render to publish this in the main channel.
created_at: 2025-05-23T12:30:34Z
author_association: MEMBER

PR comments:
user: login: conda-forge-admin
created_at: 2025-05-22T18:24:20Z
body: Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (```recipes/SHARPlib/meta.yaml```) and found it was in an excellent condition.

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-22T18:25:56Z
body: Hi! This is the staged-recipes linter and your PR looks excellent! :rocket:


author_association: CONTRIBUTOR
user: login: keltonhalbert
created_at: 2025-05-22T19:59:18Z
body: @conda-forge/help-c-cpp, ready for review!
author_association: CONTRIBUTOR
user: login: keltonhalbert
created_at: 2025-05-22T20:21:27Z
body: @conda-forge-admin, please ping team
author_association: CONTRIBUTOR
user: login: conda-forge-webservices[bot]
created_at: 2025-05-22T20:21:32Z
body: 
Hi! This is the friendly automated conda-forge-webservice.

I was asked to ping @conda-forge/staged-recipes and so here I am doing that.

author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-22T20:21:43Z
body: To help direct your pull request to the best reviewers, please mention a topic-specifc team if your recipe matches any of the following: conda-forge/help-c-cpp, conda-forge/help-cdts, conda-forge/help-go, conda-forge/help-java, conda-forge/help-julia, conda-forge/help-nodejs, conda-forge/help-perl, conda-forge/help-python, conda-forge/help-python-c, conda-forge/help-r, conda-forge/help-ruby,or conda-forge/help-rust. Thanks!
author_association: CONTRIBUTOR
user: login: keltonhalbert
created_at: 2025-05-22T22:24:30Z
body: Modifications have been made to reflect https://github.com/conda-forge/cfep/blob/main/cfep-05.md

Once my library bumps from rc to release after the feedstock is created, would I remove the entire ```conda_build_config.yaml```, or modify it to:
 ```yaml
channel_targets:
    - conda-forge sharplib
```
author_association: CONTRIBUTOR