PMXBOT Log file Viewer

Help | Karma | Search:

#pypa-dev logs for Sunday the 4th of January, 2015

(Back to #pypa-dev overview) (Back to channel listing) (Animate logs)
[03:00:22] <dstufft> jaraco: ping
[05:21:22] <jaraco> dstufft: pong
[05:23:12] <dstufft> jaraco: there was a reddit thread that made me think about it, is there any interest at all in moving setuptools away from the installer bits (easy_install in particular)? I'm not saying we should, but if there's some interest I might try and work out all the niggly bits sometime
[05:25:07] <jaraco> I think that's the plan ultimately, but there are several aspects which are difficult. For example, the installer logic is necessary for 'develop' and 'test' (and plugins like pytest-runner).
[05:25:29] <jaraco> I also appreciate some of the features that easy_install offers over pip.
[05:25:50] <jaraco> I still use easy_install because it has support for single-file, human-readable console scripts.
[05:25:55] <jaraco> (on Windows)
[05:26:45] <jaraco> The namespace package support in pip (issue #3) is also a bit of a blocker in my opinion.
[05:27:18] <dstufft> jaraco: so by "figuring out the niggly bits" I more or less mean figure out what parts of setuptools rely on that stuff so that we can at least get a list somewhere which is the first step to figuring out answers to those things, I just didn't want to waste my time if your opinion was that easy_install should stick around forever
[05:27:36] <dstufft> I don't particulary mean "let's start ripping out code"
[05:27:45] <jaraco> I don't have good answers for those things, but I believe there is a roadmap that does eventually replace these aspects of setuptools with other tools.
[05:28:06] <jaraco> I would very much like to see pip obviate easy_install.
[05:28:15] <dstufft> (slightly related, what do you mean by "single-file, human-readable console scripts"?)
[05:28:57] <jaraco> I mean naturally-executed scripts, much like you get on Unix. Paul and I had a discussion on it in pypa-dev.
[05:29:00] <jaraco> (mailing list)
[05:29:14] <dstufft> oh with the PATHEXT or whatever variable?
[05:29:18] <jaraco> Right.
[05:29:29] <jaraco> But I think I may be the only user of that feature.
[05:29:53] <jaraco> And everyone else is happy with dual-file or opaque executable files, so maybe I should just be too.
[05:29:58] <dstufft> I was under the impression that PATHEXT wasn't globally respected in the Windows APIs
[05:30:04] <dstufft> (maybe that's wrong? I don't use windows)
[05:30:38] <jaraco> It's not honored at the CreateProcess API, which is the problem.
[05:30:55] <jaraco> It's only honored by the shell executors (cmd.exe, powershell).
[05:31:19] <dstufft> how do you cope with that? do you just put up with the fact it doesn't work? or do you have something to work around it?
[05:31:25] <jaraco> It could also be honored by Python's Popen, which would fill 99% of the use cases that are currently problemmatic with using that model broadly.
[05:32:05] <jaraco> In my usage, it doesn't matter, because I don't expect to Popen my scripts... I always invoke them in the shell.
[05:32:45] <jaraco> It does occassionally bite me when a process tries to invoke Popen(['pip']) or Popen(['easy_install']) because that fails in my env.
[05:32:59] <dstufft> gotcha
[05:34:33] <jaraco> It's really the namespaced packages support that's the most problemmatic with the pip model. I also do appreciate the egg model (that you can have a single file installation). I think even wheels have to be expanded to be installed/imported.
[05:34:58] <dstufft> I'm not specifically opposed to an option to install scripts like that, other than I have a blanket opposition to options which are not broadly applicable and I don't know enough about Windows to know if it is :D, anyways, that's a bit of a tanget. It sounds like maybe sitting down and trying to enumerate the things blocking the ultimate removal of installer features from setuptools to at least document it would be a useful thing
[05:35:21] <jaraco> That'd be awesome.
[05:37:01] <dstufft> I didn't want to come across like you should totally rm -rf easy_install right this moment, I just wanted to see if that was a direction you wanted to go in at all before I bothered to spend any time on it
[05:37:31] <jaraco> !thanks dstufft
[05:37:31] <pmxbot> you're doing good work, dstufft!
[05:38:57] <dstufft> jaraco: regarding single file installs: Wheels do currently "require" it as in, the PEP mentions that you can do it, but it's discouraged and it's not going to work generically because of C compiled things
[05:39:16] <dstufft> er require being unpacked*
[05:39:32] <dstufft> the PEP says you can do it, and we use that in ensurepip and virtualenv and get-pip.py actually
[05:42:00] <tomprince> Even if easy_install wants to stay around, it could be spun out to a seperate package.
[05:43:04] <dstufft> I'm on the fence about the general feasability of such a thing, alot of projects simply don't work with it (though I believe setuptools detects it? or attempts to anyways) and more than one API in the stdlib requires file paths not in memory things which leads to terrible things like -> https://github.com/pypa/pip/blob/develop/tasks/generate.py#L165-L169 just to deal with it
[05:44:13] <dstufft> tomprince: yea that's possibly any option too, and it may make sense to do that as part of the migration process too in a "sorry we removed it from setuptools but you can get it back if you do X andw e're going to maintain that for an extra whatever" way
[05:48:40] <jaraco> dstufft: That does seem slightly terrible. Doesn't pkg_resources.resource_filename address that issue in a less terrible way?
[05:52:17] <jaraco> gotta go. But definitely +1 on merging behavior and finding the best tool set.
[05:52:18] <dstufft> jaraco: probably yea, get-pip.py itself can't use pkg_resources so it has to do it manually (and of course using pkg_resources itself ends up making a runtime dependency on setuptools if this was needed for something other than a bootstrap script)
[05:52:25] <dstufft> jaraco: see ya!
[15:46:27] <sigmavirus24> So I'm really curious about a good way of implementing https://github.com/pypa/twine/pull/84
[15:46:39] <sigmavirus24> And I'm wondering if I'll have to do something with setup.py :/
[15:53:09] <dstufft> sigmavirus24: I'm like half way convinced that register is the wrong abstraction anyways
[15:53:28] <dstufft> I think it's a pointless leftover from the time before uploading was implemented on PyPI
[15:54:15] <dstufft> at least, I cannot think of a good reason why upload should not imply register
[15:55:22] <sigmavirus24> dstufft: true. But register is also useful for updating stuff like the long_description
[15:55:32] <sigmavirus24> (or at least that's what I tend to use it for more often than not)
[15:56:08] <dstufft> sigmavirus24: I wonder if it makes more sense to just have a dedicated command to upload a new long description
[15:56:31] <dstufft> probably 90% of all long descriptions come from a file
[15:56:54] <dstufft> so you could do something like twine upload-long-description README.rst
[15:56:56] <Ivo> I personally like the idea of claiming the name for a project from only uploading a release for it
[15:57:07] <Ivo> *separating
[15:57:34] <sigmavirus24> Ivo: not sure where separating fits in there =P
[15:57:46] <Ivo> *I personally like the idea of separating claiming...
[15:57:53] <sigmavirus24> Ah
[15:58:05] <dstufft> that may be true
[15:58:08] <dstufft> but that's not what register does
[15:58:10] <Ivo> but also think conflating it with other tasks like re-uploading metadata is bad
[15:58:20] <dstufft> register registers a release
[15:58:32] <dstufft> in particular, you require a version number to register something
[15:58:54] <dstufft> in the common case of "I want to claim a name" you typically register a version 0 and end up deleteing it from the webuio
[16:00:59] <dstufft> I don't particularly see a whole lot of value in making it easier for people to claim names for which they don't have a project to use with
[16:01:27] <dstufft> I mean I do it sometimes, but I probably shouldn't
[16:01:35] <dstufft> feels like domain name squating
[16:01:40] <Ivo> uhhh, well negating what you just said ends up happening a lot
[16:01:58] <dstufft> sure it happens a lot
[16:02:02] <dstufft> and we can't prevent it from happening
[16:02:12] <dstufft> because if we require an upload people will just upload empty projects
[16:02:14] <Ivo> well as long as we have a free-for-all package index theres probably going to be some sort of squatting to some degree
[16:02:23] <dstufft> but that doesn't mean we need to add first class support for doing it
[16:03:29] <dstufft> almost 100% of the time my use of setup.py register is ``twine upload -s dist/*`` -> gets an error -> gets mad and registers once
[16:27:25] <agronholm> there should be a filter to prevent empty projects from being shown in search results by default
[16:27:45] <agronholm> and preferably more filters to filter out crap
[16:31:52] <sigmavirus24> dstufft: do we still want twine to upload docs? (https://github.com/pypa/twine/issues/12) ?
[16:32:19] <dstufft> I wish we could just kill pythonhosted.org
[16:32:21] <dstufft> ;(
[16:32:45] <dstufft> I think readthedocs.org is planning to allow uploads like PyPI does of html
[16:32:58] <dstufft> maybe when it does that we can kill pythonhosted
[16:33:47] <sigmavirus24> Is that a yes or no?
[16:33:48] <sigmavirus24> =P
[16:34:12] <dstufft> it's a maybe! I'm not opposed to adding it, but I don't think it's super important either
[16:34:50] <sigmavirus24> So my reason for wanting to work on a register was to take care of https://github.com/pypa/twine/issues/21 with a suggestion of using twine register to ensure the package was created first
[16:35:58] <sigmavirus24> Should we just auto-register on upload?
[16:36:20] <dstufft> sigmavirus24: I think so yea
[16:36:35] <sigmavirus24> Cool
[16:36:41] <dstufft> sigmavirus24: if we were really smart, we'd pick a Wheel to fetch the data from in order to auto register
[16:37:01] <dstufft> since wheels include data that sdist doesn't
[16:37:09] <pmxbot> jaraco pushed 1 commit to setuptools (https://bitbucket.org/pypa/setuptools/) :
[16:37:09] <pmxbot> Use except/as, now supported by Python 2.6
[16:37:16] <sigmavirus24> So my first approach was going to be: try upload, if that fails, register then retry
[16:37:35] <sigmavirus24> mostly since upload is sort of an implicit register
[16:37:43] <sigmavirus24> (but not when the package already exists)
[16:37:59] <dstufft> sigmavirus24: that's doable too, could just sort the list of things to upload so wheels come first in that istuation to get the benefit of better metadata
[16:38:09] <sigmavirus24> yep
[16:48:14] <ionelmc> dstufft: mind taking a look at https://github.com/pypa/virtualenv/pull/672 ?
[16:48:45] <ionelmc> cause latest virtualenv is still borken on windows :-|
[16:48:48] <dstufft> ionelmc: re-opened it, that's about all I have the mental capacity to do right now
[16:48:51] <ionelmc> that change looks simple enough
[16:49:02] <dstufft> it shouldn't be any more broken than 11.x was
[16:49:30] <ionelmc> dstufft: you can't create different interpreter virtualenvs
[16:49:39] <ionelmc> that kind of broken
[16:50:55] <dstufft> ionelmc: could you do it in 1.11
[16:51:57] <dstufft> https://github.com/pypa/virtualenv/compare/1.11.6...12.0.5#diff-15 shows the diff of 1.11.6 and 12.0.5, I don't think anything in there should have changed sys.path handling
[16:53:25] <ionelmc> hmmmmm
[16:57:29] <pmxbot> jaraco pushed 1 commit to setuptools (https://bitbucket.org/pypa/setuptools/) :
[16:57:29] <pmxbot> And again in doctest
[17:01:58] <ionelmc> ok, i've tried past virtualenv versoins
[17:02:14] <ionelmc> they all seem to have the same problem
[17:02:23] <ionelmc> how the hell did i got it to work
[17:02:38] <dstufft> ionelmc: this thing is basically why I started the rewrite
[17:02:47] <dstufft> or one of the reasons
[17:02:58] <ionelmc> oh well
[17:03:00] <dstufft> because I think the way -p works is completely insane and is never going to work in every situation
[17:03:02] <ionelmc> speaking of that
[17:03:11] <ionelmc> dstufft: what's the plan for the rewrite
[17:03:31] <dstufft> I tried to fix the sys.path thing when openstack reported that the patched in one of the earlier 12's broke things for them
[17:03:32] <ionelmc> i could get the virtualenv-in-virtualenv thing to work btw :-(
[17:03:45] <ionelmc> *couldN'T
[17:03:48] <ionelmc> damn :)
[17:03:49] <dstufft> and I could not come up with a set of changes that actually worked
[17:03:59] <dstufft> so I settled on the existing broken-ness instead of new broken-ness
[17:04:29] <dstufft> ionelmc: my plan is to finish making it work, then probably posting to pypa-dev about it and probably sticking it on pypi under a virtualenv-refactor name or something
[17:04:42] <dstufft> maybe I'll work on it more today
[17:04:56] <ionelmc> dstufft: anyway, it works otherwise on windows (check the pr)
[17:05:18] <dstufft> awesome, i'll check in a bit
[17:05:20] <ionelmc> except that virtualenv-in-virtualenv problem
[17:05:41] <dstufft> the virtualenv in virtualenv probably isn't specific to windows
[17:05:47] <dstufft> I'm testing it using a pyvenv virtualenv
[17:05:55] <dstufft> for that same reason
[17:06:04] <ionelmc> dunno what to do about that, virtualenv's site.py doesn't seem to have any api to get the path to the real interpreter :-|
[17:06:23] <dstufft> well
[17:06:41] <ionelmc> it's too good, this legacy virtualenv, that's why
[17:06:47] <ionelmc> HEHE
[17:07:12] <dstufft> we can easily add stuff to the rewrite's site.py to do it, the question then becomes if we need to support new-virtualenv-in-legacy-virtualenv
[17:07:29] <ionelmc> yeah, that's the problem
[17:08:06] <dstufft> and my answer to that is probably something like "see if we can make it work, and if not then error out"
[17:08:11] <ionelmc> it think that use case is unavoidable, or not without annoying people
[17:08:28] <ionelmc> for example, iirc travis runs your stuff in a virtualenv (a legacy one)
[17:08:42] <ionelmc> so lots of stuff will blow up if you try to use the new one there
[17:08:57] <dstufft> sure
[17:09:18] <dstufft> another option (if can't make it work) is to support them both in parallel for awhile
[17:09:25] <dstufft> and add the API we need to legacy virtualenv
[17:09:39] <dstufft> so it becomes, legacy-virtualenv-before-x-version-in-new-virtualenv problem
[17:10:00] <ionelmc> that will take long time to migrate
[17:10:08] <ionelmc> maybe
[17:10:11] <dstufft> unsure
[17:10:18] <dstufft> it might
[17:10:19] <dstufft> might not
[17:10:36] <dstufft> the existing virtualenv does it somehow
[17:10:45] <dstufft> so it's gotta be doable in some way :D
[17:11:43] <ionelmc> dstufft: it is
[17:12:27] <ionelmc> cause we have sys.real_prefix, but we'd have to have version/implementation -specific sys.path handling
[17:13:09] <ionelmc> something similar to what's in virtual_install_main_packages
[17:13:32] <ionelmc> what do you think about that?
[17:16:24] <dstufft> ionelmc: Might work out ok
[17:16:45] <dstufft> ionelmc: looking at your PR right now, why'd you move the destination from create() to __init__
[17:17:19] <dstufft> ionelmc: also you're british or something aren't you ;P
[17:18:04] <ionelmc> a bit more to the east :)
[17:18:17] <msabramo> romanian?
[17:19:02] <dstufft> ionelmc: Ah, well not american to any extent right? I've never seen an american add u's to things like flavour
[17:21:06] <ionelmc> msabramo: yep
[17:21:19] <sigmavirus24> dstufft: I do that
[17:21:31] <sigmavirus24> You've clearly never taken the time to observe my behaviour
[17:21:36] <dstufft> sigmavirus24: obviously you're a fake american and we should eject you immediately
[17:21:43] <sigmavirus24> shit shit shit
[17:22:04] <sigmavirus24> dstufft: actually it's from years of working with Lukasa
[17:22:53] <ionelmc> dstufft: could be worse, i could have British accent
[17:26:36] <sigmavirus24> dstufft: to clarify. I've fallen before but not yet today have I fallen
[17:26:42] <pmxbot> jaraco pushed 2 commits to setuptools (https://bitbucket.org/pypa/setuptools/) :
[17:26:42] <pmxbot> Skip integration tests when one of the packages under test is already installed, as the installation will fail in that case.
[17:26:42] <pmxbot> Remove try/except/fail - Exceptions are failures by default.
[17:26:45] <dstufft> sigmavirus24: lol
[17:29:28] <dstufft> ionelmc: I'm gonna merge your virtualenv-rewrite PR, but I'm going to make some changes I think
[17:29:41] <dstufft> overall it looks good though
[17:29:45] <dstufft> I like the flavor thing
[17:30:01] <ionelmc> dstufft: i've added a comment about the destination/__init__ thing
[17:33:41] <ionelmc> dstufft: in a way it's close to what pathlib has
[17:34:05] <ionelmc> it could be like that, to simplify programmatic usage of virtualenv
[17:59:28] <dstufft> Current Status of virtualenv rewrite: +750 −3,313
[18:00:08] <dstufft> (to be fair, I doubt the rewrite works on pypy or jython or anything like that at all right now)
[18:00:39] <sigmavirus24> dstufft: where's jim baker when you need him?
[18:00:58] <dstufft> he's right there -> jimbaker
[18:01:00] <dstufft> :D
[18:01:33] <dstufft> I'll have to figure out how to add hacks back in for those platforms, but long term the way I want to support them is by having them backport the venv module
[18:02:38] <sigmavirus24> dstufft: I have a name suggestion: virtualenv-more-betterer
[18:02:48] <dstufft> sigmavirus24: +1
[18:02:51] <sigmavirus24> virtualenv-yaaaassssssssss
[18:02:56] <dstufft> moar-better-virtualenv
[18:03:05] <dstufft> moar-betterer-virtualenv
[18:03:06] <sigmavirus24> moar-virtual-less-env
[18:03:19] <sigmavirus24> it virtually works ;)
[18:03:22] <dstufft> virtualenv-now-with-less-sadness
[18:03:33] <sigmavirus24> virtualenv-no-with-less-omgwtfbbq
[18:03:39] <sigmavirus24> s/no/now/
[18:04:04] <sigmavirus24> virtualenv-now-with-less-fiery-hacks-of-death
[18:04:34] <sigmavirus24> virtualenv-less-badd
[18:04:42] <dstufft> so many hacks
[18:04:51] <dstufft> probably some of those hacks were needed
[18:04:52] <dstufft> maybe
[18:04:58] <dstufft> impossible to tell
[18:05:05] <dstufft> since most wern't documented :V
[18:23:37] <msabramo> yay for pip home - https://github.com/pypa/pip/pull/2298
[18:31:03] <sigmavirus24> ehhh this is why I like tools that you can write extensions for
[18:31:52] <sigmavirus24> there are different commands I'd much rather see like pip open which opens an editor with the source of the package you're looking at (c.f., bundle open in rubby)
[18:34:33] <sigmavirus24> I'm a buzzkill though. I like my tools well defined, composable, and practical
[18:40:17] <tomprince> I think pip would need API for that to be useful, unless your extension could just as easily be a seperate program.
[18:43:54] <dstufft> something like ``pip home`` could probably just as easily be a seperate program
[18:44:06] <dstufft> but I'm not sure it's near as useful as one
[18:44:53] <dstufft> I mean the idea is a quick and easy way to get to the project's homepage, if I have to install another thing to do that I'd probably just rather do ``open https://warehouse.python.org/project/<foo>/`` and click on it
[18:47:58] <dstufft> virtualenv --relocateable is terrible
[18:49:20] <sigmavirus24> dstufft: my measure of usefulness is typically "How many people are actually going to use this? How many people have needed it and not had it?"
[18:49:36] <sigmavirus24> "pip home" seems, intuitively like a consitent answer of "not a lot"
[18:50:17] <dstufft> sigmavirus24: sure, I don't know if ``pip home`` is generally useful on it's own, just saying that "install a seperate command" for something like pip home drives it's useful down a lot, it might not have been very useful to begin with i dunno :)
[18:50:38] <dstufft> the last few sentences is about the most i've thought about the proposal so far
[18:54:02] <sigmavirus24> heh
[18:54:36] <sigmavirus24> I also don't think "pip open" belongs in pip until it proves it's popularity
[18:54:45] <sigmavirus24> so that's why I haven't bothered writing/submitting it
[18:55:04] <sigmavirus24> I also think most people wouldn't use it because I'm probably one of the few people who ever used bundle open in ruby
[18:55:29] <sigmavirus24> Free weekend project: Make bundler work with python =P
[18:56:29] <sigmavirus24> http://i.imgur.com/WZyURav.png
[18:57:24] <dstufft> sigmavirus24: I would theortically use pip open
[18:58:03] <dstufft> the hardest part about me using pip open is retraining myself not to type subl ~v/l/p/s-p/<whatever>/
[18:58:28] <sigmavirus24> not everyone uses zsh ;P
[18:58:47] <sigmavirus24> dstufft: what do you think about allowing pip extensions of sorts?
[18:59:20] <sigmavirus24> I guess that would require re-doing the pip.commands dictionary
[18:59:22] <dstufft> everyone should use zsh
[18:59:54] <dstufft> sigmavirus24: extensions is probably dosable at some point, not sure it makes sense right now since pip doesn't have an API that we offer to people
[19:00:06] <sigmavirus24> Yeah
[19:00:22] <dstufft> without an API that we offer to people, the biggest thing that an extension point gives you is the ability to be executed as ``pip foo`` isntead of ``pip-foo``
[19:00:27] <dstufft> which isn't very much IMO
[19:00:37] <sigmavirus24> true
[19:01:08] <sigmavirus24> pip install pipopen
[19:02:24] <sigmavirus24> honestly, one of my favorite and least favorite things about ruby gems is that by structuring your project one way, you can totally extend something without entry points
[19:02:51] <sigmavirus24> want an ssh library? lib/net/ssh/ is all the structure you need for someone to do "require 'net/ssh'"
[19:04:05] <xafer> hello, any feedback on https://github.com/pypa/pip/pull/2294 ?
[19:04:21] <dstufft> sigmavirus24: isn't the flipside of that it's super hard to figure out if someone _is_ extending your project or where they are extending it at?
[19:04:59] <dstufft> xafer: I haven't yet worked up the will to think about eggs and try to figure out if it's going to break anything yet ;(
[19:05:06] <sigmavirus24> dstufft: hence "favorite and least favorite"
[19:09:24] <xafer> well on old system that installed with not pep440 version it will certainly break :o
[19:10:57] <xafer> and the lack of feedback info due to the absence of the "else" clause makes it harder to debug than it could
[19:26:14] <pmxbot> jaraco pushed 10 commits to setuptools (https://bitbucket.org/pypa/setuptools/) :
[19:26:14] <pmxbot> Extract variable
[19:26:14] <pmxbot> Add another assertion on the exception.
[19:26:14] <pmxbot> Remove unreachable branch
[19:26:14] <pmxbot> Add test for WorkingSet.find() when a conflict occurs.
[19:26:14] <pmxbot> Test the report method
[19:26:14] <pmxbot> Split out ContextualVersionConflict
[19:26:14] <pmxbot> No need to mutate the set to a list; just use the set.
[19:26:14] <pmxbot> Only raise a ContextualVersionConflict when dependent requirements are present.
[19:26:14] <pmxbot> Normalize whitespace
[19:26:14] <pmxbot> Add test capturing expectation when dependencies conflict during resolve. Fixes #281
[19:29:57] <pmxbot> jaraco pushed 1 commit to setuptools (https://bitbucket.org/pypa/setuptools/) :
[19:29:57] <pmxbot> Fix test failure on Python 2
[19:38:39] <pmxbot> jaraco pushed 3 commits to setuptools (https://bitbucket.org/pypa/setuptools/) :
[19:38:39] <pmxbot> Update changelog
[19:38:39] <pmxbot> Added tag 11.1 for changeset 6cd2b18f4be2
[19:38:39] <pmxbot> Bumped to 11.2 in preparation for next release.
[19:42:42] <pmxbot> jaraco pushed 1 commit to setuptools (https://bitbucket.org/pypa/setuptools/) :
[19:42:42] <pmxbot> Remove references to removed files
[20:33:13] <ionelmc> dstufft: i think i'm gonna take a shot at the virtualenv-in-virtualenv thing again
[20:33:23] <dstufft> ionelmc: sure!
[20:33:29] <dstufft> ionelmc: I'm working on a test suite right now heh
[20:33:39] <sigmavirus24> dstufft: I heard scripttest is good for this kind of thing
[20:33:51] <dstufft> scripttest isn't good for anything
[20:33:53] <dstufft> :(
[20:34:00] <sigmavirus24> https://i.imgur.com/WZyURav.png
[20:34:04] <dstufft> right now I'm just doing the unit tests
[20:34:05] <ionelmc> dstufft: yeah i have added some basic test with scriptest, but you've deleted it :-)
[20:34:15] <dstufft> ionelmc: oh I didn't notice they were new
[20:34:22] <ionelmc> test_integration was
[20:34:22] <dstufft> oops
[20:34:27] <ionelmc> no worries
[20:34:31] <sigmavirus24> git commit --yolo
[20:35:20] <ionelmc> speaking about the tests
[20:35:24] <dstufft> I need to figure out if there is a saner way to doing functional tests for this than scripttest
[20:35:30] <dstufft> surely there is a better thing to use
[20:35:33] <dstufft> right? RIGHT?
[20:35:34] <ionelmc> is there an easy way to get all the installed interpreters?
[20:35:54] <dstufft> ionelmc: depends on your defintion of installs interpreters and what OS
[20:35:58] <ionelmc> dstufft: you can't mock your way out of it
[20:36:01] <dstufft> installed*
[20:36:03] <ionelmc> windows :)
[20:36:10] <dstufft> there's some registry thing
[20:36:24] <dstufft> that's about the extent of my knowledge though
[20:36:26] <ionelmc> yeah but i don't wanna query that directly
[20:36:27] <ionelmc> eww
[20:36:50] <ionelmc> dstufft: imo the right path is painful and slow integration tests
[20:37:08] <ionelmc> mocks don't do it justice
[20:38:06] <sigmavirus24> ionelmc: "it depends" is my usual answer
[20:38:26] <dstufft> ionelmc: well functional/integration and unit tests do different things, it'll have unit tests that cover everything I can do, but it more or less needs functional/integration tests either way, especially for the legacy isolation builder
[20:38:52] <sigmavirus24> not every aspect needs to be functionally/integration tested
[20:38:55] <ionelmc> i don;t mean `write *all* the tests as integration tests`
[20:39:06] <sigmavirus24> ah okay
[20:39:11] <sigmavirus24> you had me worried
[20:39:38] <dstufft> the current test suite for virtualenv is almost entirely integration tests
[20:39:48] <ionelmc> but it needs coverage, otherwise you'll endup with similar issues as virtualenv where you don't know what other things a bugfix will break
[20:40:01] <dstufft> they are also basically "run the virtualenv and see if the command errors and then go YOLO good enough"
[20:40:27] <ionelmc> dstufft: it is?! does it test `create virtualenv with different interpreter` ?
[20:41:13] <dstufft> ionelmc: don't think so
[20:41:30] <dstufft> I mean this is basically the entire test suite : https://github.com/pypa/virtualenv/blob/develop/tests/test_virtualenv.py
[20:41:45] <sigmavirus24> dstufft: WORKS FOR ME
[20:42:00] <dstufft> https://github.com/pypa/virtualenv/blob/develop/tox.ini#L11 this is the best test
[20:42:45] <dstufft> probably like 95% of the time the way we notice something broke in virtualenv is because the pip test suite broke
[20:43:37] <sigmavirus24> huh
[20:43:51] <ionelmc> meh :)
[20:44:10] <dstufft> (like half of the pip test suite ae functional tests which create virtualenvs, and the pip develop branch uses the virtualenv develop branch)
[20:45:28] <dstufft> I wonder if it even makes sense to keep the atime and mtime in a file we copy
[20:45:42] <dstufft> I'm kind of thinking it doesn't
[20:46:45] <willingc> dstufft, sigmavirus24, ionelmc: Happy New Year. Lots of good stuff that you are doing.
[20:46:46] <ionelmc> maybe for some backup/sync tool
[20:47:20] <dstufft> willingc: happy new year!
[20:47:36] <dstufft> ionelmc: yea, I mean for virtualenv-rewrite
[20:51:59] <ionelmc> dstufft: does a jython or pypy virtualenv have different layouts for windows/nix?
[20:52:16] <dstufft> ionelmc: I don't know
[20:52:33] <dstufft> I haven't even begun to start adding jython or pypy support back
[20:52:44] <dstufft> I was going to wait until after I had a test suite to start doing that
[20:57:13] <sigmavirus24> happy new year willingc !
[20:57:51] <willingc> Thank you sigmavirus24.
[21:02:32] <ionelmc> dstufft: when would sys.prefix be different than sys.exec_prefix ? is there any distro that configures python to have them different?
[21:03:05] <dstufft> ionelmc: dunno if anyone sets them different, but sys.prefix is where pure python crap goes, and sys.exec_prefix is where compiled crap goes
[21:03:59] <ionelmc> dstufft: cause virtualenv(legacy) only sets sys.real_prefix (and not sys.real_exec_prefix)
[21:04:30] <dstufft> it should probably set both
[21:04:31] <ionelmc> there would be malfunction for v-in-v if python is configured weirdly
[21:04:33] <dstufft> but YOLO
[21:05:56] <sigmavirus24> ionelmc: that's the spirit! :)
[21:06:32] <ionelmc> i can see how that has been said before ...
[21:07:31] <sigmavirus24> said every pypa developer ever =P
[21:22:23] <ionelmc> dstufft: you seem to have used `import os.path` explicitly a lot - is there a reason?
[21:22:37] <dstufft> ionelmc: compared to just ``import os``?
[21:22:54] <ionelmc> dstufft: in some cases yes
[21:24:34] <dstufft> mostly because I think it's clearer, os.path is documented as a seperate module (even though os.py does hacks with sys.modules that makes it that way) so I like to use it that way
[21:29:27] <sigmavirus24> ionelmc: I do the same because it more clearly conveys what specifically I'm likely to be using
[21:31:26] <ionelmc> sigmavirus24, dstufft: for me it signals that os doesn't do anything in it's __init__ (well actually, it's not an package, but it's the same thing)
[21:31:54] <ionelmc> and that expectation is mercilessly broken buy the terrible import code living in os.py
[21:32:10] <ionelmc> s/buy/by/
[21:32:40] <ionelmc> it's like `import pip.commands.wheel`
[21:32:58] <ionelmc> that ain't gonna fly, cause pip does all sorts of crazy things in __init__.py
[21:34:15] <ionelmc> put it in other words, `import foo.bar` means that you can use `bar` without `foo` - as `foo` is a namespace package
[21:34:34] <ionelmc> but `os` is not that, it's very far from that
[21:35:11] <dstufft> I don't think that really holds, because ``foo`` can have all sorts of code (and often times does)
[21:35:31] <dstufft> also os.path is documented as a seperate module
[21:35:42] <dstufft> https://docs.python.org/2/library/os.path.html
[21:36:30] <ionelmc> dstufft: foo.bar in the hypothetical scenario where foo/__init__.py is empty, of course
[21:37:29] <ionelmc> just saying, if you're doing that for newbies that might look at the code, it's more confusing
[21:37:55] <dstufft> I think the opposite is more confusing
[21:38:09] <dstufft> especially considering os.path is documented as a seperate module
[21:38:47] <dstufft> I know when I first started doing python I was confused that I had to import foo.bar and I couldn't just import foo; foo.bar because os.path worked that way
[21:39:11] <ionelmc> dstufft: import os.path only works cause the evil sys.modules patching in os.py
[21:39:25] <ionelmc> you're just perpetuating evil :)
[21:39:50] <dstufft> ionelmc: I don't really care how it's implemented, all of the documentation treats it like it's written as os/__init__.py and os/path.py
[21:40:59] <dstufft> and there's a good chance that it would have been written like that except changing os.py to os/__init__.py would require changing other hacks in the python interpreter
[21:43:56] <ionelmc> what does rely on os being a file? (except virtualenv)
[21:44:26] <dstufft> ionelmc: the CPython startup sequence
[21:44:33] <dstufft> which is a messy shitload of C code
[21:44:37] <dstufft> and isn't well tested
[21:44:45] <ionelmc> screwy
[21:44:47] <dstufft> (this is the reason virtualenv releis on os.py)
[21:44:51] <ionelmc> we need to rewrite that too
[21:44:56] <ionelmc> :-)
[21:45:40] <dstufft> because CPython uses os.py as a sentinel to determine where everything else should be
[22:10:36] <r1chardj0n3s> dstufft: pypi search is quite slow now - could be related to the postgres upgrade maybe?
[22:10:59] <dstufft> r1chardj0n3s: PyPI didn't get upgraded, that's still on it's own DB cluster not on the PSF cluster
[22:11:02] <r1chardj0n3s> dstufft: in brighter news, we have a green light for shutting down the file replacement loophole
[22:11:08] <r1chardj0n3s> dstufft: ok, so it's just that it sucks ;)
[22:11:24] <dstufft> it's a TODO item for me and EWDurbin to get PyPI off of it's own DB cluster though
[22:11:31] <r1chardj0n3s> yup
[22:11:38] <dstufft> and awesome!
[22:11:51] <dstufft> I'll add some code to close that file replacement loophole
[22:12:11] <dstufft> I have the start of what will become the object store mostly done too. or rather I have the abstractions that will enable it
[22:12:30] <dstufft> it's still using the filesystem, but it makes it easy to move
[22:31:55] <r1chardj0n3s> yes, warehouse does have faster search results. because it uses a different architecture. and isn't ready yet. "there's not a lot we can do immediately" ugh
[22:51:15] <ionelmc> dstufft: you should make the rewrite a branch, or maybe a different repo?
[22:51:20] <ionelmc> for easier management of prs
[22:51:39] <dstufft> ionelmc: a branch on the official repo? yea possible
[22:51:52] <ionelmc> yeah but then where you keep the feedback
[22:52:01] <ionelmc> now you have the main pr for it at least
[22:52:05] <dstufft> yea
[22:52:36] <dstufft> well you'd still have the main PR, (it'd have to be a different main PR though), since it could have a PR from the main repo branch to the develop branch
[22:53:40] <dstufft> I might end up doing that once It's closer to being done
[22:53:59] <dstufft> maybe once I get the unit tests done
[23:03:38] <r1chardj0n3s> dstufft: is PEP 440 on python.org up to date?
[23:03:58] <r1chardj0n3s> (I'm trying to decipher your "there is no "default" comparison operator" commen)
[23:04:31] <r1chardj0n3s> since my slides don't mention a "default" operator, but I do have "== Version matching clause" is that it?
[23:04:45] <dstufft> yea
[23:04:47] <dstufft> er
[23:04:49] <dstufft> yea it's up to date
[23:05:10] <dstufft> you mentioned things like "2.4 and ~=2.4 are equiv to >=2.4,!=2.*
[23:05:35] <r1chardj0n3s> yep, just trying to explain the "compatible" clause
[23:07:26] <dstufft> r1chardj0n3s: yea, I'm just saying "2.4" by itself isn't meaningful
[23:07:45] <dstufft> the PEP had some of those left over from before we removed that, I assume you copied it from there
[23:08:50] <r1chardj0n3s> ahh, ok, I have "~= 2.4.3
[23:08:50] <r1chardj0n3s> 2.4.3
[23:08:50] <r1chardj0n3s> are both equivalent"
[23:09:19] <r1chardj0n3s> I think that might be what you're saying is not correct any longer
[23:09:43] <r1chardj0n3s> (since I don't see text indicating that in the PEP any longer)
[23:10:10] <r1chardj0n3s> which I believe is correct
[23:10:26] <r1chardj0n3s> ugh, IRC client killed that message
[23:10:36] <dstufft> r1chardj0n3s: yes
[23:10:42] <r1chardj0n3s> Now I just have "~= 2.4.3 is equivalent to >= 2.4.3, == 2.4.*" which I believe is correct
[23:10:48] <dstufft> yes
[23:11:19] <dstufft> originally PEP 426 and PEP 440 together had the requirement syntax being "foo (~=2.4.3)"
[23:11:25] <dstufft> which came from distutils2 I think
[23:11:51] <dstufft> so we had the default specifier being "foo (2.4.3)" being the same as "foo (~=2.4.3)"
[23:12:16] <dstufft> but we got rid of that because it was incompat for little reason to what setuptools and pip expected, and harder to type on the command line, to just foo~=2.4.3
[23:12:35] <dstufft> but we didn't fully excise all the crap from the PEP
[23:39:14] <ionelmc> i got virtualenv-in-legacy-virtualenv to work dstufft
[23:39:44] <ionelmc> but now i realise that the whole flavor thing is not flexible enough
[23:40:23] <ionelmc> you'd think you'd make a flavor for pypy, but then you still need the windows/nix differentiation :-|
[23:41:27] <dstufft> ionelmc: well PyPy shouldn't matter except for the legacy thing
[23:41:55] <dstufft> so maybe it needs something else
[23:42:22] <dstufft> like the flavors thing makes sense even for venv
[23:51:29] <ionelmc> meh, sysconfig wants the real sys.executable on linux