Skip to content

Preparing 3.0 release #728

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
obestwalter opened this issue Jan 5, 2018 · 39 comments
Closed

Preparing 3.0 release #728

obestwalter opened this issue Jan 5, 2018 · 39 comments
Assignees
Labels
type:organization has to do with the organization of the project (process)

Comments

@obestwalter
Copy link
Member

obestwalter commented Jan 5, 2018

Looking at what is going on here, I think it is high time to get a new release out :)

It would be great if we could coordinate here what needs to be done, before we can cut the next release.

The one thing that is on my radar is the question of the logo and the docs. There were several people that think that the middle part of the logo looks a bit too much like the male gender sign. Maybe we can find a solution for that, before the next release?

What else needs to be done before we can make a first rc?

I'll read my way into what happened over the last months and update https://github.com/tox-dev/tox/projects/7

@obestwalter obestwalter added the type:organization has to do with the organization of the project (process) label Jan 5, 2018
@obestwalter obestwalter self-assigned this Jan 5, 2018
@vlcinsky
Copy link

vlcinsky commented Jan 5, 2018

Regarding the logo resembling male gender sign: I propose to call it the perpen-dick-dick-ularity problem and "just ignore it", because:

  • any logo will suffer from similar kind of problems
  • in this case the geometry is not really an issue

Looking forward to all really important features in new tox release.

With best regards from my command line.

@obestwalter obestwalter changed the title Preparing 2.10 Preparing 2.10 release Jan 6, 2018
@sigmavirus24
Copy link

any logo will suffer from similar kind of problems

That's horribly dismissive and definitely false. Any good graphic designer could avoid that while still making an awesome logo.

@obestwalter
Copy link
Member Author

I am not a fan of the current state of the logo msyelf, but please let's keep the discussion about this here: #639.

I definitely don't see the decision about a logo as a blocker for the next release though.

@vlcinsky
Copy link

vlcinsky commented Jan 7, 2018

@sigmavirus24 sorry, I did not intend to be dismissive. My apologize. I am just looking forward to 2.10 release regardless of the logo.

@fschulze
Copy link

fschulze commented Jan 9, 2018

I think #734 and #426 should go into the release.

@obestwalter
Copy link
Member Author

obestwalter commented Jan 22, 2018

Life got in the way pretty hard, but I have some time (and mindspace) today and tomorrow, which I hope will be enough to get the rc out.

Next thing would be to remove me as a bottleneck for releases that I seem to have turned into now, as @hpk42 is busy doing other cool stuff and I effectively have made the release process more complex in my attempts to simplify it (D'OH), so I will use the little time I have over the next weeks to try to fix that.

@obestwalter obestwalter changed the title Preparing 2.10 release Preparing next release (2.10 or 3.0?) Jan 23, 2018
@obestwalter
Copy link
Member Author

I had some time to look through the issues and merged PRs. A lot has happened and it's really nice to see more contributors and the flurry of activity in the last months.

I will need some more time to wade through all of this and I also need to solve some interesting new problems I get, when trying to test and run things locally.

I changed the title because I get the feeling that we might want to call this one 3.0. There are a lot of changes, we dropped 2.6 and 3.3 support and last but not least we have a new logo and a new theme for the docs.

@gaborbernat
Copy link
Member

Eh I think this still is 2.x, no API change was done so no need to bump version.

@The-Compiler
Copy link
Member

Dropping Python versions is (for users of those) about as backwards incompatible as it can get, so I'd say definitely 3.0.

@nicoddemus
Copy link
Member

nicoddemus commented Jan 23, 2018

In pytest we used the python_requires meta-data in setup.py so Python 2.6 and Python 3.3 users could not install 3.3.0 at all (well that was the intention, but due to pytest-dev/pytest#2966 this did not went as smoothly as we hoped).

From a purity stand point it makes sense to release the next version as 3.0, but in practice I'm not sure it is strictly necessary.

Well that's just my two cents.

@obestwalter
Copy link
Member Author

obestwalter commented Jan 24, 2018

Hi @nicoddemus thanks for the context. This would also speak for a major version jump then I think.

@gaborbernat, you are correct on that part, but in my opinion this is not the only reason to make a bigger version jump. From my own experience when I see a big version jump in any software I use, I expect trouble or at least big changes. I took it from that angle.

About the trouble: The changeset that accumulated in the last 4 months gives me the feeling that we should expect some trouble. This might just be my pessimism speaking as I can't pinpoint it, but my gut feeling says that there are going to more problems than in the other releases I made since I put the inofficial release manager hat on. This might also be due to me not being able to look at every PR myself, like I still managed to do until last autumn.

About the big changes: there are big visible changes due to the overhauled docs and the new logo. This might not be as significant but I still think this is another reason why a 3.0 won't hurt.

And finally: I also see dropping support for older Python versions as something that would best be handled with a major version jump. If people still need 2.6 (3.3 won't much of a problem) they can pin tox to 2.x and be done with it. If anyone wants to backport bugfixes or features to 2.x they can fork tox and call it tox2 or so ... the rest of us can happily sail into the future with tox 3.x and rising :)

And just for good measure: it's not like we're going to run out of numbers ;)

@obestwalter
Copy link
Member Author

... and yes - I know most projects don't pin the tox version - but if they see a major version jump after tox screwed up their build they might be more ... understanding?

@gaborbernat
Copy link
Member

Beside expecting trouble I also expect new major features 👍 Not sure if any of the changes are that major; but I get your point. Fine for me either way I suppose.

@obestwalter
Copy link
Member Author

o.k. - I'll prepare 3.0.0rc1 this weekend.

@obestwalter
Copy link
Member Author

A change to conftest.py in 6b16b09 causes the tests in the release package to fail.

py36 create: /home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/py36
py36 inst: /home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/dist/tox-3.0.0rc1.zip
py36 installed: apipkg==1.4,attrs==17.4.0,coverage==4.4.2,execnet==1.5.0,pluggy==0.6.0,py==1.5.2,pytest==3.3.2,pytest-cov==2.5.1,pytest-forked==0.2,pytest-timeout==1.2.1,pytest-xdist==1.22.0,six==1.11.0,tox==3.0.0rc1,virtualenv==15.1.0
py36 runtests: PYTHONHASHSEED='2471455716'
py36 runtests: commands[0] | pytest --cov-config=/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/tox.ini --cov=/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/py36/lib/python3.6/site-packages/tox --timeout=180 tests
Traceback (most recent call last):
  File "/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/py36/lib/python3.6/site-packages/_pytest/config.py", line 328, in _getconftestmodules
    return self._path2confmods[path]
KeyError: local('/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/tests')

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/py36/lib/python3.6/site-packages/_pytest/config.py", line 359, in _importconftest
    return self._conftestpath2mod[conftestpath]
KeyError: local('/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/tests/conftest.py')

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/py36/lib/python3.6/site-packages/_pytest/config.py", line 365, in _importconftest
    mod = conftestpath.pyimport()
  File "/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/py36/lib/python3.6/site-packages/py/_path/local.py", line 686, in pyimport
    raise self.ImportMismatchError(modname, modfile, self)
py._path.local.LocalPath.ImportMismatchError: ('conftest', '/home/oliver/work/tox/tox/tests/conftest.py', local('/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/tests/conftest.py'))
ERROR: could not load /home/oliver/work/tox/tox/dist/tox-3.0.0rc1/tests/conftest.py

ERROR: InvocationError: '/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/py36/bin/pytest --cov-config=/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/tox.ini --cov=/home/oliver/work/tox/tox/dist/tox-3.0.0rc1/.tox/py36/lib/python3.6/site-packages/tox --timeout=180 tests'

@gaborbernat I don't know what the idea was behind changing that, but reverting the change in conftest fixes the problem. Can you give me some context there?

@obestwalter
Copy link
Member Author

obestwalter commented Jan 27, 2018

Just reverting the change in conftest.py does not seem to fix it after all. Looks like the trouble starts even before we can release. Now this happened: https://travis-ci.org/tox-dev/devpi-cloud-test-tox/builds/334136991

____________________ ERROR collecting tests/test_config.py _____________________
import file mismatch:
imported module 'test_config' has this __file__ attribute:
  /home/oliver/work/tox/tox/tests/test_config.py
which is not the same as the test file we want to collect:
  /tmp/devpi-test0/targz/tox-3.0.0rc1/tests/test_config.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules
_________________ ERROR collecting tests/test_interpreters.py __________________
import file mismatch:
imported module 'test_interpreters' has this __file__ attribute:
  /home/oliver/work/tox/tox/tests/test_interpreters.py
which is not the same as the test file we want to collect:
  /tmp/devpi-test0/targz/tox-3.0.0rc1/tests/test_interpreters.py
HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules

etc ...

I will have a another go tomorrow. If someone could give me hint what the problem could be I 'd be grateful.

@nicoddemus
Copy link
Member

@obestwalter are you testing the package locally? What happens if you use devpi-cloud-tester?

Also make sure to use the latest devpi when uploading this release to PyPI (see devpi/devpi#480).

@obestwalter
Copy link
Member Author

Hi @nicoddemus, this happens in both scenarios locally when I unpack the tar.gz (errors I pasted) and with devpi-cloud-test (posted link).

@nicoddemus
Copy link
Member

(oops sorry I didn't see the link)

@gaborbernat
Copy link
Member

@obestwalter it was proposed by @RonnyPfannschmidt see #711 (comment) as part of the review; I think it's some pytest change of doing things

@nicoddemus
Copy link
Member

The heart of the problem seems to be this:

imported module 'test_config' has this __file__ attribute:
  /home/oliver/work/tox/tox/tests/test_config.py
which is not the same as the test file we want to collect:
  /tmp/devpi-test0/targz/tox-3.0.0rc1/tests/test_config.py

Looking at the package, I see there's a bunch of .pyc files inside the package in the tests directory:

$ tar -ztf tox-3.0.0rc1.tar.gz
...
tox-3.0.0rc1/tests/
tox-3.0.0rc1/tests/test_pytest_plugins.py
tox-3.0.0rc1/tests/conftest.py
tox-3.0.0rc1/tests/__pycache__/
tox-3.0.0rc1/tests/__pycache__/test_z_cmdline.pypy-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_config.cpython-36-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_interpreters.cpython-35-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_config.cpython-35-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_pytest_plugins.cpython-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/conftest.cpython-34-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_interpreters.cpython-36-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_quickstart.cpython-36-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_interpreters.pypy-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_pytest_plugins.cpython-36-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_result.cpython-35-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_quickstart.cpython-35-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/conftest.cpython-36-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_interpreters.cpython-34-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_config.pypy-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_z_cmdline.cpython-36-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_quickstart.cpython-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_venv.cpython-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_config.cpython-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/conftest.cpython-35-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/conftest.pypy-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_pytest_plugins.cpython-35-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_result.cpython-36-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_pytest_plugins.cpython-34-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_z_cmdline.cpython-35-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_result.cpython-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_venv.pypy-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_interpreters.cpython-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_z_cmdline.cpython-34-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_quickstart.cpython-34-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_z_cmdline.cpython-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/conftest.cpython-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_pytest_plugins.pypy-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_venv.cpython-35-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_quickstart.pypy-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_venv.cpython-34-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_config.cpython-34-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_result.pypy-27-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_result.cpython-34-PYTEST.pyc
tox-3.0.0rc1/tests/__pycache__/test_venv.cpython-36-PYTEST.pyc
tox-3.0.0rc1/tests/test_z_cmdline.py
tox-3.0.0rc1/tests/test_config.py
tox-3.0.0rc1/tests/test_quickstart.py
tox-3.0.0rc1/tests/test_venv.py
tox-3.0.0rc1/tests/test_result.py
tox-3.0.0rc1/tests/test_interpreters.py
...

I think that's the problem: when test_config.py is being imported, its __file__ attribute contains the path where the package was created (/home/oliver/work/tox/tox/tests/test_config.py), which differs from the current file (/tmp/devpi-test0/targz/tox-3.0.0rc1/tests/test_config.py).

Not sure why those .pyc files are in there, I supposed devpi took care of not including those when creating the source package.

@obestwalter
Copy link
Member Author

Hi @gaborbernat, o.k. thank you for the info. Looks like this wasn't the root cause anyway. I did not have the time anymore yesterday to look into it in detail, so I jumped to conclusions (note to self: stop doing that).

Hi @nicoddemus, thanks a lot for checking that. This is the last thing that I would have expected, but I am glad it is something obvious like this. I will look into why they end up in the package and that should fix it.

@obestwalter
Copy link
Member Author

obestwalter commented Jan 28, 2018

o.k. all good now: https://github.com/tox-dev/devpi-cloud-test-tox - 3.0.0rc1 is released.

if you want to test it install it with:

pip install -U --pre tox

@obestwalter obestwalter changed the title Preparing next release (2.10 or 3.0?) Preparing 3.0 release Jan 28, 2018
@fschulze
Copy link

The change of cmdline in f85b827 broke devpi. It's easy to fix on the devpi side, but I'm not sure if it will also break detox. I wasn't able to get detox tests running when I tried. Maybe it would be better to revert cmdline back to test.session.main and change the entry point to tox.session.run_main instead.

@obestwalter
Copy link
Member Author

Hi @fschulze, I think you should open a new issue for that, where we can discuss how to fix that best.

@obestwalter
Copy link
Member Author

I will release another rc today and then release 3.0 in a few days, if nothing new turns up.

@obestwalter
Copy link
Member Author

It's online.

@obestwalter
Copy link
Member Author

obestwalter commented Mar 22, 2018

The docs build had failed for a few weeks with this failure:

git show-ref remotes/origin/default
git checkout --force default
error: pathspec 'default' did not match any file(s) known to git.

I have no idea why it tries to fetch from (literally) default. I set it to master in advanced build settings explicitly now, which has solved the problem.

@obestwalter
Copy link
Member Author

rc3 is online

@fschulze
Copy link

rc3 breaks devpi again. I can't really follow what exactly you reverted for #773, but if it's my fix, then that was too much. We should have fixed my fix 😉

@gaborbernat
Copy link
Member

@fschulze what is your fix?

@gaborbernat
Copy link
Member

eh I see it's because you call that cmdline both with args and without args 😢 why the inconsistency? previously it broke because you needed to pass in the arg, now it breaks cause it no longer accepts args

@fschulze
Copy link

@gaborbernat not sure what you mean, in devpi it's always called with args. What inconsistency do you mean? I see that it makes sense to be able to run cmdline() without args if you don't want to pass any, so my fix from #756 could easily be adapted by making args at https://github.com/tox-dev/tox/blob/master/tox/session.py#L41 optional and both usecases would work

@gaborbernat
Copy link
Member

gaborbernat commented Mar 23, 2018

wanted to make the args really not optional there for clearness :-| but I see we can't have that and support that, without breaking someones scripts :-|

@obestwalter
Copy link
Member Author

And here is rc4.

@fschulze
Copy link

Works again for devpi, thanks!

@obestwalter
Copy link
Member Author

Looks like th last rc is doing o.k. so I will do the release either today or at some point over easter. 🎆

@obestwalter
Copy link
Member Author

3.0 is out. If you want to spread the word and use this tweet thingy, you could retweet this: https://twitter.com/obestwalter/status/980880848496070656

@obestwalter
Copy link
Member Author

Or do not retweet because it contains a stupid mistake (3.6 instead of 3.3) :)

@tox-dev tox-dev locked and limited conversation to collaborators Jan 14, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
type:organization has to do with the organization of the project (process)
Projects
None yet
Development

No branches or pull requests

7 participants