| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- """Export locked production requirements for the Kylin ARM64 CPU target."""
- import argparse
- from pathlib import Path
- import subprocess
- from packaging.markers import default_environment
- from packaging.requirements import Requirement
- ROOT = Path(__file__).resolve().parents[1]
- def target_environment():
- environment = default_environment()
- environment.update({
- 'implementation_name': 'cpython',
- 'os_name': 'posix',
- 'platform_machine': 'aarch64',
- 'platform_python_implementation': 'CPython',
- 'platform_system': 'Linux',
- 'python_full_version': '3.14.5',
- 'python_version': '3.14',
- 'sys_platform': 'linux',
- })
- return environment
- def filter_export(exported):
- environment = target_environment()
- selected = []
- cpu_torch = False
- for line in exported.splitlines():
- line = line.strip()
- if not line or line.startswith('#'):
- continue
- requirement = Requirement(line)
- if requirement.marker and not requirement.marker.evaluate(environment):
- continue
- requirement.marker = None
- if requirement.name == 'torch' and '+cpu' in str(requirement.specifier):
- cpu_torch = True
- selected.append(str(requirement))
- if not cpu_torch:
- raise RuntimeError('target_cpu_torch_missing')
- if any(line.startswith(('cuda-', 'nvidia-', 'triton==')) for line in selected):
- raise RuntimeError('unexpected_cuda_dependency')
- return '\n'.join(selected) + '\n'
- def main():
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument('output', type=Path)
- args = parser.parse_args()
- export = subprocess.run(
- ['uv', '--cache-dir', str(ROOT / '.uv-cache'), 'export', '--locked',
- '--offline', '--no-dev', '--no-emit-project', '--no-hashes',
- '--no-annotate', '--format', 'requirements-txt'],
- cwd=ROOT, check=True, capture_output=True, text=True,
- )
- requirements = filter_export(export.stdout)
- args.output.parent.mkdir(parents=True, exist_ok=True)
- args.output.write_text(requirements, encoding='utf-8')
- print(f'Wrote {len(requirements.splitlines())} locked ARM64 CPU requirements.')
- if __name__ == '__main__':
- main()
|