<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>actually editable installs can be made uninstallable trivially<br>
    </p>
    <p>in gumby-elf i would create a fake wheel with files inside to
      facilitate the path building for namespaces,<br>
      and a local version number (so pip would create my exe files and
      uninstall clean)</p>
    <p><br>
    </p>
    -- Ronny<br>
    <div class="moz-cite-prefix">On 24.11.2016 01:23, Daniel Holth
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAG8k2+5NnrEDz7BZMpAuWye5Z=5xJvav=u01k2WaK93MHSkGuQ@mail.gmail.com"
      type="cite">
      <p dir="ltr">I wouldn't be afraid of editable installs. They are
        trivial and involve building the package in place and putting a
        .pth file where it will be noticed. Specify editable packages
        can't necessarily be uninstalled in a standard way and you are
        done.</p>
      <p dir="ltr">The bespoke build tool tells pip where the package
        root is (where .dist-info will be written), usually . or ./src,
        then pip does .pth.</p>
      <br>
      <div class="gmail_quote">
        <div dir="ltr">On Wed, Nov 23, 2016, 17:16 Chris Barker <<a
            moz-do-not-send="true" href="mailto:chris.barker@noaa.gov">chris.barker@noaa.gov</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
          <div dir="ltr" class="gmail_msg">
            <div class="gmail_extra gmail_msg">
              <div class="gmail_quote gmail_msg">On Wed, Nov 23, 2016 at
                6:35 AM, Thomas Kluyver <span dir="ltr"
                  class="gmail_msg"><<a moz-do-not-send="true"
                    href="mailto:thomas@kluyver.me.uk" class="gmail_msg"
                    target="_blank">thomas@kluyver.me.uk</a>></span>
                wrote:<br class="gmail_msg">
                <div class="gmail_msg"> </div>
              </div>
            </div>
          </div>
          <div dir="ltr" class="gmail_msg">
            <div class="gmail_extra gmail_msg">
              <div class="gmail_quote gmail_msg">
                <blockquote class="gmail_quote gmail_msg"
                  style="margin:0px 0px 0px 0.8ex;border-left:1px solid
                  rgb(204,204,204);padding-left:1ex">Questions:<br
                    class="gmail_msg">
                  1. Editable installs. The PEP currenly specifies a
                  hook to do an<br class="gmail_msg">
                  editable install (like 'pip install -e' or 'setup.py
                  develop') into a<br class="gmail_msg">
                  given prefix. I don't think that specifying a prefix
                  is sufficient to<br class="gmail_msg">
                  cover '--user' installation, which uses a different
                  install scheme,<br class="gmail_msg">
                  especially on Windows and OSX framework builds. We
                  can:<br class="gmail_msg">
                  a. Add an extra parameter 'user' to the hook, to
                  override the prefix and<br class="gmail_msg">
                  do a user install.<br class="gmail_msg">
                  b. Leave it as is, and do not support editable user
                  installation (which<br class="gmail_msg">
                  would make me sad, as I do editable user installs
                  regularly)<br class="gmail_msg">
                </blockquote>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
              </div>
            </div>
          </div>
          <div dir="ltr" class="gmail_msg">
            <div class="gmail_extra gmail_msg">
              <div class="gmail_quote gmail_msg">
                <div class="gmail_msg">Please, please, let's figure
                  SOMETHING our here - editable installs (or "develop"
                  installs) are a critical tool. Frankly, I don't know
                  how anyone can develop a package without them.</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">Back in the day I struggle
                  mightily with kludging sys.path, and, relative imports
                  that never really worked right, and on and on -- it
                  SUCKED.</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">Then I discovered setuptools
                  develop mode -- yeah! IN fact, I don't think I'd ever
                  use setuptools at all if I didn't need it to get
                  develop mode!</div>
              </div>
            </div>
          </div>
          <div dir="ltr" class="gmail_msg">
            <div class="gmail_extra gmail_msg">
              <div class="gmail_quote gmail_msg">
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">
                  <blockquote class="gmail_quote gmail_msg"
                    style="margin:0px 0px 0px 0.8ex;border-left:1px
                    solid rgb(204,204,204);padding-left:1ex">c. Decide
                    that editable installs are too fiddly to
                    standardise, and<br class="gmail_msg">
                    leave it to users to invoke a tool directly to do an
                    editable install.<br class="gmail_msg">
                  </blockquote>
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
              </div>
            </div>
          </div>
          <div dir="ltr" class="gmail_msg">
            <div class="gmail_extra gmail_msg">
              <div class="gmail_quote gmail_msg">
                <div class="gmail_msg">Not sure what that means -- does
                  that mean that you couldn't get an editable isntall
                  with pip? but rather you would do:</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">setup.py develop   if you had
                  setuptools as your build system, and <br
                    class="gmail_msg">
                  <br class="gmail_msg">
                  some_other_command  if you had some other build tool?</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">Not too bad, but why not have a
                  standard way to invoke develop mode? If the tool can
                  support it, why not have a way for pip to tell an
                  arbitrary build system to "please install this package
                  in develop mode"</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">On the other hand:</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">I've always thought we were
                  moving toward proper separation of concerns, in which
                  case, pip should be focused on resolving dependencies
                  and finding and installing packages. </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">Should it even be possible to
                  build and install a package from source with pip?</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">But if it is, then it might as
                  well support editable installs as well.</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">The complication I see here is
                  that a tool can't know how to install in editable mode
                  unless it knows about the python environment it it
                  running in -- which is easy for a tool built with
                  python, but a problem for a tool written some other
                  way.</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">However, I see from PEP 517:</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <br class="gmail_msg">
                The build backend object is expected to have attributes
                which provide some or all of the following hooks. The
                commonconfig_settings argument is described after the
                individual hooks:<br class="gmail_msg">
                <br class="gmail_msg">
                <font class="gmail_msg" face="monospace, monospace">def
                  get_build_requires(config_settings):<br
                    class="gmail_msg">
                      ...<br class="gmail_msg">
                </font><br class="gmail_msg">
                <br class="gmail_msg">
                So I guess we can count on a Python front end, at least,
                so 1(a) should be doable.
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">In fact, is the user-install
                  issue any different for editable installs than regular
                  ones?</div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg">-CHB</div>
              </div>
            </div>
          </div>
          <div dir="ltr" class="gmail_msg">
            <div class="gmail_extra gmail_msg">
              <div class="gmail_quote gmail_msg">
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"> </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"><br class="gmail_msg">
                </div>
                <div class="gmail_msg"> </div>
                <blockquote class="gmail_quote gmail_msg"
                  style="margin:0px 0px 0px 0.8ex;border-left:1px solid
                  rgb(204,204,204);padding-left:1ex">
                  2. Dash vs. underscore, bikeshed reloaded! Currently, 
                  the table name<br class="gmail_msg">
                  uses a dash: [build-system], but the key added by PEP
                  517 uses an<br class="gmail_msg">
                  underscore: build_backend. This seems a bit messy. I
                  propose that we<br class="gmail_msg">
                  change build_backend to build-backend for consistency.
                  Dashes and<br class="gmail_msg">
                  underscores can both be used in a TOML key without
                  needing quoting.<br class="gmail_msg">
                  <br class="gmail_msg">
                  Thanks,<br class="gmail_msg">
                  Thomas<br class="gmail_msg">
                  _______________________________________________<br
                    class="gmail_msg">
                  Distutils-SIG maillist  -  <a moz-do-not-send="true"
                    href="mailto:Distutils-SIG@python.org"
                    class="gmail_msg" target="_blank">Distutils-SIG@python.org</a><br
                    class="gmail_msg">
                  <a moz-do-not-send="true"
                    href="https://mail.python.org/mailman/listinfo/distutils-sig"
                    rel="noreferrer" class="gmail_msg" target="_blank">https://mail.python.org/mailman/listinfo/distutils-sig</a><br
                    class="gmail_msg">
                </blockquote>
              </div>
            </div>
          </div>
          <div dir="ltr" class="gmail_msg">
            <div class="gmail_extra gmail_msg"><br class="gmail_msg">
              <br class="gmail_msg" clear="all">
              <div class="gmail_msg"><br class="gmail_msg">
              </div>
              -- <br class="gmail_msg">
              <div class="m_-5867620219916391724gmail_signature
                gmail_msg"><br class="gmail_msg">
                Christopher Barker, Ph.D.<br class="gmail_msg">
                Oceanographer<br class="gmail_msg">
                <br class="gmail_msg">
                Emergency Response Division<br class="gmail_msg">
                NOAA/NOS/OR&R            (206) 526-6959   voice<br
                  class="gmail_msg">
                7600 Sand Point Way NE   (206) 526-6329   fax<br
                  class="gmail_msg">
                Seattle, WA  98115       (206) 526-6317   main reception<br
                  class="gmail_msg">
                <br class="gmail_msg">
                <a moz-do-not-send="true"
                  href="mailto:Chris.Barker@noaa.gov" class="gmail_msg"
                  target="_blank">Chris.Barker@noaa.gov</a></div>
            </div>
          </div>
          _______________________________________________<br
            class="gmail_msg">
          Distutils-SIG maillist  -  <a moz-do-not-send="true"
            href="mailto:Distutils-SIG@python.org" class="gmail_msg"
            target="_blank">Distutils-SIG@python.org</a><br
            class="gmail_msg">
          <a moz-do-not-send="true"
            href="https://mail.python.org/mailman/listinfo/distutils-sig"
            rel="noreferrer" class="gmail_msg" target="_blank">https://mail.python.org/mailman/listinfo/distutils-sig</a><br
            class="gmail_msg">
        </blockquote>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
Distutils-SIG maillist  -  <a class="moz-txt-link-abbreviated" href="mailto:Distutils-SIG@python.org">Distutils-SIG@python.org</a>
<a class="moz-txt-link-freetext" href="https://mail.python.org/mailman/listinfo/distutils-sig">https://mail.python.org/mailman/listinfo/distutils-sig</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>