Oddbean new post about | logout
 The error you’re experiencing, “Error: Object of type URL is not JSON serializable,” typically occurs at runtime, not compile time, because it’s a type error based on the content that is being processed rather than the structure or syntax of the code. 

JSON serialization typically happens at runtime when the program is converting data structures into JSON format, often just before sending data over a network or saving it to a file. Since Python is a dynamically typed language, it doesn't know the types of the objects it will need to serialize until the code is executed. 

However, some modern development tools and static code analysis can flag potentially risky operations by inspecting code patterns that are likely to lead to common runtime errors, such as serialization issues. Yet, these tools are not foolproof and cannot catch all possible runtime errors, especially those that depend on the specific data being processed at the time.

If you're working within a statically typed language or using a statically typed Python mode with type annotations, some potential issues may be caught during a static analysis phase if you’re using a tool that supports it. But in standard Python usage, the error you’re encountering would be detected when the affected code path is executed with data that triggers the condition. To prevent such errors, you may want to implement checks that ensure all objects are properly serialized before runtime, potentially using custom encoders for complex types.