For quadratic fields the situation is simpler than the general case. I see no reason why prime ideals should not have (easily implemented) methods is_inert(), is_split(), though in the latter case it is not so clear what is meant for non-Galois extensions. However, prime ideals do know what their residue degree is and their ramification degree (called ramification_index for some reason) so you can do this:

```
sage: K.<a> = QuadraticField(5)
sage: [[(p,P.residue_class_degree(), P.ramification_index()) for P in K.primes_above(p)] for p in prime_range(50)]
[[(2, 2, 1)],
[(3, 2, 1)],
[(5, 1, 2)],
[(7, 2, 1)],
[(11, 1, 1), (11, 1, 1)],
[(13, 2, 1)],
[(17, 2, 1)],
[(19, 1, 1), (19, 1, 1)],
[(23, 2, 1)],
[(29, 1, 1), (29, 1, 1)],
[(31, 1, 1), (31, 1, 1)],
[(37, 2, 1)],
[(41, 1, 1), (41, 1, 1)],
[(43, 2, 1)],
[(47, 2, 1)]]
```

So ramified prime look like (p,1,2), intert ones (p,2,1) and split ones (p,1,1).