20 ms·
Python 3.11.0 final
- cheptsov 4y agoWould be great to have its supported by Conda. Anyone has an idea on when this might happen?
- remram 4y agoLMGTFY: https://github.com/conda/conda/issues/11170 https://github.com/conda/conda/issues/11170
- mark_l_watson 4y agoThanks for that. I almost always prefer conda but to try 3.11 I will just use pyenv. So thanks for saving me some time.
- DwnVoteHoneyPot 4y agoYou can add conda-forge channel to conda. Conda-forge packages are updated faster. Someone on reddit said conda-forge will have 3.11 within a week.
- maxnoe 4y agoIt's already there: https://anaconda.org/conda-forge/python https://anaconda.org/conda-forge/python https://github.com/conda-forge/python-feedstock/pull/577 https://github.com/conda-forge/python-feedstock/pull/577 Using mamba to create a new encoding called py311 with python 3.11: mamba create -n py311 python=3.11
- mark_l_watson 4y agothanks!
- maxnoe 4y agoconda-forge has already published 3.11 packages: conda create -c conda-forge -n py311 python=3.11
- mark_l_watson 4y agoGreat thanks!
- teddyh 4y ago> Python 3.11 is up to 10-60% faster than Python 3.10. Nice! > PEP 657 – Include Fine Grained Error Locations in Tracebacks Hmm, what’s this? Traceback (most recent call last): File "test.py", line 2, in <module> x['a']['b']['c']['d'] = 1 ~~~~~~~~~~~^^^^^ TypeError: 'NoneType' object is not subscriptable Yessss
- deleted 4y ago[deleted]
- wodenokoto 4y agoDoes that work for chained pandas expressions too? I love writing chained expressions but debugging them is like visiting a special kind of hell.
- iruoy 4y ago> This highlighting will occur for every frame in the traceback. For instance, if a similar error is part of a complex function call chain, the traceback would display the code associated to the current instruction in every frame: Traceback (most recent call last): File "test.py", line 14, in <module> lel3(x) ^^^^^^^ File "test.py", line 12, in lel3 return lel2(x) / 23 ^^^^^^^ File "test.py", line 9, in lel2 return 25 + lel(x) + lel(x) ^^^^^^ File "test.py", line 6, in lel return 1 + foo(a,b,c=x['z']['x']['y']['z']['y'], d=e) ~~~~~~~~~~~~~~~~^^^^^ TypeError: 'NoneType' object is not subscriptable
- hnews_account_1 4y agoAll my data devs please stand up! I sometimes sacrifice readability just because I hate creating variables. But then if it affects debugging times, my boss would be furious. As such, I use a full debugger anyway so I can trace quickly.
- emehex 4y agoIf you like writing chain-able pandas, you should check out: https://github.com/maxhumber/redframes https://github.com/maxhumber/redframes
- iruoy 4y agoPypy and Pyston are still quite a bit faster than CPython, but this is a huge improvement in one release. https://www.phoronix.com/review/python311-pyston-pypy https://www.phoronix.com/review/python311-pyston-pypy
- miohtama 4y agoAre there any plans to change Python the language to make it faster? AFAIK most of the slowness comes from dynamic overhead, like object attributes may change or disappear in the middle of a loop and so on.
- cdavid 4y agoI doubt so, it would break almost any non trivial piece of python. And the ecosystem is a large reason for current python's success. Being dynamic make it harder to be fast, but JS/v8 is as dynamic as python, and much faster.
- jokoon 4y agoIf there was enough money, it would be possible to have a v8 equivalent to python.
- beagle3 4y agoBut some dynamic features, e.g. “with” make JS and its JITs give up and run slowly. Those features are not in common use. Python’s hard-to-optimize dynamic features are more commonly used.
- mytherin 4y agoThe hardest part about optimizing Python is the fact that there are so many packages out there relying on every single documented and undocumented aspect of the C/C++ interface, which is incredibly broad and directly tied to the internals of the language. If they change anything in a non-backwards compatible manner many of those packages will break, and those packages are the reason so many people use Python to begin with. Javascript never had this problem, as all code was always written in Javascript itself by necessity, so it was far easier to optimize as you did not have to worry about backwards compatibility of the internals.
- zeristor 4y agoPy day
- zeristor 4y agoHow long before Python 3.14.15?
- mikepurvis 4y agoThat would be a lot of point releases! Maybe if the BDFL declares Python 3 finished at 3.14 and we have to move on to Python 4 though. :) Or we'll have to be content with 3.14.1 as our pi py.
- eru 4y agoWell, we are at Python 3.9.15 at the moment. So reaching 15 point releases seems quite doable.
- mikepurvis 4y agoWell dang, I guess I haven't kept up.
- rrdharan 4y agoI know you’re kidding but just a reminder that Python explicitly no longer has a BDFL.. gvr renounced that position.
- digitalsankhara 4y agoThank you for putting a smile on my face.
- wartijn_ 4y agoPython has a 12 month release schedule[0], so 3.14.0 should be released in October 2025. Of the python 3 versions, only 3.6 and 3.7 got to .15, about 4 and 5 years after their releases[1]. But 3.9.14 was released last month, less than two years after it's initial release. So somewhere between 2027 and 2030? [0] https://peps.python.org/pep-0602/ https://peps.python.org/pep-0602/ [1] https://www.python.org/doc/versions/ https://www.python.org/doc/versions/
- samuli 4y agoHuge thanks to everybody involved in making Python 3.11. Absolutely love the improvements.
- oflebbe 4y ago+1 for explaining kerr singularities
- msdrigg 4y agoHonestly super interesting, but I have no idea why they included this. Anybody have any idea who wrote this/why they would add this in?
- isitmadeofglass 4y agoWhat’s with the weird section on black holes at the end? Was it added to track bots doing automatic reposting or similar?
- linkdd 4y ago> And now for something completely different Is a Monty Python reference, what follows is actually, completely different. They did not lie :)
- omoikane 4y agoIt seems to be an ongoing tradition as well, I would go read the previous release notes just for those bits. https://www.google.com/search?q=inurl%3Ahttps%3A%2F%2Fwww.python.org%2Fdownloads%2Frelease%2F+%22And+now+for+something+completely+different%22 https://www.google.com/search?q=inurl%3Ahttps%3A%2F%2Fwww.py...
- deleted 4y ago[deleted]
- sicariusnoctis 4y agoPython 3.11 made some updates to the `import antigravity` feature.
- robertwt7 4y ago> Python 3.11 is up to 10-60% faster than Python 3.10. Horrayy!! Does anyone has any experience with working with python in a very large scale? Most of the big tech companies I worked with use Java, I remember when working with large scale JS projects it was nightmare to debug, TS came along and really saved the working experience and scale of JS/TS projects. I've seen TS adopted almost everywhere in big tech companies, some even create microservices with node. When choosing tech stack for a very small projects I tend to use Django, but when I want to create my own large scale business one day I'm quite afraid to use it because of the typing problems, I might choose node/nestJS, but just wonder how does it work in large scale businesses that use python mainly? Is it a nightmare to debug?
- ZeKK14 4y agoThe typing issues are being solved through mypy: http://mypy-lang.org/ http://mypy-lang.org/ A large majority of packages are still missing typing hints, but the ecosystem is moving in the right direction on that issue.
- jsmeaton 4y agoI work on a reasonably large Django project (1M+ LOC) with approximately 100 developers and mostly have a reasonable time debugging. We use mypy, lots of linters (some custom flake8 plugins), and a fairly strict layered architecture[0] that's enforced with tooling[1]. Without the tooling it's a nightmare. My previous Django project with approx 500k LOC had linting and some typing and that was a mess. [0] https://github.com/octoenergy/conventions/blob/master/patterns.md https://github.com/octoenergy/conventions/blob/master/patter... [1] https://github.com/seddonym/import-linter https://github.com/seddonym/import-linter
- yuvadam 4y agoFlashbacks to Windows 3.11 - regardless, a super exciting release.
- voxadam 4y agoBetter Windows 3.11 than MS-DOS 4.0.
- theandrewbailey 4y agoPython for Workgroups
- coldtea 4y agoThat the stdlib added support for parsing TOML but not for serializing to it (at least that was the case I read about the 3.11 when it was upcoming), sounds really short-sighted - couldn't they just add that too?
- emblaegh 4y agoI assume reading toml files constitutes 90% of the use cases, as it's mostly used for configuration, much like the configparser module.
- coldtea 4y ago>as it's mostly used for configuration Well, people write configuration in JSON, XML, and INI and process those and re-serialize to those formats too It's also handy for making one-off scripts for changes to a big-ish configuration file - even if it's not a part of some automated pipeline.
- iainmerrick 4y agoParsing TOML is clearly useful, but the case for serialization is much less clear. It's meant to be human-writable, and offers multiple ways to express the same table data; what format should a TOML serializer use? I can see that you might want to programmatically edit a TOML file, preserving the rest of its layout unchanged. That's a bit fiddly to get right, and needs a different interface from a pure serializer. If the correct design isn't obvious, better to leave it out for now. It could still be added later.
- coldtea 4y ago>Parsing TOML is clearly useful, but the case for serialization is much less clear. I never met any format where parsing it is useful but serializing to it is not. Maybe some binary format where I only care for e.g. playing a video or decoding an image. For a configuration format though? The obvious use case is reading, altering AND writing back. >It's meant to be human-writable, and offers multiple ways to express the same table data; what format should a TOML serializer use? It should just pick one and stick with it? If N versions of the format express the same data (deserialize into the same structure) then it doesn't really matter from a functional way which they pick. Users would still need to pick a TOML lib to write data - so they already OK with that lib picking a specific way. Why wouldn't they be OK with Python do it? If they don't want nobody to mess with their hand-written TOML files, they can always just not write them back from Python.
- elnatro 4y agoThank you to all developers, testers, and everyone that made this release of Python possible.
- BerislavLopac 4y ago> PEP 680 – tomllib: Support for Parsing TOML in the Standard Library Perhaps now flake8 will finally add the support for pyproject.toml as a config file...
- benji-york 4y agoThat probably won't happen any time soon. See https://github.com/PyCQA/flake8/issues/234#issuecomment-1206730688 https://github.com/PyCQA/flake8/issues/234#issuecomment-1206...
- scrollaway 4y agoI have dropped flake8 everywhere due to how hostile it has become to the rest of the python ecosystem. They pull a lot of nonsense like this, such as a refusal to fix their dependency pinning with no logical reasoning. Besides… Between Black / Tan for cosmetic issues and Mypy / Pylance / Pyright for logical issues, flake8 has never since caught any concrete problem with my codebase and has solely been a source of things to disable or work around.
- claytonjy 4y agoI find Pylint to be great, catches a lot, integrates well enough into pyproject, and the new standalone vscode extension is solid. If only I didn't have to restart the Pylint server every time I update a signature...
- BerislavLopac 4y agoMy key problem with pylint - and the main reason why I have been using flake8 - is its terrible defaults; it takes huge amount of configuration to get a sane set of reports. But I might need to look into it again...
- claytonjy 4y agoI've never tried adding it to a large project, but in starting with it early I'm continually impressed with what it finds. "Unnecessary comprehension in any/all" was the latest surprise. I have just three configs: - ignore TODOs (but only in pre-commit so i still get the IDE squiggles) - line length 88 (black compatibility) - add pydantic to extension whitelist
- develatio 4y agoPreviously reported here: https://news.ycombinator.com/item?id=33324598 https://news.ycombinator.com/item?id=33324598
- smitty1e 4y agoCalls for song: https://youtu.be/mjfT2joaJxs https://youtu.be/mjfT2joaJxs
- martopix 4y agoI think closed time-like curves are not a desirable feature in a scripting language. I wouldn't want to end up being my own grandfather by mistake.
- emblaegh 4y agoPython is meant to be easy to use, not paradoxless. If you want no paradoxes just use C++.
- germandiago 4y agoC++ is very irregular in the corners byt nuch more regular than you might think in its core concepts.
- int_19h 4y agoThat's a bad idea given the sheer amount of "undefined behavior" in the language. To remind, UB means that your app can do what you expect, or it might delete all your files... or it might cause a time-travel paradox erasing your very existence to avoid the offending code from ever being written in the first place. You never know!
- deleted 4y ago[deleted]
- BiteCode_dev 4y agoThe better error messages alone make it worthwhile to upgrade. The trend started in 3.10, and it already made a difference for me, my coworkers and students. But remember that while it's great to play with it freshly out of the oven, and that you might want to test your projects/libs with it, we should wait a bit before migrating production. Indeed, every first release of a new major version of Python eventually important bugs that get ironed out in a later patch. Also, some libs on pypi may simply not be compatible with it yet, breaking your pip install. I usually wait until the 3rd patch myself, after many years of paying the price of greedy upgrades.
- thejosh 4y agoOnce everything gets wheels/bumped, it'll be a lot easier. The last few major versions have been fairly straight forward to upgrade once they're all in place, and the nice thing is this should hopefully fix any remaining packages that aren't built for the arm64 macs.
- snvzz 4y agoOnce 3.12 is out, perhaps it'll be time to move to 3.11.x.
- 4m1rk 4y ago> I usually wait until the 3rd patch myself, after many years of paying the price of greedy upgrades. We wouldn't get there if everyone does that though.
- fluidcruft 4y agoWhy not? Production isn't where bugs should be found. Plenty of time to test things before production.
- bravetraveler 4y agoTo be fair to who you're replying to, this did basically start with "new version -> production" Not much room left for integration/development and so on I pick these things up early in lower environments, as I suppose you do, so that the real production upgrade isn't scary... and we don't fall behind Waiting forever for the community to QA doesn't work, you probably aren't running exactly what they are
- prennert 4y agoExciting release. All useful additions. Love the Variadic Generics (embed array layout into its type top avoid confusion). A surprisingly common issue in data science code. But.. I am I the only one who struggles to parse the Exception groups? *ValueError: ExceptionGroup('eg', [ValueError(1), ExceptionGroup('nested', [ValueError(6)])]) *OSError: ExceptionGroup('eg', [OSError(3), ExceptionGroup('nested', [OSError(4)])]) | ExceptionGroup: (2 sub-exceptions) +-+---------------- 1 ---------------- | Exception Group Traceback (most recent call last): | File "<stdin>", line 15, in <module> | File "<stdin>", line 2, in <module> | ExceptionGroup: eg (2 sub-exceptions) +-+---------------- 1 ---------------- | ValueError: 1 +---------------- 2 ---------------- | ExceptionGroup: nested (1 sub-exception) +-+---------------- 1 ---------------- | ValueError: 6 +------------------------------------ +---------------- 2 ---------------- | Exception Group Traceback (most recent call last): | File "<stdin>", line 2, in <module> | ExceptionGroup: eg (3 sub-exceptions) +-+---------------- 1 ---------------- | TypeError: 2 +---------------- 2 ---------------- | OSError: 3 +---------------- 3 ---------------- | ExceptionGroup: nested (2 sub-exceptions) +-+---------------- 1 ---------------- | OSError: 4 +---------------- 2 ---------------- | TypeError: 5 +------------------------------------ Would it not have been better to left or right align the exception group id? Centering them just clobbers them with the actual error output and makes it a bit hard to parse.
- joenot443 4y agoI've written Python for a long time now but I still had a very difficult time grokking the Exception groups format. Maybe it'd look better in the terminal, but to me it feels like the table formatting makes it HARDER to understand.
- quietbritishjim 4y agoThat output looks super complicated, but if you get an error like that then I think you're in a super complicated situation to start with: you've started a hierarchy of tasks, of which 6 raised exceptions (only counting leaf-node exceptions) at 4 different levels of the hierarchy. I could believe that left aligning the exception group index could've made it a little simpler though.
- bombolo 4y ago> Python 3.11 is up to 10-60% faster than Python 3.10. Or it can be slower… depends on your specific code. For me it's slower.
- acdha 4y agoDo you have examples?
- woodruffw 4y agoIt's not a language feature, but I wanted to point out a new aspect of how Python is released: releases are now signed with Sigstore[1], producing a certificate and signature for each source distribution/build in the release table[2]. This is intended to supplement the current PGP signatures, giving Python distributors (and the packagers themselves) a similar degree of authenticity/identity without needing to perform PGP keyring maintenance. [1]: https://www.sigstore.dev/ https://www.sigstore.dev/ [2]: https://www.python.org/downloads/release/python-3110/ https://www.python.org/downloads/release/python-3110/
- LtWorf 4y agoSo, if I understand, the solution to key management is to hand your keys to someone else?
- di 4y agoQuite the opposite: keys are generated once per signing event, and the private key never leaves memory.
- remram 4y agoI'm not sure I understand this, why generate a key pair and sign, rather than simply using a hashing function?
- kapilvt 4y agoverification of not just payload, but who/what signed, ie trust on who produced the artifact.
- woodruffw 4y agoHashing provides integrity, not authenticity. The idea behind sigstore is to enable an end user (which, for CPython, might be someone who intends to build it from source for inclusion in a package manager) to verify that the artifact is the same one produced by a trusted entity, not just the same one downloaded from a server. A strong cryptographic hash only provides the latter.
- nicoco 4y agoAbout this new asyncio.TaskGroup thing, I found this from Guido on the related GH issue* > After some conversations with Yury, and encouraged by the SC's approval of PEP-654, I am proposing to add a new class, asyncio.TaskGroup, which introduces structured concurrency similar to nurseries in Trio. I have never used but have been told that Trio's nurseries make it much easier to handle exceptions in asyncio tasks. Does someone more knowledgeable can tell if this will help? Looking at the docs*, this only seems to be a helper when you want to await several tasks at once, so I am not sure this changes much for exception handling. * https://github.com/python/cpython/issues/90908 https://github.com/python/cpython/issues/90908 ** https://docs.python.org/3.11/library/asyncio-task.html#task-groups https://docs.python.org/3.11/library/asyncio-task.html#task-...
- d0mine 4y agoThe context here is that TaskGroup + except* enable "structured concurrency" https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/ https://vorpus.org/blog/notes-on-structured-concurrency-or-g...
- quietbritishjim 4y agoAs an emperical point, I moved from asyncio to Trio and it was transformative. This will help bring asyncio almost up to parity but it's a pity that it's still possible to make tasks that don't belong to a task group - in Trio, the only way to start a task is to run it in a specified nursery. (But of course understandable for backwards compatibility.) > this only seems to be a helper when you want to await several tasks at once Sort of. It's a helper for if you want to run multiple tasks at once, not necessarily awaiting them. And you're definitely running multiple tasks at once otherwise you wouldn't be using asyncio in the first place. Task groups do require you to wait for the tasks - after all, you have to start the task in a task group, and then implicit await the tasks in it (by falling off the end of the task group context block). But you can always have an outer task group representing tasks that you indent to run indefinitely in the background. In that way, task groups force you to think about when a task would cancel other tasks, representing the overall structure of your program.
- stefantalpalaru 4y ago
- huskyr 4y agoThis seems like a nice release. It would be even nicer if they would summarize the major new features with some examples and short summaries instead of linking to PEP's and Github issues. I don't think many people have the time to read all of those to get a gist of the new features and changes.
- UncleEntity 4y agoLike the release notes? https://docs.python.org/3.11/whatsnew/3.11.html https://docs.python.org/3.11/whatsnew/3.11.html
- remram 4y agoI hate that both the first (3.11.0) and the last (3.11.9) releases of a minor version branch are called "final". I get it, 3.11.0 is "final" in the sense of "definitive" from the development team's point of view, the final one of the pre-releases. But 3.11.9 is also called "the ninth and final 3.11 bugfix update" in the schedule [1], the actual final one from the maintenance team's point of view, in the sense there will be no more. Can't we find better terms, that work for everyone? 3.11.0 stable? 3.11.0 actual? For anyone but the dev team, this is in no way a "final" release, this is the "first" release. [1]: https://peps.python.org/pep-0664/#lifespan https://peps.python.org/pep-0664/#lifespan
- quietbritishjim 4y agoDoes the first need a special name at all? The .0 (without b or rc, etc.) communicates its meaning just fine.
- willsmith72 4y agoMaybe we can change "final" to "finally"
- 323 4y agoIt's final in the sense there will be no other 3.11.0 version. If you want to be pedantic, 3.11.0 stable would also be a bad name - what if it's not actually stable but crashes all the time? And 3.11.0 actual, what does it actually mean? Is there a non-actual 3.11.0?
- pistolpeteDK 4y agoI agree. Maybe "3.11.0 public" or "3.11.0 release" would be better suited to distinguish between the various dev-builds and the "final" release of the minor version
- AdrianoKF 4y agoNot that it takes away from any confusion that arises from the wording, but (at least) it is consistent with the definitions from PEP 440: > A version identifier that consists solely of a release segment and optionally an epoch identifier is termed a “final release”. https://peps.python.org/pep-0440/#final-releases https://peps.python.org/pep-0440/#final-releases
- jokoon 4y agoI'm curious about the performance improvements, I guess one day it will match pypy or numba?
- ericvanular 4y agoWhat is the recommended installation & version management approach to Python on MacOS these days? Install directly from python.org? Homebrew? Conda?
- peanutbuterjly 4y agoI like pyenv
- claytonjy 4y agoPyenv works well, I just wish Poetry did that for me. Instead Poetry will gladly ignore a set pyenv unless you force it to pay attention.
- Hackbraten 4y agoMy workaround for that is to initialize every checked-out copy like so: pyenv install -s pyenv exec pip install poetry pyenv exec poetry install That incantation goes into my README.md. Inconvenient, but I’ve come to accept it. I only need to run it after initial checkout and when the .python-version changes.
- claytonjy 4y agoInteresting! I like managing poetry at the user level with pipx, so my usual incantation is pyenv local 3.11.0 poetry init poetry env use $(pyenv which python) poetry install
- Hackbraten 4y agoI’ve settled for pyenv and poetry for my projects. As a former Homebrew maintainer, allow me to stress another thing: Don’t use your system’s (or even your system-level package manager’s) Python environment for your Python projects. That Python environment isn’t for you. It exists primarily for one single reason: to make other packages work that happen to depend on Python. The same goes for Node.js, Ruby and other fast-evolving platforms. Now, if you _do_ use that environment, the packaging police isn’t exactly coming for you. Just be aware that maintainers are free to version-bump or even remove the environment at any time without notice. That’s why you’re going to be happier and safer if you use *env- (pyenv, nodenv, …) managed installations.
- butz 4y agoI would like to start working with Python professionally, what might be the best entry points?
- bityard 4y agoIn what context? If you mean learning the language, you could start with the tutorial: https://docs.python.org/3.11/tutorial/index.html https://docs.python.org/3.11/tutorial/index.html If you mean finding an entry-level engineering position, then it's the same as any other job search. Leverage your network to find openings, build something that shows you know enough Python to be dangerous and put it on GitHub, etc.
- pphysch 4y agoDepends on what domain you want to work in. Backend/web programming? Make a personal website with Django. Data science? Set up Jupyter/Conda and do your own analysis/follow tutorials. DevOps/Sysadmin? Try automating something with Python scripting. Requests, file parsing, running system processes and capturing output, etc. They are all fairly different skillsets and require learning different niches of the Python ecosystem.
- appleaday1 4y agoOh look TOML support. It feels good to see better support for that, as I had to argue with managers and related to use toml and to convince people that it was one of the ways forward wayyyyy back in the middle of covid.
- munro 4y agohttps://pyreadiness.org/3.11/ https://pyreadiness.org/3.11/ Big ask, but can we wait to release until X number of packages are supported before releasing? And stay in RC until then? No pyarrow :(
- dragonwriter 4y ago> Big ask, but can we wait to release until X number of packages are supported before releasing? And stay in RC until then? No, that’s silly. (1) There’s no reason for something that otherwise is ready for stable to stay in RC because an arbitrary number of edternal packages aren’t ready to say they are ready for it, and (2) No user actually benefits from X number of packages being ready, they benefit from the specific packages they depend on being ready. So its best for them to track them, and upgrade only when all the specific packages they need support the new version.
- bityard 4y agoNot a great idea, IMHO. Lots of package maintainers are not at all interested in explicitly supporting unreleased versions of Python. I would certainly be one of them. That said, Python releases generally don't introduce syntax-breaking changes. APIs are sometimes deprecated, but these have large windows that give maintainers plenty of advance notice. Years, typically. Practically all 3.10 code should run fine on 3.11, including your pyarrow.
- emehex 4y agoAnother thing to consider: the Python community is historically really bad at updating to the "latest and greatest". This [1] resource suggests that 80% of Python versions in the wild are Python 3.6-3.8!! [1] https://w3techs.com/technologies/history_details/pl-python/3 https://w3techs.com/technologies/history_details/pl-python/3
- emehex 4y agoI think this site is specifically keying in on the "Programming Language :: Python :: 3.11" PyPI classifier... While many packages haven't been updated to include this classifier, if you were to run all of the unit tests for all of the "Top 360" libraries on 3.11, I'd be willing to bet 350+ would pass without failure.
- insane_dreamer 4y agoSo does this mean 0 finally no longer resolves to False? ;)
- oger 4y agoLet‘s hope that Python in itself does not become a Kerr singularity. I don’t want to become an observer of this. And thinking of the image of a snake that eats its tail (forming a ring) makes me even fearful that there is some hidden message in this part of the release notes…
- bilsbie 4y ago> Python 3.11 is up to 10-60% faster than Python 3.10. I’d be so curious to hear how much faster it is than Python 2.4 (back when I first started)
- shadowgovt 4y agoOh good. This is the version my team was waiting for to migrate our library off of Python 2.
- imglorp 4y agoHappy to see the new features. Our sloppy container spec bit us today though. We had FROM: python:3-slim with a bunch of pip requirements following. Some of those were not 3.11 ready, eg scipy==1.8.0, and our build broke. Our answer was to not be sloppy and pin until everything catches up, eg FROM: python:3.10.8-slim and we're good. Hope someone sees this that needs reminding.
- jamesfinlayson 4y agoI was bitten once a few years ago and have always pinned everything since then. And of course last year I was bitten by a ~ in a package.json that I hadn't got around to pinning in a code base I'd inherited.
- rlayton2 4y agoThanks for that. A related note is for any requirements files. Something like this bit me the other day. Libraryname >=3.1 After a few years,the package was updated substantially and has lots of breaking changes in the recent branch. Fix was to so ==3.1 until we work out the next step
- Sohcahtoa82 4y ago> FROM: python:3.10.8-slim Any reason to not use python:3.10-slim? That seems to keep up-to-date on patch releases.
- imglorp 4y agoGood question and thank you for raising that possibility. I am ignorant here. Of course I'd prefer patches applied asap but... We are almost daily discovering upstream changes like this one that breaks something N components removed so our kneejerk response is usually to pin aggressively when found and periodically upgrade deps for a whole component. What are the chances I have some dep somewhere that says python<=3.10.8 and is working today but when that 3.10-slim spec allows 3.10.8 turn into 3.10.9 it will break? That's what happened today for scipy but on the 2nd int and not the third one, because we had started with 3-slim.