From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id aBPlK0eiZmOBSwEAbAwnHQ (envelope-from ) for ; Sat, 05 Nov 2022 18:49:59 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id YHTcK0eiZmOPsAAAauVa8A (envelope-from ) for ; Sat, 05 Nov 2022 18:49:59 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 400CB2ABE9 for ; Sat, 5 Nov 2022 18:49:59 +0100 (CET) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1orNGb-0004M1-LR; Sat, 05 Nov 2022 13:47:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1orNGa-0004Ip-0i for guix-devel@gnu.org; Sat, 05 Nov 2022 13:47:36 -0400 Received: from mx2.dismail.de ([159.69.191.136]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1orNGW-0003J4-3l for guix-devel@gnu.org; Sat, 05 Nov 2022 13:47:35 -0400 Received: from mx2.dismail.de (localhost [127.0.0.1]) by mx2.dismail.de (OpenSMTPD) with ESMTP id 0af87cb5; Sat, 5 Nov 2022 18:47:28 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=dismail.de; h=date :message-id:from:to:cc:subject:references:mime-version :content-type:content-transfer-encoding; s=20190914; bh=7tCZAbun l6a5IU75ftggV3T2DULeYCU7BnVt/mpmyds=; b=P4lV/F0UCqudHFeLnnIQz//H A80RBm/gMDwdVr530OwfKFejn/ya3aSaE0ednHDVo/vjGBFDdoc++xZOyH41cb9A CEEyKYdUtWSdf8XtEHE3W5fa2C4Jwm9tCL/JarP8J1vCsUFzDTsRiXFH07MhEYo1 s1EwHkcu54xDceA0RL69aJ6U//X+KAWt3ERy1dXeDs4aFm/fhZyhn1ooPanCAZwB GNdnl6/ohguKXEV3rjWqRIfPcIFpjB5+AeHA0Cfo6gkWUxo17FYuCbH2pE48FChA M9PmaHiEzoAqrvqgJ8XdAAP6pUf1qMvnV/rFtFoFmkwePemxjpKk2LBZpiTWYA== Received: from smtp2.dismail.de ( [10.240.26.12]) by mx2.dismail.de (OpenSMTPD) with ESMTP id 681c5561; Sat, 5 Nov 2022 18:47:28 +0100 (CET) Received: from smtp2.dismail.de (localhost [127.0.0.1]) by smtp2.dismail.de (OpenSMTPD) with ESMTP id 124d1d4c; Sat, 5 Nov 2022 18:47:28 +0100 (CET) Received: by dismail.de (OpenSMTPD) with ESMTPSA id 221d3107 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Sat, 5 Nov 2022 18:47:27 +0100 (CET) Date: Sat, 5 Nov 2022 12:47:19 -0500 Message-ID: <20221105124719.GB17020@dismail.de> From: jgart To: Guix Devel Cc: Lars-Dominik Braun , zimoun Subject: guix pypi-ls References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=159.69.191.136; envelope-from=jgart@dismail.de; helo=mx2.dismail.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "Guix-devel" Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1667670599; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=IBUSVlKfOKdI/ePD5wLKvOGfUeAmg5P/xo1d1Vcv76I=; b=qwyWDQKXmKHZoQyn0gogL57q2uLtDdVzOGfI6aPF4bSWEyOM21UgMDYja39W/HcIoGMiZ+ O/8RY582lG223WNs0ZxyIB8SkG8+Pfr58qab3NZf1gJtjhuWwNwCaTyxFPryyneGQj84uk 9ciY7lF2OmR1HZwAAeqA/sNZzcKc6gGYeJDsRrmBoPtFadg/J3q9EFhZFCUWfAV3elHWnl QGtAEsySuwIybeE5m0/CAA3rrJ/8yFaXnRjYTgzTX0ckexT1sGNzoj76lm/9Ce6sQTXezn jlJ3w8a8HA2+yMEgwQLuzZu3+LixhcLTWsieIcrc97A8nGeb9M13XB2fsKW4wA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1667670599; a=rsa-sha256; cv=none; b=oabDFlNlXeHzE7yGCRk1ehxQhDMxJ5LweF31IxRtf7P70QohckQMgZo4XH2H8bFihIveQX qPrdoxhyaqGUJjxAeBEw6grF5p/SzgWWHl5JWv5/XGwu4/vCEcBpWLX6cOwQ3CP9imXaU2 8oxAgwnVxD+IOsjDAmdpoiBng1iClZsXvUkJl0ycfsMCBEX+qotMlwv6tGe1UnsYr0i6TQ 9eXoNyFGDFmxOxlgf5+iQixlFPKV6XN6H7IMmb7tPkiouAzNqbYy7uMNFfiuEqfN9oGJ/7 FIi0F65KVsC28EXsPa3CWqIbH7TUNxySUzJ94mH4UjsFwHAUIEA31LWvnJATyA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=dismail.de header.s=20190914 header.b="P4lV/F0U"; dmarc=pass (policy=reject) header.from=dismail.de; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -3.71 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=dismail.de header.s=20190914 header.b="P4lV/F0U"; dmarc=pass (policy=reject) header.from=dismail.de; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 400CB2ABE9 X-Spam-Score: -3.71 X-Migadu-Scanner: scn1.migadu.com X-TUID: AHvTtsM0MhcI hi, I have this one off script I call `pypi-ls` for listing tar files on standard output from pypi to see if they contain tests: #!/bin/env sh exec wget -qO- $1 | tar xvz Would this feature/idea be useful to be integrated into the guix cli somehow? Maybe integrated into the pypi importer? Should the pypi importer eventually warn if tests are missing automatically? This is how I currently use `pypi-ls` $ pypi-ls https://files.pythonhosted.org/packages/e4/f9/c888a9cb6e959e7619262e21c17bf7d9afcba31a29120a8bc2de4242a488/pygls-0.13.0.tar.gz pygls-0.13.0/ pygls-0.13.0/.editorconfig pygls-0.13.0/.gitattributes pygls-0.13.0/.github/ pygls-0.13.0/.github/FUNDING.yml pygls-0.13.0/.github/workflows/ pygls-0.13.0/.github/workflows/ci.yml pygls-0.13.0/.github/workflows/json-extension.yml pygls-0.13.0/.gitignore pygls-0.13.0/CHANGELOG.md pygls-0.13.0/CODE_OF_CONDUCT.md pygls-0.13.0/CONTRIBUTING.md pygls-0.13.0/CONTRIBUTORS.md pygls-0.13.0/Implementations.md pygls-0.13.0/LICENSE.txt pygls-0.13.0/MANIFEST.in pygls-0.13.0/PKG-INFO pygls-0.13.0/PULL_REQUEST_TEMPLATE.md pygls-0.13.0/README.md pygls-0.13.0/RELEASING.md pygls-0.13.0/ThirdPartyNotices.txt pygls-0.13.0/assets/ pygls-0.13.0/assets/img/ pygls-0.13.0/assets/img/readme/ pygls-0.13.0/assets/img/readme/completion-list.png pygls-0.13.0/docs/ pygls-0.13.0/docs/Makefile pygls-0.13.0/docs/make.bat pygls-0.13.0/docs/source/ pygls-0.13.0/docs/source/conf.py pygls-0.13.0/docs/source/index.rst pygls-0.13.0/docs/source/pages/ pygls-0.13.0/docs/source/pages/advanced_usage.rst pygls-0.13.0/docs/source/pages/getting_started.rst pygls-0.13.0/docs/source/pages/testing.rst pygls-0.13.0/docs/source/pages/tutorial.rst pygls-0.13.0/examples/ pygls-0.13.0/examples/README.md pygls-0.13.0/examples/fountain-extension/ pygls-0.13.0/examples/fountain-extension/.gitignore pygls-0.13.0/examples/fountain-extension/README.md pygls-0.13.0/examples/fountain-extension/demo.png pygls-0.13.0/examples/fountain-extension/fountain-language-configuration.json pygls-0.13.0/examples/fountain-extension/package-lock.json pygls-0.13.0/examples/fountain-extension/package.json pygls-0.13.0/examples/fountain-extension/src/ pygls-0.13.0/examples/fountain-extension/src/client.ts pygls-0.13.0/examples/fountain-extension/src/server.py pygls-0.13.0/examples/fountain-extension/src/server.ts pygls-0.13.0/examples/fountain-extension/tsconfig.json pygls-0.13.0/examples/fountain-extension/tunnel.png pygls-0.13.0/examples/fountain-extension/webpack.config.js pygls-0.13.0/examples/json-extension/ pygls-0.13.0/examples/json-extension/.eslintrc.yml pygls-0.13.0/examples/json-extension/.gitignore pygls-0.13.0/examples/json-extension/.vscode/ pygls-0.13.0/examples/json-extension/.vscode/launch.json pygls-0.13.0/examples/json-extension/.vscode/tasks.json pygls-0.13.0/examples/json-extension/.vscodeignore pygls-0.13.0/examples/json-extension/LICENSE.txt pygls-0.13.0/examples/json-extension/README.md pygls-0.13.0/examples/json-extension/client/ pygls-0.13.0/examples/json-extension/client/src/ pygls-0.13.0/examples/json-extension/client/src/extension.ts pygls-0.13.0/examples/json-extension/package-lock.json pygls-0.13.0/examples/json-extension/package.json pygls-0.13.0/examples/json-extension/server/ pygls-0.13.0/examples/json-extension/server/__init__.py pygls-0.13.0/examples/json-extension/server/__main__.py pygls-0.13.0/examples/json-extension/server/server.py pygls-0.13.0/examples/json-extension/server/tests/ pygls-0.13.0/examples/json-extension/server/tests/__init__.py pygls-0.13.0/examples/json-extension/server/tests/unit/ pygls-0.13.0/examples/json-extension/server/tests/unit/__init__.py pygls-0.13.0/examples/json-extension/server/tests/unit/test_features.py pygls-0.13.0/examples/json-extension/tsconfig.json pygls-0.13.0/pygls/ pygls-0.13.0/pygls/__init__.py pygls-0.13.0/pygls/capabilities.py pygls-0.13.0/pygls/constants.py pygls-0.13.0/pygls/exceptions.py pygls-0.13.0/pygls/feature_manager.py pygls-0.13.0/pygls/lsp/ pygls-0.13.0/pygls/lsp/__init__.py pygls-0.13.0/pygls/lsp/methods.py pygls-0.13.0/pygls/lsp/types/ pygls-0.13.0/pygls/lsp/types/__init__.py pygls-0.13.0/pygls/lsp/types/basic_structures.py pygls-0.13.0/pygls/lsp/types/client.py pygls-0.13.0/pygls/lsp/types/diagnostics.py pygls-0.13.0/pygls/lsp/types/file_operations.py pygls-0.13.0/pygls/lsp/types/general_messages.py pygls-0.13.0/pygls/lsp/types/language_features/ pygls-0.13.0/pygls/lsp/types/language_features/__init__.py pygls-0.13.0/pygls/lsp/types/language_features/call_hierarchy.py pygls-0.13.0/pygls/lsp/types/language_features/code_action.py pygls-0.13.0/pygls/lsp/types/language_features/code_lens.py pygls-0.13.0/pygls/lsp/types/language_features/color_presentation.py pygls-0.13.0/pygls/lsp/types/language_features/completion.py pygls-0.13.0/pygls/lsp/types/language_features/declaration.py pygls-0.13.0/pygls/lsp/types/language_features/definition.py pygls-0.13.0/pygls/lsp/types/language_features/document_color.py pygls-0.13.0/pygls/lsp/types/language_features/document_highlight.py pygls-0.13.0/pygls/lsp/types/language_features/document_link.py pygls-0.13.0/pygls/lsp/types/language_features/document_symbol.py pygls-0.13.0/pygls/lsp/types/language_features/folding_range.py pygls-0.13.0/pygls/lsp/types/language_features/formatting.py pygls-0.13.0/pygls/lsp/types/language_features/hover.py pygls-0.13.0/pygls/lsp/types/language_features/implementation.py pygls-0.13.0/pygls/lsp/types/language_features/linked_editing_range.py pygls-0.13.0/pygls/lsp/types/language_features/monikers.py pygls-0.13.0/pygls/lsp/types/language_features/on_type_formatting.py pygls-0.13.0/pygls/lsp/types/language_features/prepare_rename.py pygls-0.13.0/pygls/lsp/types/language_features/range_formatting.py pygls-0.13.0/pygls/lsp/types/language_features/references.py pygls-0.13.0/pygls/lsp/types/language_features/rename.py pygls-0.13.0/pygls/lsp/types/language_features/selection_range.py pygls-0.13.0/pygls/lsp/types/language_features/semantic_tokens.py pygls-0.13.0/pygls/lsp/types/language_features/signature_help.py pygls-0.13.0/pygls/lsp/types/language_features/type_definition.py pygls-0.13.0/pygls/lsp/types/text_synchronization.py pygls-0.13.0/pygls/lsp/types/window.py pygls-0.13.0/pygls/lsp/types/workspace.py pygls-0.13.0/pygls/progress.py pygls-0.13.0/pygls/protocol.py pygls-0.13.0/pygls/py.typed pygls-0.13.0/pygls/server.py pygls-0.13.0/pygls/uris.py pygls-0.13.0/pygls/workspace.py pygls-0.13.0/pygls.egg-info/ pygls-0.13.0/pygls.egg-info/PKG-INFO pygls-0.13.0/pygls.egg-info/SOURCES.txt pygls-0.13.0/pygls.egg-info/dependency_links.txt pygls-0.13.0/pygls.egg-info/not-zip-safe pygls-0.13.0/pygls.egg-info/requires.txt pygls-0.13.0/pygls.egg-info/top_level.txt pygls-0.13.0/pyodide_testrunner/ pygls-0.13.0/pyodide_testrunner/.gitignore pygls-0.13.0/pyodide_testrunner/index.html pygls-0.13.0/pyodide_testrunner/requirements.txt pygls-0.13.0/pyodide_testrunner/run.py pygls-0.13.0/pyodide_testrunner/test-runner.js pygls-0.13.0/pyproject.toml pygls-0.13.0/setup.cfg pygls-0.13.0/setup.py pygls-0.13.0/tests/ pygls-0.13.0/tests/__init__.py pygls-0.13.0/tests/_init_server_stall_fix_hack.py pygls-0.13.0/tests/conftest.py pygls-0.13.0/tests/ls_setup.py pygls-0.13.0/tests/lsp/ pygls-0.13.0/tests/lsp/__init__.py pygls-0.13.0/tests/lsp/semantic_tokens/ pygls-0.13.0/tests/lsp/semantic_tokens/__init__.py pygls-0.13.0/tests/lsp/semantic_tokens/test_delta_missing_legend.py pygls-0.13.0/tests/lsp/semantic_tokens/test_delta_missing_legend_none.py pygls-0.13.0/tests/lsp/semantic_tokens/test_full_missing_legend.py pygls-0.13.0/tests/lsp/semantic_tokens/test_range.py pygls-0.13.0/tests/lsp/semantic_tokens/test_range_missing_legends.py pygls-0.13.0/tests/lsp/semantic_tokens/test_semantic_tokens_full.py pygls-0.13.0/tests/lsp/test_call_hierarchy.py pygls-0.13.0/tests/lsp/test_code_action.py pygls-0.13.0/tests/lsp/test_code_lens.py pygls-0.13.0/tests/lsp/test_color_presentation.py pygls-0.13.0/tests/lsp/test_completion.py pygls-0.13.0/tests/lsp/test_declaration.py pygls-0.13.0/tests/lsp/test_definition.py pygls-0.13.0/tests/lsp/test_document_color.py pygls-0.13.0/tests/lsp/test_document_highlight.py pygls-0.13.0/tests/lsp/test_document_link.py pygls-0.13.0/tests/lsp/test_document_symbol.py pygls-0.13.0/tests/lsp/test_errors.py pygls-0.13.0/tests/lsp/test_folding_range.py pygls-0.13.0/tests/lsp/test_formatting.py pygls-0.13.0/tests/lsp/test_hover.py pygls-0.13.0/tests/lsp/test_implementation.py pygls-0.13.0/tests/lsp/test_linked_editing_range.py pygls-0.13.0/tests/lsp/test_moniker.py pygls-0.13.0/tests/lsp/test_on_type_formatting.py pygls-0.13.0/tests/lsp/test_prepare_rename.py pygls-0.13.0/tests/lsp/test_progress.py pygls-0.13.0/tests/lsp/test_range_formatting.py pygls-0.13.0/tests/lsp/test_references.py pygls-0.13.0/tests/lsp/test_rename.py pygls-0.13.0/tests/lsp/test_selection_range.py pygls-0.13.0/tests/lsp/test_signature_help.py pygls-0.13.0/tests/lsp/test_type_definition.py pygls-0.13.0/tests/test_document.py pygls-0.13.0/tests/test_feature_manager.py pygls-0.13.0/tests/test_language_server.py pygls-0.13.0/tests/test_protocol.py pygls-0.13.0/tests/test_server_connection.py pygls-0.13.0/tests/test_types.py pygls-0.13.0/tests/test_uris.py pygls-0.13.0/tests/test_workspace.py pygls-0.13.0/tox.ini Then I can see in the above standard output that the tests are indeed on PyPi. all best, jgart