Stage the Python license file during builds (#9015)

Copy the repo-root LICENSE into the Python package directory for the duration of setup() so license_files = LICENSE remains valid without using deprecated parent-directory paths.

Remove the staged copy after the build completes.
This commit is contained in:
Zen Dodd
2026-04-18 10:30:06 +10:00
committed by GitHub
parent ac7ef1176a
commit bab10754d9

View File

@@ -12,33 +12,54 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from pathlib import Path
import shutil
from setuptools import setup
setup(
name='flatbuffers',
version='25.12.19',
license='Apache 2.0',
author='Derek Bailey',
author_email='derekbailey@google.com',
url='https://google.github.io/flatbuffers/',
long_description=(
'Python runtime library for use with the '
'`Flatbuffers <https://google.github.io/flatbuffers/>`_ '
'serialization format.'
),
packages=['flatbuffers'],
include_package_data=True,
requires=[],
description='The FlatBuffers serialization format for Python',
classifiers=[
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Topic :: Software Development :: Libraries :: Python Modules',
],
project_urls={
'Documentation': 'https://google.github.io/flatbuffers/',
'Source': 'https://github.com/google/flatbuffers',
},
)
_THIS_DIR = Path(__file__).resolve().parent
_ROOT_LICENSE = _THIS_DIR.parent / 'LICENSE'
_LOCAL_LICENSE = _THIS_DIR / 'LICENSE'
def _stage_license_file():
if _LOCAL_LICENSE.exists() or not _ROOT_LICENSE.exists():
return False
shutil.copyfile(_ROOT_LICENSE, _LOCAL_LICENSE)
return True
_remove_staged_license = _stage_license_file()
try:
setup(
name='flatbuffers',
version='25.12.19',
license='Apache 2.0',
author='Derek Bailey',
author_email='derekbailey@google.com',
url='https://google.github.io/flatbuffers/',
long_description=(
'Python runtime library for use with the '
'`Flatbuffers <https://google.github.io/flatbuffers/>`_ '
'serialization format.'
),
packages=['flatbuffers'],
include_package_data=True,
requires=[],
description='The FlatBuffers serialization format for Python',
classifiers=[
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3',
'Topic :: Software Development :: Libraries :: Python Modules',
],
project_urls={
'Documentation': 'https://google.github.io/flatbuffers/',
'Source': 'https://github.com/google/flatbuffers',
},
)
finally:
if _remove_staged_license and _LOCAL_LICENSE.exists():
_LOCAL_LICENSE.unlink()