Giter Club home page Giter Club logo

cookiecutter-conda-package's Introduction

cookiecutter-conda-package

Template for Python packages based on Conda.

This package is developed to ease development of ECMWF packages, but it is intended to be more generic.

Features

Alpha stage:

  • pre-commit hooks
    • various linters
    • ruff
  • version with setuptools-scm-git
  • copyright + Apache v2.0 license
  • GitHub Actions
    • unit-tests (py3.11)
    • pre-commit
    • integration-tests
    • build documentation
    • static type check
    • build package & publish on PyPI
  • Makefile
  • gitignore
  • make Docker image
  • auto template update via cruft
  • add documentation skeleton (with sphinx / myst)

Planned:

  • keep environment files up-to-date

Usage

For best experience create a new conda environment (e.g. DEVELOP) with Python 3.11, cruft and make, then create the package:

conda create -n DEVELOP -c conda-forge python=3.11 cruft make
conda activate DEVELOP
cruft create https://github.com/ecmwf-projects/cookiecutter-conda-package

answer the configuration questions or accept the defaults when in doubt.

Create the git repo and add the pre-commit git hooks:

git init
git add .
git commit -m "Initial commit of the package boilerplate"

Attach an empty remote repository and push the skeleton package:

git branch -M main
git remote add origin [email protected]:ORGANISATION/PROJECT_NAME.git
git push --set-upstream origin main

To setup the package and its dependecies run:

make conda-env-update
conda activate DEVELOP
pre-commit install
pip install -e . --no-deps

Finally to run pre-commit, pytest, and mypy on the newly created package run:

make

To update the boilerplate to the latest template execute:

make template-update

License

Copyright 2022, European Union.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

cookiecutter-conda-package's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cookiecutter-conda-package's Issues

Licence does not follow ECMWF guidelines

ECMWF packages using the Apache 2 licence usually have this licence https://github.com/ecmwf/climetlab/blob/develop/LICENSE

Along with a header in any possible files (excluding files not supporting it such as yaml, json, binary, etc.):

# (C) Copyright 2020 ECMWF.
#
# This software is licensed under the terms of the Apache Licence Version 2.0
# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
**# In applying this licence, ECMWF does not waive the privileges and immunities
# granted to it by virtue of its status as an intergovernmental organisation
# nor does it submit to any jurisdiction.**
#

And in the README too.

I believe this package should be updated with the correct licence, and the generated conda packages should also include the same licence with the same writing.

FYI, ECMWF guidelines are here: https://confluence.ecmwf.int/display/DS/Checklist+for+new+packages+on+Github but I am not sure you have access to this page.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.