<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body>
    <p>Don, please try your tests in a python virtual environment. 
      Thanks!</p>
    <p>I'm up-to-date, I'm almost positively sure. I just converted the
      X3D archives (about 1-2 hours ago) to python using
      X3dToPython.xslt, and there were many, problems with Protos.  I
      can rerun with logging enabled, if you want to look at the logs.
      (but you don't seem inclined, so I'll only do it on request).  I
      ran inside X3DJSONLD, and got a ton of problems with Protos. I
      have 66 files with Protos out of 160 X3D files.  So it's not some
      random fluke!   51 of the python files had the issue.</p>
    <p>You can look through your logs by searching for isinstance:</p>
    <p>```    if not ProtoBody is None and not
      isinstance(ProtoBody,(ProtoBody,ProtoInstance)):<br>
      TypeError: isinstance() arg 2 must be a type or tuple of types</p>
    <p>```</p>
    <p>Those lines basically tells it all.  The ProtoBody parameter is
      being used as a type, AFAICT<br>
    </p>
    <p>Here's a few you may have in the 3D archives:</p>
    <p>Figure31_9SpinGroupPrototype.x3d</p>
    <p>AllenDuttonProtoInstances.x3d<br>
      AllenStandShootRifleM24.x3d</p>
    <p>HelloWorldProgramOutput.x3d</p>
    <p>What I have discovered, is, I have to enable a virtual
      environment in python to get the errors for these python program. 
      Otherwise, I get other errors.  These files haven't been modified
      since Aug 16, but X3dToPython.xslt changed on Jun 10.  I don't
      know why enabling the virtual environment make a difference.<br>
    </p>
    <p>This is the script I ran, pretty much. I saw many Exceptions
      thrown around ProtoBody, ProtoDeclare:</p>
    <p>=========================================================================<br>
    </p>
    <p>!/bin/bash<br>
      <br>
      # Run the Test Suite<br>
      <br>
      # accepts files with .x3d extension<br>
      export PROCESSORS=${PROCESSORS-8}<br>
      <br>
      . ./classpath<br>
      <br>
      echo translating to python<br>
      (find /c/x3d-code/www.web3d.org/x3d/content/examples -type f -name
      '*.x3d' | grep -v intermediate | grep -v "\.new") | xargs -P
      $PROCESSORS java net.coderextreme.RunSaxon ---overwrite ---silent
      --../lib/stylesheets/X3dToPython.xslt -py
      ---../python/net/x3djsonld/data/<br>
      echo running python<br>
      pushd ../python/net/x3djsonld/data<br>
      export PYTHONPATH=`pwd`<br>
      find c -name '*.py' | xargs -L 1 -P $PROCESSORS python3<br>
      popd</p>
    <p>=====================================================================================</p>
    <p>I saw no other types of errors in my sampling.  Perhaps you could
      point out a python example, or send me an example that works with
      Protos, and I could test it on my system?</p>
    <p>I actually have 3 different rubik's examples.   So it would take
      some investigating and remembering if I sent the same one again. 
      I'm fairly sure I chose the simplest one I have. abox.x3d and
      x3domflowers.x3d are others.  Still the overwhelming report is
      from the archive, but perhaps I need a Savage update? Nope.<br>
    </p>
    <p>Here to help the blind walk and the lame see!  In the 5th
      dimension of course!<br>
    </p>
    <p>John<br>
    </p>
    <p><br>
    </p>
    <p><br>
    </p>
    <div class="moz-cite-prefix">On 8/24/21 10:41 PM, Brutzman, Donald
      (Don) (CIV) wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:BY3PR13MB4884AA7AD9001CFBC2190134C4C69@BY3PR13MB4884.namprd13.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style>@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}span.EmailStyle19
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}div.WordSection1
        {page:WordSection1;}ol
        {margin-bottom:0in;}ul
        {margin-bottom:0in;}</style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
      <div class="WordSection1">
        <p class="MsoNormal">John, we have a lot of simple prototypes
          and prototypes with embedded Script nodes in the archives that
          have all tested OK.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">If your example is that Rubiks’s cube with
          nested prototypes, that is harder.  We believe the spec is OK
          but that feature is only occasionally demonstrated as
          working.  Any model with nested prototypes (ProtoDeclare
          within ProtoDeclare) can be easily refactored by putting all
          of the ProtoDeclare blocks first.  Similarly it makes sense to
          test individual ProtoInstance nodes without feeding them
          nested ProtoInstance fields.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Looking at existing examples is also good
          because they have passed through validation.  Step by step.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <ul style="margin-top:0in" type="disc">
          <li class="MsoListParagraph"
            style="margin-left:0in;mso-list:l0 level1 lfo1"><a
href="https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples"
              moz-do-not-send="true">https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples</a><o:p></o:p></li>
        </ul>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Once again sorry I can’t pursue “deep dive”
          excursions at this time.  Am working on (a) X3D architecture
          Mantis editorial issues, (b) DIS protocol implementation
          open-dis7-java, upgraded DIS support in Xj3D, and just tonight
          got X3D-Edit building despite issues with a very old laptop. 
          Step  by step.<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal"><b>From:</b> x3d-public
          <a class="moz-txt-link-rfc2396E" href="mailto:x3d-public-bounces@web3d.org"><x3d-public-bounces@web3d.org></a> <b>On Behalf Of
          </b>John Carlson<br>
          <b>Sent:</b> Tuesday, August 24, 2021 7:48 PM<br>
          <b>To:</b> Joseph D Williams <a class="moz-txt-link-rfc2396E" href="mailto:joedwil@earthlink.net"><joedwil@earthlink.net></a><br>
          <b>Cc:</b> X3D Graphics public mailing list
          <a class="moz-txt-link-rfc2396E" href="mailto:x3d-public@web3d.org"><x3d-public@web3d.org></a><br>
          <b>Subject:</b> Re: [x3d-public] Fwd: Next, in Python news...<o:p></o:p></p>
        <p class="MsoNormal"><o:p> </o:p></p>
        <div>
          <div>
            <div>
              <p class="MsoNormal">Yes, you need to ‘’’pip install
                x3d’’’<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal">before running the provided script in
                previous message.   See link previously posted by Joe.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">Thanks for confirmation of received
                message.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">The header is the top of the file.  
                If you don’t want to run my code, convert your own proto
                xml to python using X3dToPython.xslt.   I don’t have a
                JSON converter for this test.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">The main purpose is to get proper
                implementation of Protos in pure python.   I’m guessing
                it may be a wider problem with x3d.py, because when I
                patched Protos in my version, there were further issues.
                  So simply patching Protos won’t fix all the issues.  
                A full roundtrip XML -> python -> XML needs to be
                done for the archive.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">I’ve freed up some time to work on
                python, and I plan to start work on a test suite soon.  
                It would be good to get past my initial issues with the
                package.   I can reattempt to modify the x3d package
                generator, but that doesn’t mean my patches will be
                available when I am done.    It still needs to go
                through official channels.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">If you’re fed up with stylesheets, I
                can offer a solution, but it’s not as elegant or
                pythonic and uses Java.   As far as I can tell, XSLT is
                the declarative transformer of choice for XML.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">The main thing I think needs to be
                done is handle cases where parameters and classes have
                the same case sensitive name.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">If people want to contribute to
                x3d.py project, now’s your chance.   I’m fairly sure the
                python binding needs to be standardized.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">I know pretty much everyone has been
                covidized.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">After spinning up python, I’ll return
                to C++ if there’s enough code separated from the
                standard.<o:p></o:p></p>
            </div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
            </div>
            <div>
              <p class="MsoNormal">John<o:p></o:p></p>
            </div>
          </div>
        </div>
        <div>
          <div>
            <div>
              <p class="MsoNormal"><o:p> </o:p></p>
              <div>
                <div>
                  <p class="MsoNormal">On Tue, Aug 24, 2021 at 8:55 PM
                    Joseph D Williams <<a
                      href="mailto:joedwil@earthlink.net"
                      target="_blank" moz-do-not-send="true">joedwil@earthlink.net</a>>
                    wrote:<o:p></o:p></p>
                </div>
                <blockquote style="border:none;border-left:solid #CCCCCC
                  1.0pt;padding:0in 0in 0in
                  6.0pt;margin-left:4.8pt;margin-right:0in">
                  <div>
                    <div>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">#
                        Now available: developmental python x3d.py
                        package on PyPi for import.<o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">#  
                        This approach greatly simplifies Python X3D
                        deployment and use.<o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">#  
                        <a
href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fpypi.org%2Fproject%2Fx3d&data=04%7C01%7Cbrutzman%40nps.edu%7C72693df0fce44ec3ba3408d96772eba5%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C637654565985912019%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=Sw68kSJJKNZaBcGFk4Up3toP5CkFxSgiUQASR49Cfos%3D&reserved=0"
                          target="_blank" moz-do-not-send="true">
                          https://pypi.org/project/x3d</a><o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">The
                        text got here as attachment<o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Joe<o:p></o:p></p>
                    </div>
                  </div>
                  <div>
                    <div>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                      <div style="border:none;border-top:solid #E1E1E1
                        1.0pt;padding:3.0pt 0in 0in 0in">
                        <p class="MsoNormal"
                          style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><b>From:
                          </b><a href="mailto:yottzumm@gmail.com"
                            target="_blank" moz-do-not-send="true">John
                            Carlson</a><br>
                          <b>Sent: </b>Tuesday, August 24, 2021 3:00 PM<br>
                          <b>To: </b><a href="mailto:brutzman@nps.edu"
                            target="_blank" moz-do-not-send="true">Don
                            Brutzman</a>; <a
                            href="mailto:x3d-public@web3d.org"
                            target="_blank" moz-do-not-send="true">
                            X3D Graphics public mailing list</a><br>
                          <b>Subject: </b>[x3d-public] Fwd: Next, in
                          Python news...<o:p></o:p></p>
                      </div>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Resend
                        of non-working python code.   No rush,    I
                        don’t want anyone to be surprised.  I do want
                        someone to confirm receipt of email.   I’m
                        guessing things are going to spam?<o:p></o:p></p>
                      <p class="MsoNormal"
                        style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
                    </div>
                  </div>
                </blockquote>
              </div>
            </div>
          </div>
        </div>
      </div>
    </blockquote>
  </body>
</html>