Sourcery instantly reviews your Python code and refactors it, making it cleaner and more readable. Itβs like having a pair programmer always working next to you. Install into PyCharm, VS Code, or your GitHub repos in 1 minute. It's free!
@eamonncarey thanks! We're going to be focused on Python for the next several months to year at least. We want to make sure we are able to really help Python developers make meaningful improvements to their code and work much faster. Then we'll start to shift over to other languages.
Javascript and Java are the first two on our list, but we've had requests for pretty much every language out there - so depending on what people want those plans might change.
This looks really cool! Excited to give it a try and congrats on launching.
I'm really curious to know how the suggestions handle opinion β aware that Python has 'one obvious way' but devs are still opinionated (I'm as guilty as the next person) on coding styles, and I'm keen to know how you handle that β as I've often found JetBrains auto formatting very restrictive and undoing of my personal conventions β and how (or if?) you see it expanding beyond Python to more opinionated languages? :)
Thanks @djmckee !
You're definitely not alone - we're opinionated ourselves as developers π. That's why we've set up Sourcery so you can review every suggestion before it's implemented (if you want) and can choose to skip an individual suggestion or configure Sourcery to not suggest certain types of refactorings altogether. In terms of formatting we try our best to fit in with the style of the existing code.
As for other languages. We're still a ways out from moving beyond Python - but we will likely have a similar approach where we will take a strong line on what is best practice and how the code should be structured, but always give you flexibility to code to your own style/approach/opinion
This is amazing! Congrats on your PH launch team!
Are you saying that Sourcery will auto-suggest improvements on my GitHub repos directly π€―?
Interested to hear more!
Thanks @_teddy !!
And exactly. If you add Sourcery to your GitHub repos Sourcery will automatically review any new pull request you make. Or you can have Sourcery review your entire repo anytime you want from your Sourcery dashboard.
We're Python only for now - so we won't review sections of your repos in other languages - but we'll get there in the future :)
Love the name. Will be trying this out in PyCharm (thanks for making a free version so I can try it!). When you say 'Advanced Refactorings' in the pro version, what specifically do you get over the free version?
@swaldy :)
Advanced refactorings in Pro are currently focused around more complex types of method extraction for duplicate/similar code. We're frequently expanding the types of refactorings Sourcery does, so this will be changing in the near future :)
Thanks for the support @macgridcupcake ! We're planning on supporting Javascript and Ruby in the future, but there's only so much the three of us can tackle for now :).
I think you guys said you use opensource git repos as "training data" β¦ is this correct? β¦ is there an AI component to your product? β¦ Would it be possible to train your model with a local ascii text corpus?
@brendan_maginnis@nick_thapen@tim_sourcery This is awesome! π We have been using Sourcery for a while now and are super excited about how easy it makes refactoring our code + it gives us cool advice on how to simplify our code. Very excited to see what's coming in the next releases! π
Thanks @lukas_kemkes ! I always love to hear when Sourcery is helping out teams a lot. We're working now on getting more types of suggestions for your code, doing more complex refactorings (moving to the class level), and building out more tools to help you deal with duplicate code.
@stefano_marchetti definitely something we're planning on adding in the future. First we want to make Sourcery more powerful for Python and build out some of our more complex code improvement tools. But then the plan is to start supporting other languages and javascript is one of the first on the list :)
@pavt thanks! Planning on supporting both in the future. For Sublime we have a bit of a workaround at the moment. It's not as integrated as our VS Code & PyCharm plugins but still gives you all the refactorings - https://github.com/sourcery-ai/s...
Sadly Sourcery seems to heavily prefer making the code more compact and less readable, converting normal if statements to ternary, loops to comprehensions etc. This does not make the cleaner or more readable in any way. Writing something out across multiple lines is in most cases more readable than making it a single line. It has multiple times caused my linter to complain about line length and i had to undo multiple refactorings that were making the code much less readable.
I recommend Sourcery reevaluates the focus on shortening the code to actually refactoring bad patterns like range(len()).
Thanks for hunting Sourcery @davidcohen!
Hey Product Hunt π - @nick_thapen, @tim_sourcery, and I are very excited to be sharing Sourcery with you all. Sourcery instantly refactors your code while you're working directly in your IDE.
We're obsessed with trying to figure out the best way to write high quality code - and Sourcery is our way to make sure everyone can always work with the cleanest code possible.
Sourcery sits in the background when you're working, analyzing your code, finding problems, and suggesting changes to make your code easier to read. In your IDE Sourcery works fully locally, so your code is always private.
We're focused on Python right now and have integrations with PyCharm, VS Code, and GitHub. Sourcery's still in its early days - so let us know how we can keep improving it to make it more useful to you π
It's free to get started - just sign up on our site, add Sourcey to your IDE, and let us know what you think!
Thanks @csaba_kissi ! We're aiming to expand Sourcery to other languages down the line (we're planning on starting with Java and Javascript next). But first we want to provide even more detailed, frequent, and impactful improvements for Python.
Hi @brendan_maginnis@nick_thapen@tim_sourcery - great to see you launch! I know a few folks who've been using Sourcery over the past couple of months, and they've nothing but praise for it.
Be interested to know how you make sure your reviews and refactoring suggestions are accurate? Is Sourcery implimenting basic best practise and fixing obvious mistakes, or is it learning in a dynamic way across your crowd of users?
@brendan_maginnis@tim_sourcery@paul_a_smith
Thanks Paul that's great to hear! We take a lot of care to make sure that the suggestions are correct.
Firstly bucketloads of internal testing around each suggestion, secondly lots of detailed static analysis of the code, and as a backstop we run all of our suggestions over lots of open-source libraries then check that their tests are still green. Lots more detail here: https://sourcery.ai/blog/testing....
On the second point we treat our suggestions like building blocks - they can stack on top of each other to make more impressive changes to the code (like in the Gilded Rose example in the video).
Hired Goons