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.
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?
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).
@thisissubhendu Thanks! Hadn't seen JS Hint before and it looks cool.
The main difference in concept I think is that whenever we see an issue, we always suggest a code change you can implement right away. We've seen that with lots of tools you can get kind of overwhelmed with warnings if you're not sure how to fix them. We want our changes to be actionable straight away.
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 :).
@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.
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.
@jimi_desmet great question! In general we see roughly 97.5 suggestions accepted to every 2.5 rejected. But many of these rejected suggestions aren't inaccurate, but might be changes that a developer doesn't want to make at a certain time. For example we might suggest that you inline a variable that is defined and immediately returned, but you may want to reject that suggestion for now because you're using that variable for debugging.
But that's not to say we're perfect (although we're trying to get closer :) ). We still occasionally get the bug flagged for a refactoring that would change the outcome of the code and then we immediately work to fix that and make sure that situation doesn't come up ever again.
I've been using @sourceryai for the past 3-4 months and I've been absolutely loving it! I would like to thank Brendan and his team for being so supportive of a student and allowing me to use Sourcery Pro which literally works like magic!
Thanks for the support @xtremedevx !! So glad to hear it's been helpful for you. Also good luck with your own project - @brendan_maginnis shared it with me and it looks awesome.
Congratulations on the launch! I see you are offering a solution for teams as well. How does Sourcery help make life easier for engineering teams? Can you share more about your plans / roadmap for this product?
@rogiervanwilligen thank you!
Teams can use Sourcery individually in their IDE to get instant feedback while they're working on their code. Or they integrate Sourcery into their GitHub organisation and Sourcery will review every new pull request they make. You can think of it as a first layer of the code review process. You can also add Sourcery in as a pre-commit hook or as a script in your CI so every new commit will be reviewed and improved before it's merged.
In terms of our plans for the next few months we're primarily focused right now on making Sourcery more powerful - increasing the number of suggestions we make and handling more libraries and frameworks, expanding our analysis to the class level (thing like extracting methods and constants to start, then more complex refactorings), and building out more tools to help you handle duplicate code across your project. Then we'll focus on more integrations and in depth support for teams and likely start focusing on other languages.
This looks fantastic - how exciting! I was wondering, will there be a Sourcery community where users can come together to talk, share practices or just connect? Look forward to seeing the journey, well done!
@tinks1 thanks!! We don't have anytype of community yet - but it's something we've thought about. There are only 3 of us on the Sourcery team right now - so trying to find the bandwidth to do everything we want to do!
Thanks @vera_montacuti !! We plan on adding in a native GitLab integration in the not too distant future that will be similar to our current GitHub integration. But in the meantime, if you're using GitLab or BitBucket you can add Sourcery as a precommit hook or as a script in your CI to review all your new commits similar to the GitHub PR review tool or you can run a review over your full project with our CLI.
I am sure this will be downloaded in vscode equally to the original python package, around couple of millions. this is amazingly fast, and accurate.
Now I enjoy writing dirty code and leave the rest with Sourcery.
Thank you Branden for this awesome product.
Hired Goons