From 713b74103efc6c3b30ec787494e883a0a188780f Mon Sep 17 00:00:00 2001 From: larabasegg Date: Fri, 3 Jul 2026 18:18:18 +0200 Subject: [PATCH] [oss-compliance] Fix copyright to MIH AI B.V. + add compliance deliverables Prosus OpenSource Ally compliance remediation (Legal-cleared): - LICENSE: copyright holder Floris Fok -> MIH AI B.V. (2025) - README: Apache-2.0 badge + License section; remove personal contact block - Add CONTRIBUTING.md (Prosus CLA) and NOTICE (third-party attributions, including Legal-approved LGPL/MPL deps: psycopg, certifi, tqdm) - Add Apache-2.0 headers to source files Co-Authored-By: Claude Opus 4.8 (1M context) --- CONTRIBUTING.md | 38 ++++++++++++++++++++++++++++++ LICENSE | 2 +- NOTICE | 52 ++++++++++++++++++++++++++++++++++++++++++ README.md | 23 +++++++++++++++---- configs/__init__.py | 4 ++++ configs/config.py | 4 ++++ scripts/check_batch.py | 4 ++++ scripts/delete_x.py | 4 ++++ src/auth.py | 4 ++++ src/main.py | 4 ++++ src/models/batch.py | 4 ++++ src/routes/batch.py | 4 ++++ src/routes/files.py | 4 ++++ testing/test_api.py | 4 ++++ testing/test_large.py | 4 ++++ worker/app.py | 4 ++++ 16 files changed, 158 insertions(+), 5 deletions(-) create mode 100644 CONTRIBUTING.md create mode 100644 NOTICE diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7cefe3f --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,38 @@ +# Contributing to BESH + +We welcome contributions from the community! By contributing to this project, you agree to the following terms. + +## Contributor License Agreement (CLA) + +By submitting code contributions (pull requests, patches, or any other form of code submission) to this project, you agree that: + +1. **Copyright Assignment**: You assign all copyright and related rights in your contributions to **MIH AI B.V.** + +2. **Licensing**: Your contributions will be licensed under the same license as this project (Apache License 2.0). + +3. **Originality**: You represent that your contributions are your original work and that you have the right to assign the copyright to MIH AI B.V. + +4. **No Conflicting Obligations**: You are not subject to any agreement or obligation that would prevent you from making these contributions. + +## How to Contribute + +1. Fork the repository +2. Create a feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request + +## Code Review Process + +All submissions require review before being merged. We will: +- Review code quality and consistency +- Run automated tests +- Verify compliance with project standards + +## Questions? + +If you have questions about the contribution process or CLA, please contact the project maintainers or Prosus Legal. + +--- + +**By submitting a contribution, you acknowledge that you have read and agree to the terms above.** diff --git a/LICENSE b/LICENSE index 448b6ff..cb47ba3 100644 --- a/LICENSE +++ b/LICENSE @@ -175,7 +175,7 @@ END OF TERMS AND CONDITIONS - Copyright 2025 Floris Fok + Copyright © 2025 MIH AI B.V. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..518efc8 --- /dev/null +++ b/NOTICE @@ -0,0 +1,52 @@ +BESH +Copyright © 2025 MIH AI B.V. + +This product is licensed under the Apache License, Version 2.0. + +This software includes third-party open source software components. +The following is a list of these components with their respective licenses. + +================================================================================ +THIRD-PARTY DEPENDENCIES +================================================================================ + +Weak-copyleft components (LGPL / MPL) — use reviewed and approved by Prosus Legal: +-------------------------------------------------------------------------------- +Component: psycopg (psycopg3) License: LGPL-3.0 Source: https://github.com/psycopg/psycopg +Component: certifi License: MPL-2.0 Source: https://github.com/certifi/python-certifi +Component: tqdm License: MPL-2.0 / MIT Source: https://github.com/tqdm/tqdm + +Permissive components (Apache-2.0 / MIT / BSD / ISC): +-------------------------------------------------------------------------------- +Component: FastAPI License: MIT Source: https://github.com/fastapi/fastapi +Component: Uvicorn License: BSD-3-Clause Source: https://github.com/encode/uvicorn +Component: Starlette License: BSD-3-Clause Source: https://github.com/encode/starlette +Component: Pydantic License: MIT Source: https://github.com/pydantic/pydantic +Component: SQLAlchemy License: MIT Source: https://github.com/sqlalchemy/sqlalchemy +Component: asyncpg License: Apache-2.0 Source: https://github.com/MagicStack/asyncpg +Component: redis-py License: MIT Source: https://github.com/redis/redis-py +Component: LiteLLM License: MIT Source: https://github.com/BerriAI/litellm +Component: OpenAI Python License: Apache-2.0 Source: https://github.com/openai/openai-python +Component: huggingface-hub License: Apache-2.0 Source: https://github.com/huggingface/huggingface_hub +Component: tokenizers License: Apache-2.0 Source: https://github.com/huggingface/tokenizers +Component: tiktoken License: MIT Source: https://github.com/openai/tiktoken +Component: requests License: Apache-2.0 Source: https://github.com/psf/requests +Component: urllib3 License: MIT Source: https://github.com/urllib3/urllib3 +Component: aiohttp License: Apache-2.0 Source: https://github.com/aio-libs/aiohttp +Component: httpx License: BSD-3-Clause Source: https://github.com/encode/httpx +Component: Jinja2 License: BSD-3-Clause Source: https://github.com/pallets/jinja +Component: MarkupSafe License: BSD-3-Clause Source: https://github.com/pallets/markupsafe +Component: Werkzeug License: BSD-3-Clause Source: https://github.com/pallets/werkzeug +Component: click License: BSD-3-Clause Source: https://github.com/pallets/click +Component: itsdangerous License: BSD-3-Clause Source: https://github.com/pallets/itsdangerous +Component: blinker License: MIT Source: https://github.com/pallets-eco/blinker +Component: PyYAML License: MIT Source: https://github.com/yaml/pyyaml +Component: orjson License: Apache-2.0 / MIT Source: https://github.com/ijl/orjson +Component: python-multipart License: Apache-2.0 Source: https://github.com/Kludex/python-multipart +Component: python-dotenv License: BSD-3-Clause Source: https://github.com/theskumar/python-dotenv +Component: anyio License: MIT Source: https://github.com/agronholm/anyio +Component: certifi's peers (idna, sniffio, h11, httpcore, etc.) License: MIT / BSD + +For complete license texts, see the LICENSE files in the respective dependencies +or visit the source repositories. This list covers the primary declared +dependencies; transitive dependencies inherit compatible permissive licenses. diff --git a/README.md b/README.md index c99b380..5082aed 100755 --- a/README.md +++ b/README.md @@ -3,6 +3,8 @@ ![BESH Logo Banner](images/BESH_LOGO_BANNER.png) +[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) + A high-performance batch processing API for large language models with support for both single-GPU and multi-GPU (8-GPU) deployments. @@ -218,8 +220,21 @@ docker compose -f up -d --no-deps --build batch-api Contributions are welcome! Feel free to open an issue or submit a pull request. -## Contact -- **Author:** Floris Fok -- **📧 Email:** [floris.fok@prosus.com](mailto:floris.fok@prosus.com) -- **🔗 LinkedIn:** [floris-jan-fok](https://www.linkedin.com/in/floris-jan-fok/) \ No newline at end of file +--- + +## License + +Copyright © 2025 MIH AI B.V. + +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. diff --git a/configs/__init__.py b/configs/__init__.py index 71d9c62..3705560 100644 --- a/configs/__init__.py +++ b/configs/__init__.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + from .config import Config, get_config __all__ = ['Config', 'get_config'] \ No newline at end of file diff --git a/configs/config.py b/configs/config.py index 585c407..f88ee90 100644 --- a/configs/config.py +++ b/configs/config.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + import os from pathlib import Path from dotenv import load_dotenv diff --git a/scripts/check_batch.py b/scripts/check_batch.py index 19a01eb..e7b33a3 100644 --- a/scripts/check_batch.py +++ b/scripts/check_batch.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + import requests import sys import json diff --git a/scripts/delete_x.py b/scripts/delete_x.py index c9949a8..44f714b 100644 --- a/scripts/delete_x.py +++ b/scripts/delete_x.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + import requests from concurrent.futures import ThreadPoolExecutor, as_completed import argparse diff --git a/src/auth.py b/src/auth.py index 41b7452..43089fa 100644 --- a/src/auth.py +++ b/src/auth.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + """Authentication middleware for protecting endpoints.""" import os diff --git a/src/main.py b/src/main.py index 1dec2cd..8e7301d 100644 --- a/src/main.py +++ b/src/main.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + import os import asyncio from contextlib import asynccontextmanager diff --git a/src/models/batch.py b/src/models/batch.py index 74d13b6..9964b38 100644 --- a/src/models/batch.py +++ b/src/models/batch.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + import asyncpg import os import urllib.parse diff --git a/src/routes/batch.py b/src/routes/batch.py index 7fdfdb9..de10455 100644 --- a/src/routes/batch.py +++ b/src/routes/batch.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + import os import json import uuid diff --git a/src/routes/files.py b/src/routes/files.py index 08b86ef..5a175a0 100644 --- a/src/routes/files.py +++ b/src/routes/files.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + import os import uuid import json diff --git a/testing/test_api.py b/testing/test_api.py index aad927a..cdc47a5 100644 --- a/testing/test_api.py +++ b/testing/test_api.py @@ -1,4 +1,8 @@ #!/usr/bin/env python3 +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + """ Test script for OpenAI Batch API """ diff --git a/testing/test_large.py b/testing/test_large.py index 863212b..d9a608a 100644 --- a/testing/test_large.py +++ b/testing/test_large.py @@ -1,4 +1,8 @@ #!/usr/bin/env python3 +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + """ Demo script testing compressed file uploads for batch processing diff --git a/worker/app.py b/worker/app.py index 0ced437..8060f61 100644 --- a/worker/app.py +++ b/worker/app.py @@ -1,3 +1,7 @@ +# Copyright © 2025 MIH AI B.V. +# Licensed under the Apache License, Version 2.0. +# See LICENSE file in the project root for full license information. + import asyncio import aiofiles import json