code: def test_inin003_wildcard_data_attributes(dash_duo):
      app = Dash()
      test_time = datetime.datetime(2012, 1, 10, 2, 3)
      test_date = datetime.date(
          test_time.year, test_time.month, test_time.day
      )
      attrs = {
          "id": "inner-element",
          "data-string": "multiple words",
          "data-number": 512,
          "data-none": None,
          "data-date": test_date,
          "aria-progress": 5,
      }
      app.layout = html.Div([html.Div(**attrs)], id="data-element")
  
      dash_duo.start_server(app)
  
      div = dash_duo.find_element("#data-element")
  
      # attribute order is ill-defined - BeautifulSoup will sort them
      actual = BeautifulSoup(
          div.get_attribute("innerHTML"), "lxml"
      ).decode()
      expected = BeautifulSoup(
          "<div "
          + " ".join(
              '{}="{!s}"'.format(k, v)
              for k, v in attrs.items()
              if v is not None
          )
          + "></div>",
          "lxml",
      ).decode()
  
      assert (
          actual == expected
      ), "all attrs are included except None values"
  
      assert dash_duo.get_logs() == []
  
imports: import datetime
  import flask
  import json
  import pytest
  import re
  from bs4 import BeautifulSoup
  import dash_dangerously_set_inner_html
  import dash_flow_example
  import dash
  from dash import Dash, html, dcc, Input, Output
  from dash.exceptions import PreventUpdate
  from dash.testing.wait import until
label_desc: Use image node_id 1 for calling a global function with example usage: test_inin003_wildcard_data_attributes(dash_duo) without return types