|
| 1 | +""" This module represents implementation of ODATA V4 """ |
| 2 | + |
| 3 | +from typing import List |
| 4 | + |
| 5 | +from pyodata.config import ODATAVersion |
| 6 | +from pyodata.model.type_traits import EdmBooleanTypTraits, EdmIntTypTraits |
| 7 | +from pyodata.model.elements import Typ |
| 8 | +from pyodata.v4.type_traits import EdmDateTypTraits, GeoTypeTraits, EdmDoubleQuotesEncapsulatedTypTraits, \ |
| 9 | + EdmTimeOfDay, EdmDateTimeOffsetTypTraits, EdmDuration |
| 10 | + |
| 11 | + |
| 12 | +class ODataV4(ODATAVersion): |
| 13 | + """ Definition of OData V4 """ |
| 14 | + |
| 15 | + @staticmethod |
| 16 | + def from_etree_callbacks(): |
| 17 | + return { |
| 18 | + } |
| 19 | + |
| 20 | + @staticmethod |
| 21 | + def primitive_types() -> List[Typ]: |
| 22 | + # TODO: We currently lack support for: |
| 23 | + # 'Edm.Geometry', |
| 24 | + # 'Edm.GeometryPoint', |
| 25 | + # 'Edm.GeometryLineString', |
| 26 | + # 'Edm.GeometryPolygon', |
| 27 | + # 'Edm.GeometryMultiPoint', |
| 28 | + # 'Edm.GeometryMultiLineString', |
| 29 | + # 'Edm.GeometryMultiPolygon', |
| 30 | + # 'Edm.GeometryCollection', |
| 31 | + |
| 32 | + return [ |
| 33 | + Typ('Null', 'null'), |
| 34 | + Typ('Edm.Binary', '', EdmDoubleQuotesEncapsulatedTypTraits()), |
| 35 | + Typ('Edm.Boolean', 'false', EdmBooleanTypTraits()), |
| 36 | + Typ('Edm.Byte', '0'), |
| 37 | + Typ('Edm.Date', '0000-00-00', EdmDateTypTraits()), |
| 38 | + Typ('Edm.Decimal', '0.0'), |
| 39 | + Typ('Edm.Double', '0.0'), |
| 40 | + Typ('Edm.Duration', 'P', EdmDuration()), |
| 41 | + Typ('Edm.Stream', 'null', EdmDoubleQuotesEncapsulatedTypTraits()), |
| 42 | + Typ('Edm.Single', '0.0', EdmDoubleQuotesEncapsulatedTypTraits()), |
| 43 | + Typ('Edm.Guid', '\"00000000-0000-0000-0000-000000000000\"', EdmDoubleQuotesEncapsulatedTypTraits()), |
| 44 | + Typ('Edm.Int16', '0', EdmIntTypTraits()), |
| 45 | + Typ('Edm.Int32', '0', EdmIntTypTraits()), |
| 46 | + Typ('Edm.Int64', '0', EdmIntTypTraits()), |
| 47 | + Typ('Edm.SByte', '0'), |
| 48 | + Typ('Edm.String', '\"\"', EdmDoubleQuotesEncapsulatedTypTraits()), |
| 49 | + Typ('Edm.TimeOfDay', '00:00:00', EdmTimeOfDay()), |
| 50 | + Typ('Edm.DateTimeOffset', '0000-00-00T00:00:00', EdmDateTimeOffsetTypTraits()), |
| 51 | + Typ('Edm.Geography', '', GeoTypeTraits()), |
| 52 | + Typ('Edm.GeographyPoint', '', GeoTypeTraits()), |
| 53 | + Typ('Edm.GeographyLineString', '', GeoTypeTraits()), |
| 54 | + Typ('Edm.GeographyPolygon', '', GeoTypeTraits()), |
| 55 | + Typ('Edm.GeographyMultiPoint', '', GeoTypeTraits()), |
| 56 | + Typ('Edm.GeographyMultiLineString', '', GeoTypeTraits()), |
| 57 | + Typ('Edm.GeographyMultiPolygon', '', GeoTypeTraits()), |
| 58 | + ] |
0 commit comments