3. Zmiany w module os

Powiedzmy, że chcielibyśmy zmienić zachowanie metod z modułu os.

3.1. Założenia

  • listdir będzie pokazywał pliki/foldery które nie są ukryte (Wszystkie pliki/foldery z kropką na początku będą pomijane)

3.2. Utworzenie gałęzi (branch)

Aby utworzyć gałąż z naszymi zmianami:

git checkout -b oslib_changes

3.3. Uruchomienie testów

Aby upewnić się, że wszystkie testy przechodzą.

make test

3.4. Wyszukiwanie kodu

Domyślnie moduły znajdują się w: Lib/. Do podejrzenia na github

Jako że używamy systemu posix (mac). W kodzie mamy sprawdzenie tego faktu w linni 48 os.py.

  • Linia 48 - sprawdzenie systemu

  • Linia 51 - załadowanie wszystkiego z posix

48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
if 'posix' in _names:
 name = 'posix'
 linesep = '\n'
 from posix import *
 try:
     from posix import _exit
     __all__.append('_exit')
 except ImportError:
     pass
 import posixpath as path

 try:
     from posix import _have_functions
 except ImportError:
     pass

 import posix
 __all__.extend(_get_exports_list(posix))
 del posix
  • Po wyszukaniu listdir niczego nie znaleziono,

  • Prawdopodobnie listdir jest w innym module - np. posix.

Hint

Biblioteka posix jest napisana w niskopoziomowy sposób język C Jego prawdziwa nazwa to: posixmodule.c

  • Linia 2 - nazwa funkcji dostępna w debugerze,

  • Linia 8 - sprawdzenie czy jest dostępna funkcja fdopendir - funkcja Unixowa

Hint

Można sprawdzić tą funkcję przy użyciu man fdeopendir

3.5. Zadania

  • Zmienić