pymapdl icon indicating copy to clipboard operation
pymapdl copied to clipboard

Raise errors regarding symbols not allowed in directory paths

Open jgd10 opened this issue 4 years ago • 2 comments

Whilst working on https://github.com/pyansys/pymapdl/pull/643 I found that singular apostrophes are not allowed in pymapdl directory paths. Whilst inquiring about this it seems that there are actually several special characters that aren't allowed, that ARE allowed in Windows paths (at least).

We should raise an error when encountering these in a directory path, however, before we can do that we need a complete list of all the disallowed characters. As of now, I am aware of 2:

  • '
  • $

Does anyone know of any others?

jgd10 avatar Oct 07 '21 09:10 jgd10

Made a simple script to test this:

import os
from ansys.mapdl.core import launch_mapdl, Mapdl

mapdl = launch_mapdl()

for i in range(256):
    path = os.path.join('/tmp', chr(i))
    try:
        if not os.path.isdir(path):
            os.mkdir(path)
    except Exception as e:
        print(e)
        continue

    try:
        mapdl.cwd(path)
    except Exception as e:
        print('MAPDL failed due to' + str(e))

You're correct @jgd10, only $ and ' are issues (at least on Linux).

Should be a trivial PR to fix.

akaszynski avatar Oct 29 '21 03:10 akaszynski

Editting Alex script for Windows:


import warnings 

import os
from ansys.mapdl.core import launch_mapdl, Mapdl

mapdl = launch_mapdl(loglevel='ERROR')

for i in range(256):
    path = os.path.join('C:\\Users\\gayuso\\AppData\\Local\\Temp', chr(i))
    # print('\n\n' + chr(i)+ '\n' + path)
    str_ = f'char({i}) - {chr(i)} '
    try:
        if not os.path.isdir(path):
            os.mkdir(path)   

    except Exception as e: 
        # print('Error making directory')
        continue

    with warnings.catch_warnings(record=True) as w:
        # Cause all warnings to always be triggered.
        warnings.simplefilter("always")
        # Trigger a warning.
        # Verify some things
        try:
            mapdl.cwd(path)

            if len(w) > 0 and issubclass(w[-1].category, UserWarning) and "*** WARNING ***" in str(w[-1].message):
                print(str_ + ': CWD failed')
            else:
                print(str_ + ': another warning:\n' + w[-1].message)
            
        except IndexError:
            # print('There is no warning')
            pass
        
        except RuntimeError as e:
            print(str_ + ': runtime error/ ' + e.args[0])

The ouput is:

(pymapdl) PS C:\Users\gayuso\pymapdl> & C:/Users/gayuso/.conda/envs/pymapdl/python.exe c:/Users/gayuso/test.py
char(39) - ' : runtime error/ The CWD command does not accept paths that contain singular quotes "
char(128) -  : CWD failed
char(129) -  : CWD failed
char(130) -  : CWD failed
char(131) -  : CWD failed
char(132) - 
             : CWD failed
char(133) - 
 : CWD failed
char(134) -  : CWD failed
char(135) -  : CWD failed
char(136) -  : CWD failed
char(137) -  : CWD failed
char(138) -  : CWD failed
char(139) -  : CWD failed
char(140) -  : CWD failed
char(141) -  : CWD failed
char(142) -  : CWD failed
char(143) -  : CWD failed
char(144) -  : CWD failed
char(146) -  : CWD failed
char(147) -  : CWD failed
char(148) -  : CWD failed
char(149) -  : CWD failed
char(150) -  : CWD failed
char(151) -  : CWD failed
char(152) -  : CWD failed
char(154) -  : CWD failed
char(155) - WD failed
char(156) -  : CWD failed
char(157) -  : CWD failed
char(161) - ¡ : CWD failed
char(162) - ¢ : CWD failed
char(163) - £ : CWD failed
char(164) - ¤ : CWD failed
char(165) - ¥ : CWD failed
char(166) - ¦ : CWD failed
char(167) - § : CWD failed
char(168) - ¨ : CWD failed
char(169) - © : CWD failed
char(170) - ª : CWD failed
char(171) - « : CWD failed
char(172) - ¬ : CWD failed
char(173) - ­ : CWD failed
char(174) - ® : CWD failed
char(175) - ¯ : CWD failed
char(176) - ° : CWD failed
char(177) - ± : CWD failed
char(178) - ² : CWD failed
char(179) - ³ : CWD failed
char(180) - ´ : CWD failed
char(181) - µ : CWD failed
char(182) - ¶ : CWD failed
char(183) - · : CWD failed
char(184) - ¸ : CWD failed
char(185) - ¹ : CWD failed
char(186) - º : CWD failed
char(187) - » : CWD failed
char(188) - ¼ : CWD failed
char(189) - ½ : CWD failed
char(190) - ¾ : CWD failed
char(191) - ¿ : CWD failed
char(192) - À : CWD failed
char(193) - Á : CWD failed
char(194) - Â : CWD failed
char(195) - Ã : CWD failed
char(196) - Ä : CWD failed
char(197) - Å : CWD failed
char(198) - Æ : CWD failed
char(199) - Ç : CWD failed
char(200) - È : CWD failed
char(201) - É : CWD failed
char(202) - Ê : CWD failed
char(203) - Ë : CWD failed
char(204) - Ì : CWD failed
char(205) - Í : CWD failed
char(206) - Î : CWD failed
char(207) - Ï : CWD failed
char(208) - Ð : CWD failed
char(209) - Ñ : CWD failed
char(210) - Ò : CWD failed
char(211) - Ó : CWD failed
char(212) - Ô : CWD failed
char(213) - Õ : CWD failed
char(214) - Ö : CWD failed
char(215) - × : CWD failed
char(216) - Ø : CWD failed
char(217) - Ù : CWD failed
char(218) - Ú : CWD failed
char(219) - Û : CWD failed
char(220) - Ü : CWD failed
char(221) - Ý : CWD failed
char(222) - Þ : CWD failed
char(223) - ß : CWD failed
char(224) - à : CWD failed
char(225) - á : CWD failed
char(226) - â : CWD failed
char(227) - ã : CWD failed
char(228) - ä : CWD failed
char(229) - å : CWD failed
char(230) - æ : CWD failed
char(231) - ç : CWD failed
char(232) - è : CWD failed
char(233) - é : CWD failed
char(234) - ê : CWD failed
char(235) - ë : CWD failed
char(236) - ì : CWD failed
char(237) - í : CWD failed
char(238) - î : CWD failed
char(239) - ï : CWD failed
char(240) - ð : CWD failed
char(241) - ñ : CWD failed
char(242) - ò : CWD failed
char(243) - ó : CWD failed
char(244) - ô : CWD failed
char(245) - õ : CWD failed
char(246) - ö : CWD failed
char(247) - ÷ : CWD failed
char(248) - ø : CWD failed
char(249) - ù : CWD failed
char(250) - ú : CWD failed
char(251) - û : CWD failed
char(252) - ü : CWD failed
char(253) - ý : CWD failed
char(254) - þ : CWD failed
char(255) - ÿ : CWD failed

Many characters fail with CWD, but the folders are already created.

image

Hope it helps.

germa89 avatar Nov 02 '21 15:11 germa89