From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms11 with LMTPS id 2BjuKvPej1+EJQAA0tVLHw (envelope-from ) for ; Wed, 21 Oct 2020 07:10:43 +0000 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id sDS9JvPej1/fBAAAbx9fmQ (envelope-from ) for ; Wed, 21 Oct 2020 07:10:43 +0000 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 4DD269403C9 for ; Wed, 21 Oct 2020 07:10:42 +0000 (UTC) Received: from localhost ([::1]:49732 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kV8Gd-00017d-Hj for larch@yhetil.org; Wed, 21 Oct 2020 03:10:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53564) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kV8GT-00017I-4x for help-guix@gnu.org; Wed, 21 Oct 2020 03:10:29 -0400 Received: from flashner.co.il ([178.62.234.194]:41646) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kV8GO-000484-V7 for help-guix@gnu.org; Wed, 21 Oct 2020 03:10:28 -0400 Received: from localhost (unknown [141.226.13.8]) by flashner.co.il (Postfix) with ESMTPSA id 40370401E5; Wed, 21 Oct 2020 07:10:23 +0000 (UTC) Date: Wed, 21 Oct 2020 10:09:50 +0300 From: Efraim Flashner To: Zelphir Kaltstahl Subject: Re: guix import error + New: setting up a jupyterlab environment Message-ID: <20201021070950.GR9117@E5400> References: <87d01ibbo3.fsf@nckx> <74577458-7e58-4647-fd3d-62047b6d484b@posteo.de> <20201018163550.GI974@E5400> <9e21d4d8-aca7-5742-3e2e-70334711321e@posteo.de> <184E2A08-C711-43B1-8CBF-3647FBB0EAE8@flashner.co.il> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="msgLTjjeumHWYklJ" Content-Disposition: inline In-Reply-To: X-PGP-Key-ID: 0x41AAE7DCCA3D8351 X-PGP-Key: https://flashner.co.il/~efraim/efraim_flashner.asc X-PGP-Fingerprint: A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Received-SPF: pass client-ip=178.62.234.194; envelope-from=efraim@flashner.co.il; helo=flashner.co.il X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/21 02:25:11 X-ACL-Warn: Detected OS = ??? X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-guix@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: help-guix@gnu.org Errors-To: help-guix-bounces+larch=yhetil.org@gnu.org Sender: "Help-Guix" X-Scanner: scn0 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of help-guix-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=help-guix-bounces@gnu.org X-Spam-Score: -2.61 X-TUID: X1sGNmERfjmb --msgLTjjeumHWYklJ Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, Oct 19, 2020 at 08:19:05PM +0200, Zelphir Kaltstahl wrote: > Hello Efraim, >=20 > Thanks for your patience! It seems with that I am getting quite far (at > least it feels like making progress, or even being close to have a > working environment), up to the "check phase". There some tests failing > in the "check phase". Here is what I am getting now, regardless of > whether I stick ("python-ipykernel" ,python-ipykernel) in the native > inputs or propagated inputs: For python packages it doesn't matter at build time, it's more about if it's needed at build time (native-inputs) or if it's needed to run the python program (propagated-inputs) since we don't have a good way to tell python to keep a reference to other python packages. > ~~~~START~~~~ > running install_egg_info > Copying jupyterlab_server.egg-info to /gnu/store/2h44ldpcqqd0q7hqpbcqdavc= nbjsibfb-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/jupyter= lab_server-1.2.0-py3.8.egg-info > running install_scripts > phase `install' succeeded after 0.3 seconds > starting phase `wrap' > find-files: /gnu/store/2h44ldpcqqd0q7hqpbcqdavcnbjsibfb-python-jupyterlab= -server-1.2.0/bin: No such file or directory > find-files: /gnu/store/2h44ldpcqqd0q7hqpbcqdavcnbjsibfb-python-jupyterlab= -server-1.2.0/sbin: No such file or directory > phase `wrap' succeeded after 0.0 seconds > starting phase `check' > running "python setup.py" with command "test" and parameters () > running test > running egg_info > writing jupyterlab_server.egg-info/PKG-INFO > writing dependency_links to jupyterlab_server.egg-info/dependency_links.t= xt > writing requirements to jupyterlab_server.egg-info/requires.txt > writing top-level names to jupyterlab_server.egg-info/top_level.txt > reading manifest file 'jupyterlab_server.egg-info/SOURCES.txt' > reading manifest template 'MANIFEST.in' > warning: no previously-included files matching '*~' found anywhere in dis= tribution > warning: no previously-included files matching '*.pyc' found anywhere in = distribution > warning: no previously-included files matching '*.pyo' found anywhere in = distribution > warning: no previously-included files matching '.git' found anywhere in d= istribution > warning: no previously-included files matching '.ipynb_checkpoints' found= anywhere in distribution > writing manifest file 'jupyterlab_server.egg-info/SOURCES.txt' > running build_ext > test_get (jupyterlab_server.tests.test_settings_api.SettingsAPITest) ... = ERROR > test_get_bad (jupyterlab_server.tests.test_settings_api.SettingsAPITest) = =2E.. ERROR > test_listing (jupyterlab_server.tests.test_settings_api.SettingsAPITest) = =2E.. ERROR > test_patch (jupyterlab_server.tests.test_settings_api.SettingsAPITest) ..= =2E ERROR > test_patch_bad_data (jupyterlab_server.tests.test_settings_api.SettingsAP= ITest) ... ERROR > test_patch_wrong_id (jupyterlab_server.tests.test_settings_api.SettingsAP= ITest) ... ERROR > test_bad_put (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITe= st) ... ERROR > test_blank_put (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPI= Test) ... ERROR > test_delete (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITes= t) ... ERROR > test_get (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest) = =2E.. ERROR > test_listing (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITe= st) ... ERROR > test_put (jupyterlab_server.tests.test_workspaces_api.WorkspacesAPITest) = =2E.. ERROR >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_get (jupyterlab_server.tests.test_settings_api.SettingsAPITes= t) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_settings_api.py", line 31, in setUp > dst =3D os.path.join(self.lab_config.schemas_dir, '@jupyterlab') > AttributeError: 'SettingsAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_get_bad (jupyterlab_server.tests.test_settings_api.SettingsAP= ITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_settings_api.py", line 31, in setUp > dst =3D os.path.join(self.lab_config.schemas_dir, '@jupyterlab') > AttributeError: 'SettingsAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_listing (jupyterlab_server.tests.test_settings_api.SettingsAP= ITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_settings_api.py", line 31, in setUp > dst =3D os.path.join(self.lab_config.schemas_dir, '@jupyterlab') > AttributeError: 'SettingsAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_patch (jupyterlab_server.tests.test_settings_api.SettingsAPIT= est) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_settings_api.py", line 31, in setUp > dst =3D os.path.join(self.lab_config.schemas_dir, '@jupyterlab') > AttributeError: 'SettingsAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_patch_bad_data (jupyterlab_server.tests.test_settings_api.Set= tingsAPITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_settings_api.py", line 31, in setUp > dst =3D os.path.join(self.lab_config.schemas_dir, '@jupyterlab') > AttributeError: 'SettingsAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_patch_wrong_id (jupyterlab_server.tests.test_settings_api.Set= tingsAPITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_settings_api.py", line 31, in setUp > dst =3D os.path.join(self.lab_config.schemas_dir, '@jupyterlab') > AttributeError: 'SettingsAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_bad_put (jupyterlab_server.tests.test_workspaces_api.Workspac= esAPITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_workspaces_api.py", line 34, in se= tUp > dst =3D os.path.join(self.lab_config.workspaces_dir, item) > AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_blank_put (jupyterlab_server.tests.test_workspaces_api.Worksp= acesAPITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_workspaces_api.py", line 34, in se= tUp > dst =3D os.path.join(self.lab_config.workspaces_dir, item) > AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_delete (jupyterlab_server.tests.test_workspaces_api.Workspace= sAPITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_workspaces_api.py", line 34, in se= tUp > dst =3D os.path.join(self.lab_config.workspaces_dir, item) > AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_get (jupyterlab_server.tests.test_workspaces_api.WorkspacesAP= ITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_workspaces_api.py", line 34, in se= tUp > dst =3D os.path.join(self.lab_config.workspaces_dir, item) > AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_listing (jupyterlab_server.tests.test_workspaces_api.Workspac= esAPITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_workspaces_api.py", line 34, in se= tUp > dst =3D os.path.join(self.lab_config.workspaces_dir, item) > AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config' >=20 > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: test_put (jupyterlab_server.tests.test_workspaces_api.WorkspacesAP= ITest) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/tmp/guix-build-python-jupyterlab-server-1.2.0.drv-0/jupyterlab_s= erver-1.2.0/jupyterlab_server/tests/test_workspaces_api.py", line 34, in se= tUp > dst =3D os.path.join(self.lab_config.workspaces_dir, item) > AttributeError: 'WorkspacesAPITest' object has no attribute 'lab_config' >=20 > ---------------------------------------------------------------------- > Ran 12 tests in 0.001s >=20 > FAILED (errors=3D12) > Test failed: > error: Test failed: > command "python" "-c" "import setuptools, tokenize;__file__=3D'setup.py';= f=3Dgetattr(tokenize, 'open', open)(__file__);code=3Df.read().replace('\\r\= \n', '\\n');f.close();exec(compile(code, __file__, 'exec'))" "test" failed = with status 1 > ~~~~~END~~~~~ >=20 > I have some thoughts about this: >=20 > The Python error does not really tell me what is wrong. I don't know why > the `WorkspacesAPITest` does not have an attribute named `lab_config`. >=20 > One can see, that those are all API tests. Since there were problems in > the previous step with network, perhaps it is a network thing here as > well? (Is network, even if localhost for testing, available in the > "check phase"?) It's not likely related to networking, the error messages would mention unavailable targets or something similar. > It could also simply be, that some PyPI package has failing tests. I > don't know how one could then skip such tests. Assuming WorkspacesAPITest does actually have an attribute named lab_config then you'll want to add the installed package to the python path during the check phase. There are a number of packages which do this. I can never remember the syntax so I always grep for 'add-installed-pythonpath' when it comes up. > I guess I will summarize everything in the end and put it in a > repository as a kind of "guide", so that others can use it or learn from > the process. I think people would really enjoy that. I picked up most of my packaging know-how from looking at other packages. > Regards, > Zelphir >=20 > On 10/19/20 6:54 PM, Efraim Flashner wrote: > > It looks like you need to add python-ipykernel to native-inputs. > > Unless it's needed to run the program and not just for the test suite, > > in which case it should go in propagated-inputs. There's no network > > available in the build environment so it can't retrieve ipykernel > > while building. > > > > > > On October 19, 2020 2:31:53 PM UTC, Zelphir Kaltstahl > > wrote: > > > > Hello Efraim! > > > > Thank you! Your idea of replacing "-" with "_" seems to partially > > help: > > > > The package is downloaded and byte compiled. However, afterwards > > there is a problem, when it tries to copy the byte-compiled files > > in the "wrap phase" (comments inserted in some places): > > > > ~~~~START~~~~ > > ### ... a lot of output before this ... > > > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/__init= __.py to __init__.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/_versi= on.py to _version.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/app.py= to app.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/handle= rs.py to handlers.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/listin= gs_handler.py to listings_handler.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/proces= s.py to process.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/proces= s_app.py to process_app.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/server= =2Epy to server.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/server= test.py to servertest.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/settin= gs_handler.py to settings_handler.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/themes= _handler.py to themes_handler.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/worksp= aces_handler.py to workspaces_handler.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/tests/= __init__.py to __init__.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/tests/= test_settings_api.py to test_settings_api.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/tests/= test_workspaces_api.py to test_workspaces_api.cpython-38.pyc > > byte-compiling /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-j= upyterlab-server-1.2.0/lib/python3.8/site-packages/jupyterlab_server/tests/= utils.py to utils.cpython-38.pyc > > > > ### ... seems byte-compiling went without problems, but not comes t= he problem ... > > > > running install_egg_info > > Copying jupyterlab_server.egg-info to /gnu/store/yr7q21bws1xgx3p2dy= 9cfdiknjpsajm6-python-jupyterlab-server-1.2.0/lib/python3.8/site-packages/j= upyterlab_server-1.2.0-py3.8.egg-info > > running install_scripts > > phase `install' succeeded after 0.3 seconds > > starting phase `wrap' > > find-files: /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupy= terlab-server-1.2.0/bin: No such file or directory > > find-files: /gnu/store/yr7q21bws1xgx3p2dy9cfdiknjpsajm6-python-jupy= terlab-server-1.2.0/sbin: No such file or directory > > phase `wrap' succeeded after 0.0 seconds > > starting phase `check' > > running "python setup.py" with command "test" and parameters () > > running test > > Searching for ipykernel > > Reading https://pypi.org/simple/ipykernel/ > > Download error on https://pypi.org/simple/ipykernel/: [Errno -2] Na= me or service not known -- Some packages may not be found! > > Couldn't find index page for 'ipykernel' (maybe misspelled?) > > Scanning index of all packages (this may take a while) > > Reading https://pypi.org/simple/ > > Download error on https://pypi.org/simple/: [Errno -2] Name or serv= ice not known -- Some packages may not be found! > > No local packages or working download links found for ipykernel > > error: Could not find suitable distribution for Requirement.parse('= ipykernel') > > command "python" "-c" "import setuptools, tokenize;__file__=3D'setu= p.py';f=3Dgetattr(tokenize, 'open', open)(__file__);code=3Df.read().replace= ('\\r\\n', '\\n');f.close();exec(compile(code, __file__, 'exec'))" "test" f= ailed with status 1 > > ~~~~~END~~~~~ > > > > So it seems, that while the download URL is corrected, there is > > another place, where Guix has an error now, resulting in a final > > error shown in command line: > > > > ~~~~START~~~~ > > $ guix time-machine --channels=3Dchannels.scm -- environment --mani= fest=3Dmanifest.scm --load=3Djupyterlab.scm > > Updating channel 'guix' from Git repository at 'https://git.savanna= h.gnu.org/git/guix.git'... > > substitute: updating substitutes from 'https://ci.guix.gnu.org'... = 100.0% > > The following derivations will be built: > > /gnu/store/wzmfn9m45bmsbrx094rv3lf3w0rpmw49-python-pytest-check-= links-0.3.0.drv > > /gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyterlab-se= rver-1.2.0.drv > > /gnu/store/32a28hd7aainwn0hfsnf3blh8prmfz61-jupyterlab_server-1.= 2.0.tar.gz.drv > > > > 3,9 MB will be downloaded > > downloading from https://ci.guix.gnu.org/nar/lzip/54kpl9psx16jwic4g= pnjwh44kim04wlk-python-notebook-5.7.4 ... > > python-notebook-5.7.4 3.7MiB = = = 5.1MiB/s 00:01 [##################] 100.0% > > > > building /gnu/store/32a28hd7aainwn0hfsnf3blh8prmfz61-jupyterlab_ser= ver-1.2.0.tar.gz.drv... > > downloading from https://files.pythonhosted.org/packages/source/j/j= upyterlab_server/jupyterlab_server-1.2.0.tar.gz ... > > building /gnu/store/wzmfn9m45bmsbrx094rv3lf3w0rpmw49-python-pytest-= check-links-0.3.0.drv... > > building /gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyter= lab-server-1.2.0.drv... > > \ 'check' phasebuilder for `/gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb= 401a-python-jupyterlab-server-1.2.0.drv' failed with exit code 1 > > build of /gnu/store/96xf5mrg134mcsp01b0m1qs1lxkb401a-python-jupyter= lab-server-1.2.0.drv failed > > View build log at '/var/log/guix/drvs/96/xf5mrg134mcsp01b0m1qs1lxkb= 401a-python-jupyterlab-server-1.2.0.drv.bz2'. > > guix environment: error: build of `/gnu/store/96xf5mrg134mcsp01b0m1= qs1lxkb401a-python-jupyterlab-server-1.2.0.drv' failed > > ~~~~~END~~~~~ > > > > Apparently ipykernel is not found, but when I visit > > https://pypi.org/simple/ipykernel/, I see packages there. > > > > From the logs: > > > > ~~~~START~~~~ > > Download error on https://pypi.org/simple/ipykernel/: [Errno -2] Na= me or service not known -- Some packages may not be found! > > Couldn't find index page for 'ipykernel' (maybe misspelled?) > > ~~~~~END~~~~~ > > > > Do I need to add another input in my `jupyterlab.scm`? (How?) Or > > perhaps I need to create a separate `ipykernel.scm` which contains > > the output of `guix import pypi --recursive ipykernel`? > > > > However, it somehow seems to fail for PyPI simple in general (from > > the logs again): > > > > ~~~~START~~~~ > > Reading https://pypi.org/simple/ > > Download error on https://pypi.org/simple/: [Errno -2] Name or serv= ice not known -- Some packages may not be found! > > No local packages or working download links found for ipykernel > > error: Could not find suitable distribution for Requirement.parse('= ipykernel') > > command "python" "-c" "import setuptools, tokenize;__file__=3D'setu= p.py';f=3Dgetattr(tokenize, 'open', open)(__file__);code=3Df.read().replace= ('\\r\\n', '\\n');f.close();exec(compile(code, __file__, 'exec'))" "test" f= ailed with status 1 > > ~~~~~END~~~~~ > > > > Thanks, > > Zelphir > > > > > > On 10/18/20 6:35 PM, Efraim Flashner wrote: > >> On Sun, Oct 18, 2020 at 01:55:49PM +0200, Zelphir Kaltstahl wrote: > >>> Hello Guix Users, hello Zimoun and Tobias! > >>> > >>> Thanks for your information regarding the importer syntax thing. > >>> > >>> I continued trying to get a jupyterlab environment today. > >>> > >>> Here is what I did so far: > >>> > >>> (1) Create my manifest file: > >>> > >>> ~~~~START~~~~ > >>> (specifications->manifest > >>> '("python")) > >>> ~~~~~END~~~~~ > >>> > >>> (2) Create my channels file: > >>> > >>> ~~~~START~~~~ > >>> $ guix describe --format=3Dchannels > channels.scm > >>> $ cat channels.scm > >>> (list (channel > >>> (name 'guix) > >>> (url "https://git.savannah.gnu.org/git/guix.git") > >>> (commit > >>> "6ca673b30dac281ba27a8dac242c0ac83e5e354b") > >>> (introduction > >>> (make-channel-introduction > >>> "9edb3f66fd807b096b48283debdcddccfea34bad" > >>> (openpgp-fingerprint > >>> "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA= "))))) > >>> ~~~~~END~~~~~ > >>> > >>> (3) Create my jupyterlab PyPI import file, this time around using= the > >>> "/" instead of "@" for specifying the version: > >>> > >>> ~~~~START~~~~ > >>> $ guix import pypi --recursive jupyterlab/2.1.5 > jupyterlab.scm > >>> ~~~~~END~~~~~ > >>> > >>> (4) Add missing import expressions and add output expression at t= he end: > >>> > >>> ~~~~START~~~~ > >>> ;; add module imports > >>> (use-modules > >>> (guix packages) > >>> (guix download) > >>> (guix build-system python) > >>> ((guix licenses) #:prefix license:) > >>> ;; use `guix environment --ad-hoc python-jinja2 -- guix package = -A python-jinja2` to find the location of python-jinja2, which is gnu/packa= ges/python-xyz.scm > >> This can be just 'guix package -A python-jinja2', no need for the > >> environment. > >> > >>> (gnu packages python-xyz) > >>> ;; for python-tornado > >>> (gnu packages python-web) > >>> ;; for python-pytest > >>> (gnu packages check)) > >>> > >>> ;; QUESTION: Why are those required packages not imported by guix= automatically? > >>> ;; QUESTION: Why are the manually imported packages not actually = in files with their own name, but instead jinja2 -> python-xyz, tornado -> = python-web, and pytest -> check? > >>> ;; QUESTION: Is my process of finding the files in which the pack= ages are correct or just working by chance? > >>> > >>> (define-public python-jupyterlab-server > >>> (package > >>> (name "python-jupyterlab-server") > >>> (version "1.2.0") > >>> (source > >>> (origin > >>> (method url-fetch) > >>> (uri (pypi-uri "jupyterlab-server" version)) > >>> (sha256 > >>> (base32 > >>> "132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal= ")))) > >>> (build-system python-build-system) > >>> (propagated-inputs > >>> `(("python-jinja2" ,python-jinja2) > >>> ("python-json5" ,python-json5) > >>> ("python-jsonschema" ,python-jsonschema) > >>> ("python-notebook" ,python-notebook) > >>> ("python-requests" ,python-requests))) > >>> (native-inputs > >>> `(("python-pytest" ,python-pytest) > >>> ("python-requests" ,python-requests))) > >>> (home-page "https://jupyter.org") > >>> (synopsis "JupyterLab Server") > >>> (description "JupyterLab Server") > >>> (license license:bsd-3))) > >>> > >>> (define-public python-jupyterlab > >>> (package > >>> (name "python-jupyterlab") > >>> (version "2.1.5") > >>> (source > >>> (origin > >>> (method url-fetch) > >>> (uri (pypi-uri "jupyterlab" version)) > >>> (sha256 > >>> (base32 > >>> "162jn51cg36fsn4l2zhnb5n4nbkhm9wlv974ggcnmdij3i4r4yya= ")))) > >>> (build-system python-build-system) > >>> (propagated-inputs > >>> `(("python-jinja2" ,python-jinja2) > >>> ("python-jupyterlab-server" > >>> ,python-jupyterlab-server) > >>> ("python-notebook" ,python-notebook) > >>> ("python-tornado" ,python-tornado))) > >>> (native-inputs > >>> `(("python-pytest" ,python-pytest) > >>> ("python-pytest-check-links" > >>> ,python-pytest-check-links) > >>> ("python-requests" ,python-requests) > >>> ("python-virtualenv" ,python-virtualenv) > >>> ("python-wheel" ,python-wheel))) > >>> (home-page "http://jupyter.org") > >>> (synopsis > >>> "The JupyterLab notebook server extension.") > >>> (description > >>> "The JupyterLab notebook server extension.") > >>> (license license:bsd-3))) > >>> > >>> python-jupyterlab > >>> ~~~~~END~~~~~ > >>> > >>> And as noted in the comments, I have 3 questions at this point: > >>> > >>> (Q1) Why are those required packages not imported by guix automat= ically? > >>> (My guess: This functionality simply has not yet been implemented= =2E) > >>> > >>> (Q2) Why are the manually imported packages not actually in files= with > >>> their own name, but instead jinja2 -> python-xyt, tornado -> pyth= on-web, > >>> and pytest -> check? Why not (gnu packages python pytest) for exa= mple? > >>> > >>> (Q3) Is my process of finding the files in which the packages are > >>> correct or just working by chance? Basically I am creating tempor= ary > >>> environments, in which I then lookup "where would the package be > >>> installed" and then exit the temporary environment to use that > >>> information in my imported package file's import expressions / > >>> use-modules expression. This seems to be a bit of a convoluted pr= ocess, > >>> though worth it, if it always works in the end. > >>> > >>> (4) Now I run my time-machine command: > >>> > >>> ~~~~START~~~~ > >>> $ guix time-machine --channels=3Dchannels.scm -- environment --ma= nifest=3Dmanifest.scm --load=3Djupyterlab.scm > >>> ~~~~~END~~~~~ > >>> > >>> This take a moment and then I get an error (the full output is lo= nger, > >>> but when running it multiple times, already successful steps are = not all > >>> done repeatedly, so the output is then reduced to what fails): > >>> > >>> ~~~~START~~~~ > >>> $ guix time-machine --channels=3Dchannels.scm -- environment --ma= nifest=3Dmanifest.scm --load=3Djupyterlab.scm > >>> Updating channel 'guix' from Git repository at 'https://git.savan= nah.gnu.org/git/guix.git'... > >>> The following derivations will be built: > >>> /gnu/store/wzmfn9m45bmsbrx094rv3lf3w0rpmw49-python-pytest-chec= k-links-0.3.0.drv > >>> /gnu/store/n9i421lrbwrr8d0947w5vma7rhy3iyba-python-jupyterlab-= server-1.2.0.drv > >>> /gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-= 1.2.0.tar.gz.drv > >>> > >>> 4,2 MB will be downloaded > >>> downloading from https://ci.guix.gnu.org/nar/lzip/2nahbs5v8q073gj= my224gk0h5lsh1kkw-python-nbconvert-5.0.0b1 ... > >>> python-nbconvert-5.0.0b1 301KiB = = = 2.0MiB/s 00:00 [##################] 100.0% > >>> > >>> building /gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-s= erver-1.2.0.tar.gz.drv... > >>> |builder for `/gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyter= lab-server-1.2.0.tar.gz.drv' failed to produce output path `/gnu/store/92md= 7gh966n4fzj6al267lqq4xjx0ncf-jupyterlab-server-1.2.0.tar.gz' > >>> build of /gnu/store/s7jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-s= erver-1.2.0.tar.gz.drv failed > >>> View build log at '/var/log/guix/drvs/s7/jc2dbb0bnrahxklmszmpfv8k= lgw3sd-jupyterlab-server-1.2.0.tar.gz.drv.bz2'. > >>> cannot build derivation `/gnu/store/n9i421lrbwrr8d0947w5vma7rhy3i= yba-python-jupyterlab-server-1.2.0.drv': 1 dependencies couldn't be built > >>> killing process 7384 > >>> guix environment: error: build of `/gnu/store/n9i421lrbwrr8d0947w= 5vma7rhy3iyba-python-jupyterlab-server-1.2.0.drv' failed > >>> ~~~~~END~~~~~ > >>> > >>> OK, an error, perhaps I can understand it. Lets look at that log = file: > >>> > >>> ~~~~START~~~~ > >>> $ cp /var/log/guix/drvs/s7/jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyter= lab-server-1.2.0.tar.gz.drv.bz2 . > >>> $ bzip2 --decompress jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-se= rver-1.2.0.tar.gz.drv.bz2 > >>> $ cat jc2dbb0bnrahxklmszmpfv8klgw3sd-jupyterlab-server-1.2.0.tar.= gz.drv > >>> > >>> Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-= jupyterlab-server-1.2.0.tar.gz > >>> From https://files.pythonhosted.org/packages/source/j/jupyterlab-= server/jupyterlab-server-1.2.0.tar.gz... > >>> download failed "https://files.pythonhosted.org/packages/source/j= /jupyterlab-server/jupyterlab-server-1.2.0.tar.gz" 404 "Not Found" > >>> > >>> Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-= jupyterlab-server-1.2.0.tar.gz > >>> From https://ci.guix.gnu.org/file/jupyterlab-server-1.2.0.tar.gz/= sha256/132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal... > >>> download failed "https://ci.guix.gnu.org/file/jupyterlab-server-1= =2E2.0.tar.gz/sha256/132xby7531rbrjg9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal" = 404 "Not Found" > >>> > >>> Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-= jupyterlab-server-1.2.0.tar.gz > >>> From https://tarballs.nixos.org/sha256/132xby7531rbrjg9bqvsx86bir= r1blynjxy8gi5kcnb6x7fxjcal... > >>> download failed "https://tarballs.nixos.org/sha256/132xby7531rbrj= g9bqvsx86birr1blynjxy8gi5kcnb6x7fxjcal" 404 "Not Found" > >>> > >>> Starting download of /gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-= jupyterlab-server-1.2.0.tar.gz > >>> From https://archive.softwareheritage.org/api/1/content/sha256:54= 31d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c/raw/... > >>> download failed "https://archive.softwareheritage.org/api/1/conte= nt/sha256:5431d9dde96659364b7cc877693d5d21e7b80cea7ae3959ecc2b87518e5f5d8c/= raw/" 404 "Not Found" > >>> failed to download "/gnu/store/92md7gh966n4fzj6al267lqq4xjx0ncf-j= upyterlab-server-1.2.0.tar.gz" from "https://files.pythonhosted.org/package= s/source/j/jupyterlab-server/jupyterlab-server-1.2.0.tar.gz" > >>> ~~~~~END~~~~~ > >>> > >>> So it seems, that the jupyterlab-server file is simply not downlo= adable > >>> any longer! > >>> > >>> Trying using wget: > >>> > >>> ~~~~START~~~~ > >>> $ wget https://files.pythonhosted.org/packages/source/j/jupyterla= b-server/jupyterlab-server-1.2.0.tar.gz > >>> --2020-10-18 13:49:52-- https://files.pythonhosted.org/packages/= source/j/jupyterlab-server/jupyterlab-server-1.2.0.tar.gz > >>> Resolving files.pythonhosted.org (files.pythonhosted.org)... 2a04= :4e42:9::319, 151.101.37.63 > >>> Connecting to files.pythonhosted.org (files.pythonhosted.org)|2a0= 4:4e42:9::319|:443... failed: Connection refused. > >>> Connecting to files.pythonhosted.org (files.pythonhosted.org)|151= =2E101.37.63|:443... connected. > >>> HTTP request sent, awaiting response... 404 Not Found > >>> 2020-10-18 13:49:53 ERROR 404: Not Found. > >>> ~~~~~END~~~~~ > >>> > >>> So now I am out of ideas. It seems the file is not available any = longer > >>> and the definition of jupyterlab needs to be updated somewhere, s= o that > >>> it does not try to download an old or non-existent version of > >>> jupyter-labserver. But how is this usually done? Can I specify it > >>> somewhere in one of the 3 files I have, or am I dependent on some= one > >>> fixing the jupyterlab-server dependency / input for juypterlab? > >>> > >>> Thanks for your help so far! Tell me, if I need to provide any mo= re > >>> information to solve the problem. > >> Try chaning the URL line to (uri (pypi-uri "jupyterlab_server" ver= sion)), > >> with an underscore (_). I don't have any special suggestions for k= nowing > >> that it should be an underscore instead of a dash. The best I have= is > >> the output from 'guix import pypi jupyterlab-server: > >> > >> (ins)efraim@E5400 ~$ guix import pypi jupyterlab-server > >> > >> Starting download of /tmp/guix-file.ayJ41F > >> From https://files.pythonhosted.org/packages/92/54/5f321ca4cebfb64= 4ac59eb21601b46a2ff9831ffe1b4e5a588f2a7e98d48/jupyterlab_server-1.2.0.tar.g= z... > >> =E2=80=A6er-1.2.0.tar.gz 22KiB 57KiB/s 00:00 [####= ##############] 100.0% > >> > >> > >> > >>> Best regards, > >>> Zelphir > >>> > >>> > >>> On 10/16/20 2:25 PM, Tobias Geerinckx-Rice wrote: > >>>> Zelphir, > >>>> > >>>> Zelphir Kaltstahl =E5=86=99=E9=81=93=EF=BC=9A > >>>>> $ guix import pypi 'jupyterlab@2.1.5' --recursive > >>>> It will work if you substitute =E2=80=98/=E2=80=99 for =E2=80=98= @=E2=80=99.=C2=A0 Yes, this is a happy > >>>> accident specific to the PyPI importer, and I'm sure you can gue= ss why > >>>> it happens to work. > >>>> > >>>>>> guix import hackage mtl@2.1.3.1 > >>>>> But that is in the "hackage" import section. Is the same not av= ailable > >>>>> for PyPI? > >>>> [...] > >>>> > >>>>> Do the various importers work differently? > >>>> Unfortunately so.=C2=A0 It would be great(TM) if PACKAGE[@VERSIO= N] were > >>>> standard.=C2=A0 Each importer could handle it properly (e.g., by= turning it > >>>> into "/") or return a friendlier =E2=80=98the foo importer does = not yet > >>>> support versions=E2=80=99 error. > >>>> > >>>> I don't have the time, but this sounds like a good intermediate-= level > >>>> hack for someone who does :-) > >>>> > >>>> Kind regards, > >>>> > >>>> T G-R > >>> --=20 > >>> repositories: https://notabug.org/ZelphirKaltstahl > >>> > > --=20 > > repositories: https://notabug.org/ZelphirKaltstahl > > > > > > --=20 > > Sent from my Android device with K-9 Mail. Please excuse my brevity.=20 >=20 > --=20 > repositories: https://notabug.org/ZelphirKaltstahl >=20 --=20 Efraim Flashner =D7=90=D7=A4=D7=A8=D7=99=D7=9D = =D7=A4=D7=9C=D7=A9=D7=A0=D7=A8 GPG key =3D A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted --msgLTjjeumHWYklJ Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl+P3r4ACgkQQarn3Mo9 g1FPVQ//X99SUFk0TQul1zUdsgagMxmB7M66l3dip0h9toYo4oL4JCVDSAeZxjyN b85zupAGHQX+d0DfVOJA1Bu0ndB33TN3KN6CKEDZhAoKLtxqdhnbuI8DYKyAzG2F wVvPVXVCGdDgY/CGA+3eKfvw0JhN621tsfizvO180Nx2cgIYIThPNZ6fdAzA1cBD nvnJEMK5PxaUSksEgdD+UWDSnCPv1NC/qJ+Sxqip60WyC56vUs6FbMzuJLG+siS7 cno2ctnHJ/jq5ypwp2XK5yWtE6mP+jBHs4s5YInjAheICvC+rQyTL2z2/ynSKNuo de5WEjSUBQMRfHd6Yg8V3APjjWDQr5Kgt3kkrJaxQtSJjqxp806soGNJHud74a4L 6R+wj4zLXemrEOLAMWJ+tJk2ZeAwDPzqJGq6JPB0SQDb10HSOFcH9SQRBtfqlXEo 2cC4W0ZbTmOpTBgvHYp8d9qndHT6BjAcRHOZjYvL9z+MJCNU88CYAy6QkbCvAvF1 UKXvZDaBUefp9dVrl+COkH4vY8gI6/e615YaLoetyUhDX1TRQCUD2ogjn7s1xHQ4 Kg53FubE1rC3kV1KS4k3uNbkI3tPlaM3DlDgw/cX/iEbgeVt4nFzaarWfui5ythS MQtWTBfWlxDVduLOPCApPV7z/ENp/lRadIrSC30O24yGoBTXjl4= =UH/k -----END PGP SIGNATURE----- --msgLTjjeumHWYklJ--