From 97b7163496fa511b37be1ccbf48f8f0c85969e34 Mon Sep 17 00:00:00 2001 From: Ed Harrod Date: Tue, 7 Apr 2026 11:59:26 +0100 Subject: [PATCH 1/6] docs: add PyPI long description and update README badges --- README.md | 9 ++++++++- pyproject.toml | 1 - setup.py | 6 +++++- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e59af76..710d1e7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,11 @@ -# Luno API [![Build Status](https://travis-ci.org/luno/luno-python.svg?branch=master)](https://travis-ci.org/luno/luno-python) +# Luno Python SDK + +[![Run Tests](https://github.com/luno/luno-python/actions/workflows/test.yml/badge.svg)](https://github.com/luno/luno-python/actions/workflows/test.yml) +[![PyPI version](https://img.shields.io/pypi/v/luno-python.svg)](https://pypi.org/project/luno-python/) +[![Python Versions](https://img.shields.io/pypi/pyversions/luno-python.svg)](https://pypi.org/project/luno-python/) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/luno/luno-python/blob/master/LICENSE.txt) This Python package provides a wrapper for the [Luno API](https://www.luno.com/api). @@ -28,6 +33,8 @@ except Exception as e: print(e) ``` +For more examples, see the [examples](./examples) folder. + ### License [MIT](https://github.com/luno/luno-python/blob/master/LICENSE.txt) diff --git a/pyproject.toml b/pyproject.toml index 5423a21..ef13dd0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -22,7 +22,6 @@ skip_gitignore = true exclude_dirs = ["tests", "env", "build"] skips = [ "B101", # Skip assert_used check (common in tests) - "B107", # Skip hardcoded_password_default (empty string defaults are acceptable for optional credentials) ] [tool.pytest.ini_options] diff --git a/setup.py b/setup.py index cdf0021..9c326cc 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,7 @@ """Setup script for luno-python package.""" +from pathlib import Path + from setuptools import find_packages, setup from luno_python import VERSION @@ -8,7 +10,9 @@ name="luno-python", version=VERSION, packages=find_packages(exclude=["tests"]), - description="A Luno API client for Python", + description="A Python client for the Luno cryptocurrency exchange API", + long_description=(Path(__file__).parent / "README.md").read_text(encoding="utf-8"), + long_description_content_type="text/markdown", author="Neil Garb", author_email="neil@luno.com", install_requires=["requests>=2.18.4", "six>=1.11.0"], From 59e08db338d8c47661d7ff0a591b0b1ccf3062fd Mon Sep 17 00:00:00 2001 From: Ed Harrod Date: Tue, 7 Apr 2026 12:04:12 +0100 Subject: [PATCH 2/6] fix: use main branch in licence badge URL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 710d1e7..0865d95 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![Run Tests](https://github.com/luno/luno-python/actions/workflows/test.yml/badge.svg)](https://github.com/luno/luno-python/actions/workflows/test.yml) [![PyPI version](https://img.shields.io/pypi/v/luno-python.svg)](https://pypi.org/project/luno-python/) [![Python Versions](https://img.shields.io/pypi/pyversions/luno-python.svg)](https://pypi.org/project/luno-python/) -[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/luno/luno-python/blob/master/LICENSE.txt) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/luno/luno-python/blob/main/LICENSE.txt) This Python package provides a wrapper for the [Luno API](https://www.luno.com/api). From a3f9e15447dc0e442272f41163a66caf5824357a Mon Sep 17 00:00:00 2001 From: Ed Harrod Date: Tue, 7 Apr 2026 12:07:08 +0100 Subject: [PATCH 3/6] feat: add SonarCloud badges and Python classifiers to fix missing badge --- README.md | 8 +++++++- setup.py | 10 ++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0865d95..8cf608c 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,12 @@ [![PyPI version](https://img.shields.io/pypi/v/luno-python.svg)](https://pypi.org/project/luno-python/) [![Python Versions](https://img.shields.io/pypi/pyversions/luno-python.svg)](https://pypi.org/project/luno-python/) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/luno/luno-python/blob/main/LICENSE.txt) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=coverage)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) +[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=bugs)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) +[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) +[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) +[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) This Python package provides a wrapper for the [Luno API](https://www.luno.com/api). @@ -37,4 +43,4 @@ For more examples, see the [examples](./examples) folder. ### License -[MIT](https://github.com/luno/luno-python/blob/master/LICENSE.txt) +[MIT](https://github.com/luno/luno-python/blob/main/LICENSE.txt) diff --git a/setup.py b/setup.py index 9c326cc..f0c3509 100644 --- a/setup.py +++ b/setup.py @@ -19,6 +19,16 @@ license="MIT", url="https://github.com/luno/luno-python", download_url=f"https://github.com/luno/luno-python/tarball/{VERSION}", + python_requires=">=3.9", + classifiers=[ + "License :: OSI Approved :: MIT License", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + ], keywords="Luno API Bitcoin Ethereum", test_suite="tests", setup_requires=["pytest-runner"], From b0e2a6e5a22f102ad95eb77800883e40b4a5d179 Mon Sep 17 00:00:00 2001 From: Ed Harrod Date: Tue, 7 Apr 2026 12:09:20 +0100 Subject: [PATCH 4/6] feat: support Python 3.11-3.14, update test matrix --- .github/workflows/test.yml | 2 +- setup.py | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 99c0309..54a75b2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,7 +13,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: [ "3.12", "3.13" ] + python-version: [ "3.11", "3.12", "3.13", "3.14" ] steps: diff --git a/setup.py b/setup.py index f0c3509..c4a0a7a 100644 --- a/setup.py +++ b/setup.py @@ -19,15 +19,14 @@ license="MIT", url="https://github.com/luno/luno-python", download_url=f"https://github.com/luno/luno-python/tarball/{VERSION}", - python_requires=">=3.9", + python_requires=">=3.11", classifiers=[ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", ], keywords="Luno API Bitcoin Ethereum", test_suite="tests", From cde5d0214b855f41b7184f6e871bffd5af5f9c52 Mon Sep 17 00:00:00 2001 From: Ed Harrod Date: Tue, 7 Apr 2026 12:09:56 +0100 Subject: [PATCH 5/6] docs: separate Sonar badges onto own line, link to dashboard --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8cf608c..21a5c37 100644 --- a/README.md +++ b/README.md @@ -6,12 +6,13 @@ [![PyPI version](https://img.shields.io/pypi/v/luno-python.svg)](https://pypi.org/project/luno-python/) [![Python Versions](https://img.shields.io/pypi/pyversions/luno-python.svg)](https://pypi.org/project/luno-python/) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/luno/luno-python/blob/main/LICENSE.txt) -[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) -[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=coverage)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) -[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=bugs)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) -[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) -[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) -[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=luno_luno-python) + +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=alert_status)](https://sonarcloud.io/dashboard?id=luno_luno-python) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=coverage)](https://sonarcloud.io/dashboard?id=luno_luno-python) +[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=bugs)](https://sonarcloud.io/dashboard?id=luno_luno-python) +[![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=security_rating)](https://sonarcloud.io/dashboard?id=luno_luno-python) +[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=luno_luno-python) +[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=duplicated_lines_density)](https://sonarcloud.io/dashboard?id=luno_luno-python) This Python package provides a wrapper for the [Luno API](https://www.luno.com/api). From 488c8154b7cb1a4cc309d987bdd7d67675748d90 Mon Sep 17 00:00:00 2001 From: Ed Harrod Date: Tue, 7 Apr 2026 12:12:07 +0100 Subject: [PATCH 6/6] docs: remove coverage badge (no data in SonarCloud) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 21a5c37..ab29ffc 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/luno/luno-python/blob/main/LICENSE.txt) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=alert_status)](https://sonarcloud.io/dashboard?id=luno_luno-python) -[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=coverage)](https://sonarcloud.io/dashboard?id=luno_luno-python) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=bugs)](https://sonarcloud.io/dashboard?id=luno_luno-python) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=security_rating)](https://sonarcloud.io/dashboard?id=luno_luno-python) [![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=luno_luno-python&metric=vulnerabilities)](https://sonarcloud.io/dashboard?id=luno_luno-python)