From 8aba9ff6ca838e1848db28d8dcf55dbb422d3b4b Mon Sep 17 00:00:00 2001 From: Josh Radcliff Date: Thu, 6 Aug 2026 11:56:01 -0400 Subject: [PATCH] chore(release): prepare project for publishing - Packaging & Metadata: - Add [project.urls] for PyPI sidebar links (Homepage, Docs, Repo, Issues). - Update license to standard SPDX expression "Apache-2.0" (PEP 639). - Clean up classifiers and add "Operating System :: OS Independent". - Remove <3.14 upper bound on requires-python. - Add PEP 561 py.typed marker and package-data configuration. - Documentation: - Fix RST link syntax for CONTRIBUTING.md in README.rst. - Fix RST subheadings and code literal backticks under "Run samples". - Add bash syntax highlighting to installation code block. - Add Lindsey Volta to authors list. - Tooling & Python 3.14: - Add Python 3.14 to noxfile test matrix and pyproject classifiers. - Update coverage test dependency to >=7.0.0. - Configure [tool.black] in pyproject.toml and simplify nox format session. - Remove set -x from release.sh. Change-Id: I335c981a8a8b44d80662dd7a080ed45a5852b8f6 --- .kokoro/release.sh | 1 - README.rst | 14 ++++++++------ google/ads/datamanager_util/py.typed | 0 noxfile.py | 13 +++---------- pyproject.toml | 23 +++++++++++++++++++---- 5 files changed, 30 insertions(+), 21 deletions(-) create mode 100644 google/ads/datamanager_util/py.typed diff --git a/.kokoro/release.sh b/.kokoro/release.sh index 6e29a2e..48912cf 100755 --- a/.kokoro/release.sh +++ b/.kokoro/release.sh @@ -1,6 +1,5 @@ #!/bin/bash set -euo pipefail -set -x # Echo commands for build transparency in Kokoro logs # ----------------------------------------------------------------------------- # 1. Workspace & Directory Resolution diff --git a/README.rst b/README.rst index cd31456..060ef44 100644 --- a/README.rst +++ b/README.rst @@ -10,9 +10,9 @@ Requirements Installation ------------ -.. code-block:: +.. code-block:: bash - pip install . + pip install google-ads-datamanager-util Documentation ------------- @@ -22,14 +22,14 @@ configure, and use this client library. Run samples ----------- -Samples are provided in the `samples/` directory, and the `samples/sampledata` +Samples are provided in the ``samples/`` directory, and the ``samples/sampledata`` directory contains samples of input files you can use with the samples. To run a sample, invoke the script using the command line. You can pass arguments to the script in one of two ways: 1. Explicitly, on the command line ------------------------------------ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: bash @@ -40,7 +40,7 @@ arguments to the script in one of two ways: --json_file='' 2. Using an arguments file --------------------------- +~~~~~~~~~~~~~~~~~~~~~~~~~~ You can also save arguments in a file, with one argument per line. @@ -71,12 +71,14 @@ https://github.com/googleads/data-manager-python/issues Contributing ------------ -Contributions welcome! See the [Contributing Guide](CONTRIBUTING.md). +Contributions welcome! See the `Contributing Guide `_. Authors ------- * `Josh Radcliff`_ +* `Lindsey Volta`_ .. _Developer Site: https://developers.google.com/data-manager/api/get-started/set-up-access#python .. _Josh Radcliff: https://github.com/jradcliff +.. _Lindsey Volta: https://github.com/lindsey-volta diff --git a/google/ads/datamanager_util/py.typed b/google/ads/datamanager_util/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/noxfile.py b/noxfile.py index 4036d46..91d29d8 100644 --- a/noxfile.py +++ b/noxfile.py @@ -16,7 +16,7 @@ import os import pathlib -PYTHON_VERSIONS = ["3.10", "3.11", "3.12", "3.13"] +PYTHON_VERSIONS = ["3.10", "3.11", "3.12", "3.13", "3.14"] TEST_COMMAND = [ "coverage", @@ -39,7 +39,7 @@ FREEZE_COMMAND = ["python", "-m", "pip", "freeze"] TEST_DEPENDENCIES = [ "pyfakefs>=5.0.0,<6.0", - "coverage==6.5.0", + "coverage>=7.0.0", ] @@ -58,11 +58,4 @@ def tests(session): @nox.session(venv_backend="none") def format(session): """Runs the black formatter and applies formatting fixes.""" - session.run( - "black", - "-l", - "80", - "--exclude", - r"/(v[0-9]+|\.eggs|\.git|_cache|\.nox|\.tox|\.venv|\.svn|_build|buck-out|build|dist)/", - ".", - ) + session.run("black", ".") diff --git a/pyproject.toml b/pyproject.toml index 7a8cb09..aeaf411 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,24 +18,25 @@ build-backend = "setuptools.build_meta" [project] name = "google-ads-datamanager-util" -version = "0.4.0" +version = "0.4.0rc1" description = "Utilities for the Data Manager API" readme = "./README.rst" -requires-python = ">=3.10, <3.14" -license = {text = "Apache 2.0"} +requires-python = ">=3.10" +license = "Apache-2.0" authors = [ {name = "Google LLC", email = "googleapis-packages@google.com"} ] classifiers = [ - "Intended Audience :: Developers", "Development Status :: 4 - Beta", "Intended Audience :: Developers", + "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3", "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", ] dependencies = [ "PyYAML >= 5.1, < 7.0", @@ -44,6 +45,12 @@ dependencies = [ "typing_extensions", ] +[project.urls] +Homepage = "https://github.com/googleads/data-manager-python" +Documentation = "https://developers.google.com/data-manager/api/get-started/set-up-access#python" +Repository = "https://github.com/googleads/data-manager-python" +"Issue Tracker" = "https://github.com/googleads/data-manager-python/issues" + [project.optional-dependencies] dev = [ "black[jupyter]", @@ -59,3 +66,11 @@ samples = [ [tool.setuptools] packages = ["google.ads.datamanager_util"] +[tool.setuptools.package-data] +"google.ads.datamanager_util" = ["py.typed"] + +[tool.black] +line-length = 80 +# Omit py314 until 3.14 GA to avoid Black AST parser warnings on Python <= 3.13. +target-version = ["py310", "py311", "py312", "py313"] +