>>> d={"a":1}
>>> hash(d)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
class hashabledict(dict):
def __hash__(self):
return hash(tuple(sorted(self.items())))
>>> d1=hashabledict({"a":1})
>>> d2=hashabledict({"a":1})
>>> id(d1)
140407093637744
>>> id(d2)
140407093637584
>>> hash(d1)
-4488753233891433094
>>> hash(d2)
-4488753233891433094
~/repo/evalidate
в нем всякие setup.py
, README
и можно еще и какой-нибудь тестовый x.py
там положить. И в этом же каталоге у меня есть еще один каталог evalidate
и в нем уже либа (__init__.py
и другие файлы).x.py
делаю import evalidate
, и пишу свой тестовый код. Чтобы import сработал из моего подкаталога evalidate, а не использовалась системная библиотека, и нужно поставить переменную окружения export PYTHONPATH=.
mir ~/repo/shinhub $ rgrep michelin-energy-xm2 public/
public/index.xml: <link>https://shinhub.ru/tires/michelin-energy-xm2/</link>
public/index.xml: <guid>https://shinhub.ru/tires/michelin-energy-xm2/</guid>
public/index.xml: <link>https://shinhub.ru/tires/michelin-energy-xm2plus/</link>
public/index.xml: <guid>https://shinhub.ru/tires/michelin-energy-xm2plus/</guid>
public/tires/index.html: <li><a href="/tires/michelin-energy-xm2plus/">Michelin Energy XM2+</a> (1)</li>
public/tires/index.xml: <link>https://shinhub.ru/tires/michelin-energy-xm2/</link>
public/tires/index.xml: <guid>https://shinhub.ru/tires/michelin-energy-xm2/</guid>
public/tires/index.xml: <link>https://shinhub.ru/tires/michelin-energy-xm2plus/</link>
public/tires/index.xml: <guid>https://shinhub.ru/tires/michelin-energy-xm2plus/</guid>
public/sitemap.xml: <loc>https://shinhub.ru/tires/michelin-energy-xm2/</loc>
public/sitemap.xml: <loc>https://shinhub.ru/tires/michelin-energy-xm2plus/</loc>
Мне интереснее какое-то более-менее стандартное и популярное решение. И если таких решений несколько, то важнее то, что наиболее популярно и совместимо и где решены все детские проблемы, которые с собственным велосипедом сразу даже и не видятся. Совместимость - это ведь тоже важно, разве нет?
Вариант выше про BIP39 - очень хорошо подходит под мой вопрос. Но xkcdpass тоже неплох, спасибо!