nats-io / nats.py

Python3 client for NATS

Home Page:https://nats-io.github.io/nats.py/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

2.2.0 can't be installed with poetry on windows

jmwielandt opened this issue · comments

commented

Hi. I'm trying to install nats-py with poetry, but it fails. nats-py 2.1.7 works fine.

C:\dev> poetry new test
Created package test in test
C:\dev> cd test
C:\dev\test> poetry add nats-py
Creating virtualenv test-OzAo6IVU-py3.10 in C:\Users\REDACTED\AppData\Local\pypoetry\Cache\virtualenvs
Using version ^2.2.0 for nats-py

Updating dependencies
Resolving dependencies...

file could not be opened successfully:
- method gz: ReadError('not a gzip file')
- method bz2: ReadError('not a bzip2 file')
- method xz: ReadError('not an lzma file')
- method tar: ReadError('invalid header')
C:\dev\test> cat .\pyproject.toml
[tool.poetry]
name = "test"
version = "0.1.0"
description = ""
authors = ["REDACTED"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.10"


[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
C:\dev\test> poetry add nats-py=2.1.7

Updating dependencies
Resolving dependencies...

Package operations: 1 install, 0 updates, 0 removals

  • Installing nats-py (2.1.7)

Writing lock file
C:\dev\test> poetry --version
Poetry (version 1.5.0)
C:\dev\test> python --version
Python 3.10.11

Full logs (-vvv):

click me to open it
C:\dev\test> poetry remove nats-py
Updating dependencies
Resolving dependencies...

Package operations: 0 installs, 0 updates, 1 removal

  • Removing nats-py (2.1.7)

Writing lock file
C:\dev\test> poetry add nats-py -vvv
Loading configuration file C:\Users\REDACTED\AppData\Roaming\pypoetry\config.toml
Using virtualenv: C:\Users\REDACTED\AppData\Local\pypoetry\Cache\virtualenvs\test-OzAo6IVU-py3.10
[keyring.backend] Loading KWallet
[keyring.backend] Loading SecretService
[keyring.backend] Loading Windows
[keyring.backend] Loading chainer
[keyring.backend] Loading libsecret
[keyring.backend] Loading macOS
Creating new session for pypi.org
[urllib3.connectionpool] Starting new HTTPS connection (1): pypi.org:443
[urllib3.connectionpool] https://pypi.org:443 "GET /simple/nats-py/ HTTP/1.1" 304 0
[filelock] Attempting to acquire lock 2988372802864 on C:\Users\REDACTED\AppData\Local\pypoetry\Cache\cache\repositories\PyPI\_http\9\5\7\1\6\957163279c44468252365a0a29f581856602ad706425c3d2b7239449.lock
[filelock] Lock 2988372802864 acquired on C:\Users\REDACTED\AppData\Local\pypoetry\Cache\cache\repositories\PyPI\_http\9\5\7\1\6\957163279c44468252365a0a29f581856602ad706425c3d2b7239449.lock
[filelock] Attempting to release lock 2988372802864 on C:\Users\REDACTED\AppData\Local\pypoetry\Cache\cache\repositories\PyPI\_http\9\5\7\1\6\957163279c44468252365a0a29f581856602ad706425c3d2b7239449.lock
[filelock] Lock 2988372802864 released on C:\Users\REDACTED\AppData\Local\pypoetry\Cache\cache\repositories\PyPI\_http\9\5\7\1\6\957163279c44468252365a0a29f581856602ad706425c3d2b7239449.lock
Source (PyPI): 9 packages found for nats-py *
Using version ^2.2.0 for nats-py

Updating dependencies
Resolving dependencies...
   1: fact: test is 0.1.0
   1: derived: test
   1: fact: test depends on nats-py (^2.2.0)
   1: selecting test (0.1.0)
   1: derived: nats-py (>=2.2.0,<3.0.0)
Source (PyPI): 1 packages found for nats-py >=2.2.0,<3.0.0
Source (PyPI): The cache for nats-py 2.2.0 is outdated. Refreshing.
Source (PyPI): Getting info for nats-py (2.2.0) from PyPI
Source (PyPI): No dependencies found, downloading archives
   1: Version solving took 0.019 seconds.
   1: Tried 1 solutions.

  Stack trace:

  24  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\cleo\application.py:327 in run
       325│
       326│             try:
     → 327│                 exit_code = self._run(io)
       328│             except BrokenPipeError:
       329│                 # If we are piped to another process, it may close early and send a

  23  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\console\application.py:190 in _run
       188│         self._load_plugins(io)
       189│
     → 190│         exit_code: int = super()._run(io)
       191│         return exit_code
       192│

  22  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\cleo\application.py:431 in _run
       429│             io.input.interactive(interactive)
       430│
     → 431│         exit_code = self._run_command(command, io)
       432│         self._running_command = None
       433│

  21  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\cleo\application.py:473 in _run_command
       471│
       472│         if error is not None:
     → 473│             raise error
       474│
       475│         return terminate_event.exit_code

  20  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\cleo\application.py:457 in _run_command
       455│
       456│             if command_event.command_should_run():
     → 457│                 exit_code = command.run(io)
       458│             else:
       459│                 exit_code = ConsoleCommandEvent.RETURN_CODE_DISABLED

  19  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\cleo\commands\base_command.py:119 in run
       117│         io.input.validate()
       118│
     → 119│         status_code = self.execute(io)
       120│
       121│         if status_code is None:

  18  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\cleo\commands\command.py:62 in execute
        60│
        61│         try:
     →  62│             return self.handle()
        63│         except KeyboardInterrupt:
        64│             return 1

  17  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\console\commands\add.py:271 in handle
       269│         self.installer.whitelist([r["name"] for r in requirements])
       270│
     → 271│         status = self.installer.run()
       272│
       273│         if status == 0 and not self.option("dry-run"):

  16  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\installation\installer.py:104 in run
       102│             self.verbose(True)
       103│
     → 104│         return self._do_install()
       105│
       106│     def dry_run(self, dry_run: bool = True) -> Installer:

  15  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\installation\installer.py:241 in _do_install
       239│                 source_root=self._env.path.joinpath("src")
       240│             ):
     → 241│                 ops = solver.solve(use_latest=self._whitelist).calculate_operations()
       242│         else:
       243│             self._io.write_line("Installing dependencies from lock file")

  14  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\puzzle\solver.py:72 in solve
        70│         with self._progress(), self._provider.use_latest_for(use_latest or []):
        71│             start = time.time()
     →  72│             packages, depths = self._solve()
        73│             end = time.time()
        74│

  13  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\puzzle\solver.py:155 in _solve
       153│
       154│         try:
     → 155│             result = resolve_version(self._package, self._provider)
       156│
       157│             packages = result.packages

  12  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\mixology\__init__.py:18 in resolve_version
        16│     solver = VersionSolver(root, provider)
        17│
     →  18│     return solver.solve()
        19│

  11  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\mixology\version_solver.py:112 in solve
       110│             while next is not None:
       111│                 self._propagate(next)
     → 112│                 next = self._choose_package_version()
       113│
       114│             return self._result()

  10  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\mixology\version_solver.py:430 in _choose_package_version
       428│             package = locked
       429│
     → 430│         package = self._provider.complete_package(package)
       431│
       432│         conflict = False

   9  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\puzzle\provider.py:482 in complete_package
       480│                 dependency_package = DependencyPackage(
       481│                     dependency,
     → 482│                     self._pool.package(
       483│                         package.pretty_name,
       484│                         package.version,

   8  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\repositories\repository_pool.py:178 in package
       176│         for repo in self.repositories:
       177│             try:
     → 178│                 return repo.package(name, version, extras=extras)
       179│             except PackageNotFound:
       180│                 continue

   7  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\repositories\cached_repository.py:76 in package
        74│         extras: list[str] | None = None,
        75│     ) -> Package:
     →  76│         return self.get_release_info(canonicalize_name(name), version).to_package(
        77│             name=name, extras=extras
        78│         )

   6  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\repositories\cached_repository.py:64 in get_release_info
        62│                 level="debug",
        63│             )
     →  64│             cached = self._get_release_info(name, version)
        65│
        66│             self._release_cache.put(f"{name}:{version}", cached)

   5  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\repositories\pypi_repository.py:205 in _get_release_info
       203│                 return data.asdict()
       204│
     → 205│             info = self._get_info_from_urls(urls)
       206│
       207│             data.requires_dist = info.requires_dist

   4  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\repositories\http_repository.py:205 in _get_info_from_urls
       203│                 return self._get_info_from_wheel(first_wheel)
       204│
     → 205│         return self._get_info_from_sdist(urls["sdist"][0])
       206│
       207│     def _links_to_data(self, links: list[Link], data: PackageInfo) -> dict[str, Any]:

   3  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\repositories\http_repository.py:99 in _get_info_from_sdist
        97│
        98│         with self._cached_or_downloaded_file(Link(url)) as filepath:
     →  99│             return PackageInfo.from_sdist(filepath)
       100│
       101│     def _get_info_from_urls(self, urls: dict[str, list[str]]) -> PackageInfo:

   2  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\inspection\info.py:519 in from_sdist
       517│         """
       518│         if path.is_file():
     → 519│             return cls._from_sdist_file(path=path)
       520│
       521│         # if we get here then it is neither an sdist instance nor a file

   1  ~\AppData\Local\Programs\Python\Python310\lib\site-packages\poetry\inspection\info.py:313 in _from_sdist_file
       311│         with temporary_directory() as tmp_str:
       312│             tmp = Path(tmp_str)
     → 313│             with context(path.as_posix()) as archive:
       314│                 archive.extractall(tmp.as_posix())
       315│

  ReadError

  file could not be opened successfully:
  - method gz: ReadError('not a gzip file')
  - method bz2: ReadError('not a bzip2 file')
  - method xz: ReadError('not an lzma file')
  - method tar: ReadError('invalid header')

  at ~\AppData\Local\Programs\Python\Python310\lib\tarfile.py:1639 in open
      1635│                     if fileobj is not None:
      1636│                         fileobj.seek(saved_pos)
      1637│                     continue
      1638│             error_msgs_summary = '\n'.join(error_msgs)
    → 1639│             raise ReadError(f"file could not be opened successfully:\n{error_msgs_summary}")
      1640│
      1641│         elif ":" in mode:
      1642│             filemode, comptype = mode.split(":", 1)
      1643│             filemode = filemode or "r"

pip install nats-py works fine with 2.2.0 tho. Update: downgrading poetry to 1.4.0 the installation works fine.

commented

fake alarm: clearing cache poetry cache clear --all pypi solved the issue. Sorry!

thanks for the update :)