* Added AreaNthSelector
Added AreaNthSelector that is useful for nested features selection. Especially to select one of coplanar nested wires for subsequent extrusion, cutting or filleting.
* LengthNthSelector
* Explicitly marked _NthSelector class and _NthSelector.key(..) method as abstract using standard abc package
* AreaNthSelector ignores "bad" Wires
AreaNthSelector.key raises ValueError if temporary face creation fails for a wire for any reason (non-planar, non-closed). That causes _NthSelector that it inherits to ignore such wires. Done so for consistency with RadiusNthSelector that ignores anything it can not get radius from.
Co-authored-by: Marcus Boyd <mwb@geosol.com.au>
* Return Instances of the Type of self from Fluent Methods
* Updated `Workplane.workplane()`, `Workplane.copyWorkplane()`, `Workplane.newObject()` to return instances of a type that's based on the input parameters (such as `self`).
* Updated type hints to reflect that return types of fluent methods depend on the type of method arguments.
* Added a unit test to verify fluent methods in a derived class return instances of the derived class.
* Fix Workpane MyPy Errors
* Fixed type hints in `sweep()` and `_selectObjects()`.
* Fix `test_cadquery.py` Formatting
* Ran `black` on `test_cadquery.py`.
* Renamed `TypeVar` `WorkplaneT` to `T`
* Renamed `WorkplaneT` to `T` in `cq.py`.
* Reformat with Black
* Re-formatted `cq.py` with `black`.
* Re-format with the Right Version of Black (19.10b0)
* Re-formatted `cq.py` with `black` 19.10b0.