xsdata icon indicating copy to clipboard operation
xsdata copied to clipboard

My bug, but difficult to track down in serialisation. strftime() argumentn 1 must be a str, not None.

Open skinkie opened this issue 2 years ago • 3 comments

I wrote a bug where I assigned a tuple with two dates and a string to an element, where I should have assigned only the string. Now considering below, is this only a bug on my side or did I uncover a different issue?

availability_condition = AvailabilityCondition(valid_day_bits=(datetime.datetime.now(), datetime.datetime.now(), 'hello world')
 Traceback (most recent call last):
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/converter.py", line 471, in serialize
    return value.strftime(kwargs["format"])
TypeError: strftime() argument 1 must be str, not None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/storage/home/skinkie/PycharmProjects/doeksenscraper/gvb.py", line 905, in <module>
    serializer.write(out, publication_delivery, ns_map)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 75, in write
    handler.write(events)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/writers/lxml.py", line 36, in write
    super().write(events)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/mixins.py", line 110, in write
    for event, *args in events:
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 86, in write_object
    yield from self.write_dataclass(obj, qname=qname, xsi_type=xsi_type)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 116, in write_dataclass
    yield from self.write_value(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 151, in write_value
    yield from self.write_any_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 190, in write_any_type
    yield from self.write_xsi_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 128, in write_xsi_type
    yield from self.write_dataclass(
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 116, in write_dataclass
    yield from self.write_value(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 147, in write_value
    yield from self.write_elements(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 251, in write_elements
    yield from self.write_choice(choice, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 285, in write_choice
    yield from func(value, choice, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 151, in write_value
    yield from self.write_any_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 190, in write_any_type
    yield from self.write_xsi_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 128, in write_xsi_type
    yield from self.write_dataclass(
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 116, in write_dataclass
    yield from self.write_value(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 151, in write_value
    yield from self.write_any_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 190, in write_any_type
    yield from self.write_xsi_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 128, in write_xsi_type
    yield from self.write_dataclass(
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 116, in write_dataclass
    yield from self.write_value(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 149, in write_value
    yield from self.write_list(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 158, in write_list
    yield from self.write_value(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 151, in write_value
    yield from self.write_any_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 190, in write_any_type
    yield from self.write_xsi_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 128, in write_xsi_type
    yield from self.write_dataclass(
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 116, in write_dataclass
    yield from self.write_value(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 151, in write_value
    yield from self.write_any_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 190, in write_any_type
    yield from self.write_xsi_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 128, in write_xsi_type
    yield from self.write_dataclass(
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 116, in write_dataclass
    yield from self.write_value(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 147, in write_value
    yield from self.write_elements(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 251, in write_elements
    yield from self.write_choice(choice, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 285, in write_choice
    yield from func(value, choice, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 151, in write_value
    yield from self.write_any_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 190, in write_any_type
    yield from self.write_xsi_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 128, in write_xsi_type
    yield from self.write_dataclass(
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 116, in write_dataclass
    yield from self.write_value(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 151, in write_value
    yield from self.write_any_type(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 192, in write_any_type
    yield from self.write_element(value, var, namespace)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 299, in write_element
    yield XmlWriterEvent.DATA, self.encode(value, var)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 408, in encode
    return [cls.encode(v, var) for v in value]
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 408, in <listcomp>
    return [cls.encode(v, var) for v in value]
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/dataclass/serializers/xml.py", line 413, in encode
    return converter.serialize(value, format=var.format)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/converter.py", line 101, in serialize
    return instance.serialize(value, **kwargs)
  File "/home/skinkie/PycharmProjects/doeksenscraper/venv/lib/python3.9/site-packages/xsdata/formats/converter.py", line 475, in serialize
    raise ConverterError(e)
xsdata.exceptions.ConverterError: strftime() argument 1 must be str, not None

skinkie avatar Dec 22 '21 19:12 skinkie

Yeah the error there is a bit misleading, for wildcard elements you have to use one of the builtin datatypes for dates otherwise you have to provide a format metadata option, I will work to update the error message there

https://xsdata.readthedocs.io/en/latest/data-types.html#working-with-date-strings

tefra avatar Jan 08 '22 11:01 tefra

@tefra offtopic, did you receive my email before new year?

skinkie avatar Jan 08 '22 11:01 skinkie

@skinkie I just replied, it's been hectic lately, I switched job last month and I took some time off during the holidays.

tefra avatar Jan 09 '22 08:01 tefra

Closing duplicate

tefra avatar Mar 09 '24 18:03 tefra