Skip to content

Commit

Permalink
Merge pull request #58 from sneakers-the-rat/copyleft
Browse files Browse the repository at this point in the history
add copyleft licenses
  • Loading branch information
sneakers-the-rat authored Nov 1, 2024
2 parents 8c1f1c1 + 2fa40e0 commit 385ccab
Show file tree
Hide file tree
Showing 15 changed files with 1,501 additions and 172 deletions.
15 changes: 11 additions & 4 deletions copier.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,18 @@ use_test:
license:
when: "{{ use_default == 'no' }}"
type: str
help: "Which license do you want to use? Used in the license file."
help: |
Which license do you want to use? Includes a LICENSE file in the repository root.
For more information, see:
- https://www.pyopensci.org/python-package-guide/documentation/repository-files/license-files.html
- https://opensource.org/licenses
choices:
- "MIT"
- "BSD-3-Clause"
- "Apache-2.0"
"Permissive - MIT": "MIT"
"Permissive - BSD-3-Clause": "BSD-3-Clause"
"Permissive - Apache-2.0": "Apache-2.0"
"Copyleft - GPL-3.0": "GPL-3.0-only"
"Copyleft - EUPL-1.2": "EUPL-1.2"
"Intermediate - MPL-2.0": "MPL-2.0"
default: MIT

year:
Expand Down
86 changes: 86 additions & 0 deletions includes/licenses/header.txt.jinja
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
{%- if license == "MIT" -%}
# MIT License
#
# Copyright (c) {{ year }} {{ copyright_holder }}
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
{%- elif license == "BSD-3-Clause" -%}
# Copyright (c) {{ year }} {{ copyright_holder }}
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from this
# software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
{%- elif license == "Apache-2.0" -%}
# Copyright (c) {{ year }} {{ copyright_holder }}
#
# 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
#
# https://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.
{%- elif license == "GPL-3.0-only" -%}
# Copyright © {{ year }} {{ copyright_holder }}
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the [GNU General Public License 3.0](./LICENSE)
# as published by the Free Software Foundation
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program. If not, see https://www.gnu.org/licenses/.
{%- elif license == "EUPL-1.2" -%}
# Copyright © {{ year }} {{ copyright_holder }}.
# Free software licensed under the EUPL 1.2 or later
{%- elif license == "MPL-2.0" -%}
# Copyright © {{ year }} {{ copyright_holder }}.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
{%- endif %}
26 changes: 26 additions & 0 deletions includes/licenses/stub.md.jinja
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{%- if license_path is not defined or license_path is none -%}
{# to not make a link, explicitly pass False. leaving undefined uses default location #}
{%- set license_path = "./LICENSE" -%}
{%- endif -%}
{%- macro license_link(name) -%}
{%- if not license_path %}{{ name }}{% else %}[{{ name }}]({{ license_path }}){% endif -%}
{%- endmacro -%}
{%- if license == "MIT" -%}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the {{ license_link('MIT License') }}.
{%- elif license == "BSD-3-Clause" -%}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the {{ license_link('3-Clause BSD License') }}.
{%- elif license == "Apache-2.0" -%}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the {{ license_link('Apache Software License 2.0') }}.
{%- elif license == "GPL-3.0-only" -%}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software licensed under the {{ license_link('GNU Public License 3.0') }}.
{%- elif license == "EUPL-1.2" -%}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software licensed under the {{ license_link('EUPL 1.2 or later') }}.
{%- elif license == "MPL-2.0" -%}
- Copyright © {{ year }} {{ copyright_holder }}.
- This Source Code Form is subject to the terms of the {{ license_link('Mozilla Public License, v2.0') }}.
{%- endif -%}
3 changes: 2 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ dependencies = [
"hatch ~=1.12",
"pytest ~=8.3",
"pytest-xdist ~=3.6",
"pre-commit"
"pre-commit",
"ruamel.yaml>=0.18.0",
]

[[tool.hatch.envs.test.matrix]]
Expand Down
12 changes: 2 additions & 10 deletions template/README.md.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,5 @@
_{{ package_description }}_

## Copyright
{% if license == "MIT" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the [MIT License](./LICENSE).
{% elif license == "BSD-3-Clause" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the [3-Clause BSD License](./LICENSE).
{% elif license == "Apache-2.0" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the [Apache Software License 2.0](./LICENSE).
{% endif %}

{% include pathjoin("includes", "licenses", "stub.md.jinja") %}
65 changes: 1 addition & 64 deletions template/src/{{ package_name }}/__init__.py.jinja
Original file line number Diff line number Diff line change
@@ -1,66 +1,3 @@
{%- if license == "MIT" -%}
# MIT License
#
# Copyright (c) {{ year }} {{ copyright_holder }}
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice (including the next
# paragraph) shall be included in all copies or substantial portions of the
# Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
{%- elif license == "BSD-3-Clause" -%}
# Copyright (c) {{ year }} {{ copyright_holder }}
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived from this
# software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
{%- elif license == "Apache-2.0" -%}
# Copyright (c) {{ year }} {{ copyright_holder }}
#
# 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
#
# https://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.
{%- endif %}

{% include pathjoin("includes", "licenses", "header.txt.jinja") %}

"""Provide top level symbols."""
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,7 @@
{{ package_description }}

## Copyright
{% if license == "MIT" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the [MIT License](../LICENSE).
{% elif license == "BSD-3-Clause" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the [3-Clause BSD License](../LICENSE).
{% elif license == "Apache-2.0" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the [Apache Software License 2.0](../LICENSE).
{% endif %}

{%- with license_path = "../LICENSE" -%}
{% include pathjoin("includes", "licenses", "stub.md.jinja") %}
{%- endwith -%}
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,10 @@
[API Documentation](./api/modules.rst)

## Copyright
{% if license == "MIT" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the MIT License.
{% elif license == "BSD-3-Clause" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the 3-Clause BSD License.
{% elif license == "Apache-2.0" %}
- Copyright © {{ year }} {{ copyright_holder }}.
- Free software distributed under the Apache Software License 2.0.
{% endif %}

{% with license_path = False -%}
{% include pathjoin("includes", "licenses", "stub.md.jinja") %}
{%- endwith %}

```{toctree}
:hidden:
Expand Down
Loading

0 comments on commit 385ccab

Please sign in to comment.