Skip to main content
Glama
sdist.py2.92 kB
import os import tarfile import zipfile from contextlib import suppress from twine import distribution from twine import exceptions class SDist(distribution.Distribution): def __new__(cls, filename: str) -> "SDist": if cls is not SDist: return object.__new__(cls) FORMATS = { ".tar.gz": TarGzSDist, ".zip": ZipSDist, } for extension, impl in FORMATS.items(): if filename.endswith(extension): return impl(filename) raise exceptions.InvalidDistribution(f"Unsupported sdist format: {filename}") def __init__(self, filename: str) -> None: if not os.path.exists(filename): raise exceptions.InvalidDistribution(f"No such file: {filename}") self.filename = filename @property def py_version(self) -> str: return "source" class TarGzSDist(SDist): def read(self) -> bytes: with tarfile.open(self.filename, "r:gz") as sdist: # The sdist must contain a single top-level direcotry... root = os.path.commonpath(sdist.getnames()) if root in {".", "/", ""}: raise exceptions.InvalidDistribution( "Too many top-level members in sdist archive: {self.filename}" ) # ...containing the package metadata in a ``PKG-INFO`` file. with suppress(KeyError): member = sdist.getmember(root.rstrip("/") + "/PKG-INFO") if not member.isfile(): raise exceptions.InvalidDistribution( "PKG-INFO is not a regular file: {self.filename}" ) fd = sdist.extractfile(member) assert fd is not None, "for mypy" data = fd.read() if b"Metadata-Version" in data: return data raise exceptions.InvalidDistribution( "No PKG-INFO in archive or " f"PKG-INFO missing 'Metadata-Version': {self.filename}" ) class ZipSDist(SDist): def read(self) -> bytes: with zipfile.ZipFile(self.filename) as sdist: # The sdist must contain a single top-level direcotry... root = os.path.commonpath(sdist.namelist()) if root in {".", "/", ""}: raise exceptions.InvalidDistribution( "Too many top-level members in sdist archive: {self.filename}" ) # ...containing the package metadata in a ``PKG-INFO`` file. with suppress(KeyError): data = sdist.read(root.rstrip("/") + "/PKG-INFO") if b"Metadata-Version" in data: return data raise exceptions.InvalidDistribution( "No PKG-INFO in archive or " f"PKG-INFO missing 'Metadata-Version': {self.filename}" )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/typing233/scenext-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server