[Gelistirici] fetcher.fetch_url(), file.File.download() ve Bütünlük Kontrolü

Bahadır Kandemir bahadir at pardus.org.tr
1 Kas 2010 Pzt 09:43:59 EET


Pazartesi 01 Kasım 2010 günü (saat 09:25:19) Fatih Aşıcı şunları yazmıştı:
>  Kodun geri kalanı, izlediğimiz kod stiline zaten uymadığı için
>  şimdilik stil düzeltmelerini es geçiyorum.

Kod stili derken? :) PEP-8 uyumu yok, "file" adında bir modülümüz var, 
"os.path.join" kullanmayın kuralına rağmen ~150 yerde kullanılmış, stile uymak 
için ben de öyle yaptım :D

>  newfile yerine tmpfile desek daha anlamlı olacak sanki.

fetcher içinde destname kullandım, ama file içinde kararsız kalıp newfile 
dedim. tmpfile iyi bir isim değil bence, "tempfile" ile karıştırılabilir.

>  Bir de
>  aşağıdaki şekilde
>  sadeleştirilebilir:
> 
>          if uri.is_remote_file() or copylocal:
>              tmpfile = check_integrity and uri.filename() +
>  ctx.const.temporary_suffix
>              localfile = pisi.util.join_path(transfer_dir, tmpfile or
>  uri.filename())

Bu kalıbı hiç kullanmadım daha önce, ama sevdim, kullanalım.

> > +        def clean_temporary():
> > +            corrupt_files = [sha1_file]
> > +            if check_integrity:
> > +                corrupt_files.append(localfile)
> 
>  Listenin adını temp_files yapsak daha iyi olur. Sum dosyası bozuk değil
>  aslında.

Evet, bu daha iyi.

> >          if sha1sum:
> >              if (pisi.util.sha1_file(localfile) != newsha1):
> > +                clean_temporary()
> > 
> >                  raise Error(_("File integrity of %s compromised.") %
> > 
> > uri)
> 
>  fetcher exception verdiğinde de clean_temporary() çağrılacak
>  mı/çağrılmalı mı
>  acaba? Fetcher exception'ları yakalanmıyor download() içinde. Eğer
>  exception
>  alınırsa bu code path'e hiç girmeyecek.

Hedef dizin olarak depo dizini kullanıldığı için, geçici dosyaların orada 
durması hoşuma gitmedi. Başka bir dizin kullanılabilir belki bunun için.

-- 
Bahadır Kandemir



Gelistirici mesaj listesiyle ilgili daha fazla bilgi