Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2021-22 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

VIDEOLEZIONI DEL CORSO DI FONDAMENTI DI PROGRAMMAZIONE AA20-21

PROGRAMMING COURSE VIDEOCONFERENCES AY20-21

Errore Forbidden Unicode data

e
edoardo98 (250 points)
1 2 3
in HW2 by (250 points)
Ciao a tutti,

Sto provando a risolvere l’hw2. E ho trovato un modo che apparentemente, testandolo nel main da i valori aspettati per alcuni test. Tuttavia, eseguendo i test dal terminale mi da questo errore anche per i test che danno i valori aspettati:

ForbiddenError The import of unicode data is forbidden

A me sembra un errore come se avessi importato una libreria esterna, cosa che ovviamente non ho fatto.

Suggerimenti su cosa potrebbe essere?
258 views

4 Answers

Exyss (21390 points)
1 2 79
by (21.4k points)
Quando puoi posta l'intero log dell'errore, altrimenti è un po' difficile capire il problema senza sapere dove si verifica
e
edoardo98 (250 points)
1 2 3
by (250 points)

    def test_simple2(self):

        k        = 3

        matches  = ["aaa", "bbb", "ccc", "ddd", "eee"]

        expected = [3, 4, 2, 0, 1]

>       return self.do_test(matches, k, expected)

test_01.py:70:

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

test_01.py:31: in do_test

    import program01 as program

testlib.py:46: in _check_import

    return self.__orig_import(*args, **kargs)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('unicodedata', {'BuiltinImporter': <class '_frozen_importlib.BuiltinImporter'>, 'FrozenImporter': <class '_frozen_imp...ec': <class '_frozen_importlib.ModuleSpec'>, '_DeadlockError': <class '_frozen_importlib._DeadlockError'>, ...}, [], 0)

kargs = {}, name = 'unicodedata'

rest = [{'BuiltinImporter': <class '_frozen_importlib.BuiltinImporter'>, 'FrozenImporter': <class '_frozen_importlib.FrozenIm...ec': <class '_frozen_importlib.ModuleSpec'>, '_DeadlockError': <class '_frozen_importlib._DeadlockError'>, ...}, [], 0]

    def _check_import(*args, **kargs):

        name, *rest = args

        if name in forbidden or (not forbidden and name not in allowed):

            print(f"Importing {name} (globals, locals, {rest[-2:]}) (not allowed)")

>           raise ForbiddenError(f"The import of '{name}' is forbidden")

E           testlib.ForbiddenError: The import of 'unicodedata' is forbidden

testlib.py:44: ForbiddenError

Mi da questo errore. come detto se provo sul mio ideale a fare lo stesso identico test lo passa

Exyss (21390 points)
1 2 79
by (21.4k points)

Sei sicuro di aver rinonimato il file del programma in program01.py?

Altrimenti, visto che gli errori sono simili, prova con la stessa soluzione proposta in questo thread, ossia prova ad eliminare  la riga

self.check_imports(allowed=['program01','_io']), \

nel file test_01.py alla funzione do_test()

e
edoardo98 (250 points)
1 2 3
by (250 points)
Ok si adesso ho risolto, grazie mille!!
Wahya (7760 points)
1 2 15
by (7.8k points)
Sembra un poblema con l'encoding da qualche parte nel tuo programma.

Hai usato qualche metodo tipo string.encode() o string.decode() ?

Controlla che il file python sia encoded in utf8
e
edoardo98 (250 points)
1 2 3
by (250 points)
Non uso quei metodi, sono su Mac OS quindi non penso che il problema sia l'utf-8 che dovrebbe essere di default. poi comunque nel primo hw facoltativo non mi ha dato nessun problema
andrea.sterbini (173640 points)
516 941 1795
by (174k points)
Questo tipo di errori nasce quando pytest cerca di caricare una libreria necessaria a stampare un errore.

Disattivate i controlli per capire se andate in timeout o se date un output errato
1
1872217 (290 points)
3 6 7
by (290 points)
Professore io ho eliminato la riga come suggerito dai threads precedenti e funziona, va bene?
andrea.sterbini (173640 points)
516 941 1795
by (174k points)
Vedi come va sulla vm
1
1872217 (290 points)
3 6 7
by (290 points)
Nella vm ho superato tutti i test correttamente!
andrea.sterbini (173640 points)
516 941 1795
by (174k points)

ottimo! cool               .

a.manieri (410 points)
0 0 3
by (410 points)
Ciao Edoardo,

Controlla di non aver utilizzato caratteri accentati (o particolari) nel codice