Why ScurryPy?¶
Welcome to the value proposition section! This page is dedicated to explaining why ScurryPy's technical accomplishments are beneficial to not only contributors, but most importantly, its users.
No Magic¶
Scurrypy doesn't use decorators by default. This is something no other Python Discord API library has done. What's the gain for users? Flexibility, composability, and control. Yes, all three. Without decorators, users are not fighting expected parameters for their functions, and maintainers are not developing dependency injection just to have flexible parameters. This offers composibility: beyond ScurryPy's simple contract, you are free to compose your code how you want, not how maintainers expect you to compose code. This offers control: build what you want, how you want, when you want. Want to add decorators? No problem! ScurryKit is one example of just because ScurryPy doesn't push decorators, it doesn't mean users cant use them.
Self-documenting¶
ScurryPy takes pride in its thorough documentation and is always looking for ways to improve it. All fields (with the exception of some self-explanatory types) are documented either from Discord's docs directly or paraphrased for easier understanding. How does this benefit users and maintainers alike? You shouldn't need to keep Discord's docs open while using ScurryPy. One less tab to keep up with!
No Circular Imports¶
There is not one mention of from future import __annotations__. Even though the intent of this import was for type completion and IDE support, this import is often used to cover up circular imports because the internals are too tightly coupled. How does this benefit users and maintainers alike? ScurryPy has a flow to its design making it easier to follow. This segues into the next section.
Consistent Patterns¶
The main core objects that will be used by users and maintainers is the HTTPClient. Whether you are using the wrapped resources or using an endpoint directly, you will certainly be using HTTPClient. Unlike other libraries, ScurryPy as flow in its requests. See the following mental map for how ScurryPy imagines its request system.

Figure 1: Request Client Mental Map
How does this benefit users and maintainers? Patterns in ScurryPy are simple, predictable, and easy to reason about. Can you do this with other libraries?
Lightweight Core¶
ScurryPy's core is under 1000 lines. While line count usually is not a metric to go by, this is a selling point because it means you can understand ScurryPy in an afternoon! No sprawling codebase to navigate, no hidden surprises, just clean, traceable code. Or you can read the technical writeup to get a more thorough explanation. How does this benefit users and maintainers? For maintainers, the faster you understand a library, the faster you can get to work! For users, especially power users, this gives you quick access to Flexibility, composability, and control without burning out on learning how ScurryPy works.
Easy-to-maintain Docs¶
The docs are always up to date with ScurryPy's rapid development. With every great project comes a great set of docs that is honest, comprehensive, and most importantly, correct.
Emergent Extensibility¶
ScurryPy introduced an Addon system that's less of a system and more of an acknowledgement. This system leverages classes that subscribe to the client with callbacks to its own methods. That's all an addon is! See the addons pattern page for more!
Not sold yet?¶
ScurryPy may not have widespread visibility yet, but it has a clear vision and hasn't wavered since day one. And that's more than many libraries can say at this stage.
Quick Summary¶
Need a tl;dr? Check out the table below for a quick summary on what ScurryPy offers!
| Feature | User Value |
|---|---|
| No Magic | Flexibility, control, composability |
| Self-documenting | Don't need Discord docs open constantly |
| No circular imports | Can read and understand code |
| Consistent patterns | Faster learning curve, less memorization |
| Lightweight core | Confidence it won't break mysteriously |
| Easy-to-maintain docs | Docs stay current, users stay informed |
| Emergent extensibility | Build exactly what you need |