---
# System prepended metadata

title: Dotazy ohledně czech-sort

---

# Dotazy ohledně czech-sort

1. koukni na naše testování u týmu Kosočtverci, přidal jsem tam pěkné řešení

2. co se po mně chce u toho czech-sort?

3. nemám vůbec předtavu, co je fuzzing/property-based testování - tedy název něco indikuje :), ale přesně samozřejmě nevím.

3. vysvětlit python -m pip install -e.[test] - stačí ten konec .[test]
   
   `-e` znamená `editable`: když změníš některý soubor, změny se projeví v nainstalovaném programu. Bez `-e` se instaluje "kopie".
   
   `.` je aktuální adresář.
   
   `[test]` je tzv. [extra](https://setuptools.readthedocs.io/en/latest/userguide/dependency_management.html#optional-dependencies) – způsob jak nainstalovat nějaké závislosti navíc, které program normálně nepotřebuje. V tomhle případě všechno co je potřeba na testy, tedy `pytest`.
   
**že je tečka aktuální adresář vím, že je -e to stejné co --editable také vím, ale ten konec je divný. Jako pochopil jsem, že to je pytest, protože to je v souboru setup.cfg**

   Když nainstaluješ `czech-sort`, pytest se neinstaluje; kdybys nainstaloval `czech-sort[test]`, budeš to mít i s pytest.
   Koukni na to, jak to používá [`qrcode`](https://pypi.org/project/qrcode/):
   * `pip install qrcode` – umí generovat QR kódy a vypsat je třeba do příkazové řádky
   * `pip install qrcode[pil]` – umí generovat QR kódy a pomocí další knihovny ([`pillow`](https://pillow.readthedocs.io/en/stable/)) je zapsat i jako PNG obrázky
     https://github.com/lincolnloop/python-qrcode/blob/master/setup.cfg#L44
   
   **ok, už to chápu, ale mrknu na to, díky**

4. mám se nějak hlouběji zajímat o kód, který je v czech-sort? Jako lehce jsem na to koukl a ten kód je poměrně složitý, používá některé pro mě neznámé knohovny a porovná znaky podle určitých pravidel, která mi jsou také cizí. Účel toho kódu respektive samotného programu samozřejmě chápu dobře.

   Zkus napsat test, který neprojde kvůli [nahlášené chybě](https://github.com/encukou/czech-sort/issues/5).
   
   Kód je složitý, ale nemusíš rozumět všemu. Budeš ale potřebovat se v něm zhruba zorientovat a kdyžtak najít nějakou konkrétní část. (To platí pro všechny větší projekty.) **-- PRERFEKT, to zvládnu**

**Jasné, to by mělo být snadné.**

A je to první krok k vyřešení :) - **řešení je podle mě tyhle divné znaky z cizích jazyků ignorovat, ale chápu, dám se do toho :).**

  Podle [wikipedie](https://cs.wikipedia.org/wiki/Abecedn%C3%AD_%C5%99azen%C3%AD#%C4%8Ce%C5%A1tina) (resp. ČSN 976030, kterou jsem ale nečetl) soudím že se Ł a Ø (které mají "diakritiku uvnitř znaku či přes znak") řadí za jiné varianty L a O, takže bych testoval třeba  'Ļ' < 'Ł' < 'M' a 'Ơ' < 'Ø' < 'P'

5. ještě něco dopíšu

WOW, multiplayer online editace v akci :D :)

# Aktualizace 27.8. v 9 ráno:
první předběžné testy: 
```
def test_foreign_chars1():
    with pytest.raises(KeyError):
        czech_sort.sorted([u'Ł'])


def test_foreign_chars2():
    with pytest.raises(KeyError):
        czech_sort.sorted([u'Ø'])
```

