bnc-lookup 1.0.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. bnc_lookup-1.0.5/LICENSE +46 -0
  2. bnc_lookup-1.0.5/PKG-INFO +169 -0
  3. bnc_lookup-1.0.5/README.md +137 -0
  4. bnc_lookup-1.0.5/bnc_lookup/__init__.py +5 -0
  5. bnc_lookup-1.0.5/bnc_lookup/find_bnc.py +49 -0
  6. bnc_lookup-1.0.5/bnc_lookup/hs/__init__.py +519 -0
  7. bnc_lookup-1.0.5/bnc_lookup/hs/h_00.py +2549 -0
  8. bnc_lookup-1.0.5/bnc_lookup/hs/h_01.py +2645 -0
  9. bnc_lookup-1.0.5/bnc_lookup/hs/h_02.py +2650 -0
  10. bnc_lookup-1.0.5/bnc_lookup/hs/h_03.py +2578 -0
  11. bnc_lookup-1.0.5/bnc_lookup/hs/h_04.py +2724 -0
  12. bnc_lookup-1.0.5/bnc_lookup/hs/h_05.py +2570 -0
  13. bnc_lookup-1.0.5/bnc_lookup/hs/h_06.py +2631 -0
  14. bnc_lookup-1.0.5/bnc_lookup/hs/h_07.py +2637 -0
  15. bnc_lookup-1.0.5/bnc_lookup/hs/h_08.py +2526 -0
  16. bnc_lookup-1.0.5/bnc_lookup/hs/h_09.py +2680 -0
  17. bnc_lookup-1.0.5/bnc_lookup/hs/h_0a.py +2602 -0
  18. bnc_lookup-1.0.5/bnc_lookup/hs/h_0b.py +2634 -0
  19. bnc_lookup-1.0.5/bnc_lookup/hs/h_0c.py +2653 -0
  20. bnc_lookup-1.0.5/bnc_lookup/hs/h_0d.py +2534 -0
  21. bnc_lookup-1.0.5/bnc_lookup/hs/h_0e.py +2603 -0
  22. bnc_lookup-1.0.5/bnc_lookup/hs/h_0f.py +2550 -0
  23. bnc_lookup-1.0.5/bnc_lookup/hs/h_10.py +2645 -0
  24. bnc_lookup-1.0.5/bnc_lookup/hs/h_11.py +2644 -0
  25. bnc_lookup-1.0.5/bnc_lookup/hs/h_12.py +2647 -0
  26. bnc_lookup-1.0.5/bnc_lookup/hs/h_13.py +2538 -0
  27. bnc_lookup-1.0.5/bnc_lookup/hs/h_14.py +2569 -0
  28. bnc_lookup-1.0.5/bnc_lookup/hs/h_15.py +2638 -0
  29. bnc_lookup-1.0.5/bnc_lookup/hs/h_16.py +2573 -0
  30. bnc_lookup-1.0.5/bnc_lookup/hs/h_17.py +2582 -0
  31. bnc_lookup-1.0.5/bnc_lookup/hs/h_18.py +2637 -0
  32. bnc_lookup-1.0.5/bnc_lookup/hs/h_19.py +2608 -0
  33. bnc_lookup-1.0.5/bnc_lookup/hs/h_1a.py +2625 -0
  34. bnc_lookup-1.0.5/bnc_lookup/hs/h_1b.py +2623 -0
  35. bnc_lookup-1.0.5/bnc_lookup/hs/h_1c.py +2601 -0
  36. bnc_lookup-1.0.5/bnc_lookup/hs/h_1d.py +2639 -0
  37. bnc_lookup-1.0.5/bnc_lookup/hs/h_1e.py +2654 -0
  38. bnc_lookup-1.0.5/bnc_lookup/hs/h_1f.py +2553 -0
  39. bnc_lookup-1.0.5/bnc_lookup/hs/h_20.py +2620 -0
  40. bnc_lookup-1.0.5/bnc_lookup/hs/h_21.py +2595 -0
  41. bnc_lookup-1.0.5/bnc_lookup/hs/h_22.py +2596 -0
  42. bnc_lookup-1.0.5/bnc_lookup/hs/h_23.py +2639 -0
  43. bnc_lookup-1.0.5/bnc_lookup/hs/h_24.py +2575 -0
  44. bnc_lookup-1.0.5/bnc_lookup/hs/h_25.py +2624 -0
  45. bnc_lookup-1.0.5/bnc_lookup/hs/h_26.py +2606 -0
  46. bnc_lookup-1.0.5/bnc_lookup/hs/h_27.py +2641 -0
  47. bnc_lookup-1.0.5/bnc_lookup/hs/h_28.py +2679 -0
  48. bnc_lookup-1.0.5/bnc_lookup/hs/h_29.py +2616 -0
  49. bnc_lookup-1.0.5/bnc_lookup/hs/h_2a.py +2571 -0
  50. bnc_lookup-1.0.5/bnc_lookup/hs/h_2b.py +2660 -0
  51. bnc_lookup-1.0.5/bnc_lookup/hs/h_2c.py +2638 -0
  52. bnc_lookup-1.0.5/bnc_lookup/hs/h_2d.py +2698 -0
  53. bnc_lookup-1.0.5/bnc_lookup/hs/h_2e.py +2660 -0
  54. bnc_lookup-1.0.5/bnc_lookup/hs/h_2f.py +2581 -0
  55. bnc_lookup-1.0.5/bnc_lookup/hs/h_30.py +2743 -0
  56. bnc_lookup-1.0.5/bnc_lookup/hs/h_31.py +2607 -0
  57. bnc_lookup-1.0.5/bnc_lookup/hs/h_32.py +2605 -0
  58. bnc_lookup-1.0.5/bnc_lookup/hs/h_33.py +2624 -0
  59. bnc_lookup-1.0.5/bnc_lookup/hs/h_34.py +2463 -0
  60. bnc_lookup-1.0.5/bnc_lookup/hs/h_35.py +2699 -0
  61. bnc_lookup-1.0.5/bnc_lookup/hs/h_36.py +2668 -0
  62. bnc_lookup-1.0.5/bnc_lookup/hs/h_37.py +2683 -0
  63. bnc_lookup-1.0.5/bnc_lookup/hs/h_38.py +2467 -0
  64. bnc_lookup-1.0.5/bnc_lookup/hs/h_39.py +2621 -0
  65. bnc_lookup-1.0.5/bnc_lookup/hs/h_3a.py +2613 -0
  66. bnc_lookup-1.0.5/bnc_lookup/hs/h_3b.py +2607 -0
  67. bnc_lookup-1.0.5/bnc_lookup/hs/h_3c.py +2558 -0
  68. bnc_lookup-1.0.5/bnc_lookup/hs/h_3d.py +2698 -0
  69. bnc_lookup-1.0.5/bnc_lookup/hs/h_3e.py +2578 -0
  70. bnc_lookup-1.0.5/bnc_lookup/hs/h_3f.py +2576 -0
  71. bnc_lookup-1.0.5/bnc_lookup/hs/h_40.py +2680 -0
  72. bnc_lookup-1.0.5/bnc_lookup/hs/h_41.py +2712 -0
  73. bnc_lookup-1.0.5/bnc_lookup/hs/h_42.py +2615 -0
  74. bnc_lookup-1.0.5/bnc_lookup/hs/h_43.py +2624 -0
  75. bnc_lookup-1.0.5/bnc_lookup/hs/h_44.py +2605 -0
  76. bnc_lookup-1.0.5/bnc_lookup/hs/h_45.py +2642 -0
  77. bnc_lookup-1.0.5/bnc_lookup/hs/h_46.py +2597 -0
  78. bnc_lookup-1.0.5/bnc_lookup/hs/h_47.py +2580 -0
  79. bnc_lookup-1.0.5/bnc_lookup/hs/h_48.py +2588 -0
  80. bnc_lookup-1.0.5/bnc_lookup/hs/h_49.py +2553 -0
  81. bnc_lookup-1.0.5/bnc_lookup/hs/h_4a.py +2644 -0
  82. bnc_lookup-1.0.5/bnc_lookup/hs/h_4b.py +2593 -0
  83. bnc_lookup-1.0.5/bnc_lookup/hs/h_4c.py +2656 -0
  84. bnc_lookup-1.0.5/bnc_lookup/hs/h_4d.py +2475 -0
  85. bnc_lookup-1.0.5/bnc_lookup/hs/h_4e.py +2690 -0
  86. bnc_lookup-1.0.5/bnc_lookup/hs/h_4f.py +2659 -0
  87. bnc_lookup-1.0.5/bnc_lookup/hs/h_50.py +2658 -0
  88. bnc_lookup-1.0.5/bnc_lookup/hs/h_51.py +2625 -0
  89. bnc_lookup-1.0.5/bnc_lookup/hs/h_52.py +2616 -0
  90. bnc_lookup-1.0.5/bnc_lookup/hs/h_53.py +2555 -0
  91. bnc_lookup-1.0.5/bnc_lookup/hs/h_54.py +2642 -0
  92. bnc_lookup-1.0.5/bnc_lookup/hs/h_55.py +2631 -0
  93. bnc_lookup-1.0.5/bnc_lookup/hs/h_56.py +2615 -0
  94. bnc_lookup-1.0.5/bnc_lookup/hs/h_57.py +2653 -0
  95. bnc_lookup-1.0.5/bnc_lookup/hs/h_58.py +2657 -0
  96. bnc_lookup-1.0.5/bnc_lookup/hs/h_59.py +2687 -0
  97. bnc_lookup-1.0.5/bnc_lookup/hs/h_5a.py +2545 -0
  98. bnc_lookup-1.0.5/bnc_lookup/hs/h_5b.py +2683 -0
  99. bnc_lookup-1.0.5/bnc_lookup/hs/h_5c.py +2621 -0
  100. bnc_lookup-1.0.5/bnc_lookup/hs/h_5d.py +2621 -0
  101. bnc_lookup-1.0.5/bnc_lookup/hs/h_5e.py +2571 -0
  102. bnc_lookup-1.0.5/bnc_lookup/hs/h_5f.py +2680 -0
  103. bnc_lookup-1.0.5/bnc_lookup/hs/h_60.py +2633 -0
  104. bnc_lookup-1.0.5/bnc_lookup/hs/h_61.py +2652 -0
  105. bnc_lookup-1.0.5/bnc_lookup/hs/h_62.py +2680 -0
  106. bnc_lookup-1.0.5/bnc_lookup/hs/h_63.py +2651 -0
  107. bnc_lookup-1.0.5/bnc_lookup/hs/h_64.py +2635 -0
  108. bnc_lookup-1.0.5/bnc_lookup/hs/h_65.py +2625 -0
  109. bnc_lookup-1.0.5/bnc_lookup/hs/h_66.py +2588 -0
  110. bnc_lookup-1.0.5/bnc_lookup/hs/h_67.py +2532 -0
  111. bnc_lookup-1.0.5/bnc_lookup/hs/h_68.py +2702 -0
  112. bnc_lookup-1.0.5/bnc_lookup/hs/h_69.py +2536 -0
  113. bnc_lookup-1.0.5/bnc_lookup/hs/h_6a.py +2717 -0
  114. bnc_lookup-1.0.5/bnc_lookup/hs/h_6b.py +2601 -0
  115. bnc_lookup-1.0.5/bnc_lookup/hs/h_6c.py +2661 -0
  116. bnc_lookup-1.0.5/bnc_lookup/hs/h_6d.py +2550 -0
  117. bnc_lookup-1.0.5/bnc_lookup/hs/h_6e.py +2660 -0
  118. bnc_lookup-1.0.5/bnc_lookup/hs/h_6f.py +2611 -0
  119. bnc_lookup-1.0.5/bnc_lookup/hs/h_70.py +2673 -0
  120. bnc_lookup-1.0.5/bnc_lookup/hs/h_71.py +2591 -0
  121. bnc_lookup-1.0.5/bnc_lookup/hs/h_72.py +2661 -0
  122. bnc_lookup-1.0.5/bnc_lookup/hs/h_73.py +2652 -0
  123. bnc_lookup-1.0.5/bnc_lookup/hs/h_74.py +2689 -0
  124. bnc_lookup-1.0.5/bnc_lookup/hs/h_75.py +2569 -0
  125. bnc_lookup-1.0.5/bnc_lookup/hs/h_76.py +2561 -0
  126. bnc_lookup-1.0.5/bnc_lookup/hs/h_77.py +2621 -0
  127. bnc_lookup-1.0.5/bnc_lookup/hs/h_78.py +2691 -0
  128. bnc_lookup-1.0.5/bnc_lookup/hs/h_79.py +2596 -0
  129. bnc_lookup-1.0.5/bnc_lookup/hs/h_7a.py +2564 -0
  130. bnc_lookup-1.0.5/bnc_lookup/hs/h_7b.py +2609 -0
  131. bnc_lookup-1.0.5/bnc_lookup/hs/h_7c.py +2649 -0
  132. bnc_lookup-1.0.5/bnc_lookup/hs/h_7d.py +2679 -0
  133. bnc_lookup-1.0.5/bnc_lookup/hs/h_7e.py +2625 -0
  134. bnc_lookup-1.0.5/bnc_lookup/hs/h_7f.py +2662 -0
  135. bnc_lookup-1.0.5/bnc_lookup/hs/h_80.py +2682 -0
  136. bnc_lookup-1.0.5/bnc_lookup/hs/h_81.py +2614 -0
  137. bnc_lookup-1.0.5/bnc_lookup/hs/h_82.py +2573 -0
  138. bnc_lookup-1.0.5/bnc_lookup/hs/h_83.py +2735 -0
  139. bnc_lookup-1.0.5/bnc_lookup/hs/h_84.py +2638 -0
  140. bnc_lookup-1.0.5/bnc_lookup/hs/h_85.py +2600 -0
  141. bnc_lookup-1.0.5/bnc_lookup/hs/h_86.py +2602 -0
  142. bnc_lookup-1.0.5/bnc_lookup/hs/h_87.py +2566 -0
  143. bnc_lookup-1.0.5/bnc_lookup/hs/h_88.py +2616 -0
  144. bnc_lookup-1.0.5/bnc_lookup/hs/h_89.py +2603 -0
  145. bnc_lookup-1.0.5/bnc_lookup/hs/h_8a.py +2592 -0
  146. bnc_lookup-1.0.5/bnc_lookup/hs/h_8b.py +2692 -0
  147. bnc_lookup-1.0.5/bnc_lookup/hs/h_8c.py +2594 -0
  148. bnc_lookup-1.0.5/bnc_lookup/hs/h_8d.py +2565 -0
  149. bnc_lookup-1.0.5/bnc_lookup/hs/h_8e.py +2615 -0
  150. bnc_lookup-1.0.5/bnc_lookup/hs/h_8f.py +2634 -0
  151. bnc_lookup-1.0.5/bnc_lookup/hs/h_90.py +2622 -0
  152. bnc_lookup-1.0.5/bnc_lookup/hs/h_91.py +2614 -0
  153. bnc_lookup-1.0.5/bnc_lookup/hs/h_92.py +2596 -0
  154. bnc_lookup-1.0.5/bnc_lookup/hs/h_93.py +2620 -0
  155. bnc_lookup-1.0.5/bnc_lookup/hs/h_94.py +2591 -0
  156. bnc_lookup-1.0.5/bnc_lookup/hs/h_95.py +2599 -0
  157. bnc_lookup-1.0.5/bnc_lookup/hs/h_96.py +2538 -0
  158. bnc_lookup-1.0.5/bnc_lookup/hs/h_97.py +2681 -0
  159. bnc_lookup-1.0.5/bnc_lookup/hs/h_98.py +2655 -0
  160. bnc_lookup-1.0.5/bnc_lookup/hs/h_99.py +2519 -0
  161. bnc_lookup-1.0.5/bnc_lookup/hs/h_9a.py +2647 -0
  162. bnc_lookup-1.0.5/bnc_lookup/hs/h_9b.py +2593 -0
  163. bnc_lookup-1.0.5/bnc_lookup/hs/h_9c.py +2622 -0
  164. bnc_lookup-1.0.5/bnc_lookup/hs/h_9d.py +2695 -0
  165. bnc_lookup-1.0.5/bnc_lookup/hs/h_9e.py +2728 -0
  166. bnc_lookup-1.0.5/bnc_lookup/hs/h_9f.py +2568 -0
  167. bnc_lookup-1.0.5/bnc_lookup/hs/h_a0.py +2758 -0
  168. bnc_lookup-1.0.5/bnc_lookup/hs/h_a1.py +2587 -0
  169. bnc_lookup-1.0.5/bnc_lookup/hs/h_a2.py +2549 -0
  170. bnc_lookup-1.0.5/bnc_lookup/hs/h_a3.py +2616 -0
  171. bnc_lookup-1.0.5/bnc_lookup/hs/h_a4.py +2552 -0
  172. bnc_lookup-1.0.5/bnc_lookup/hs/h_a5.py +2562 -0
  173. bnc_lookup-1.0.5/bnc_lookup/hs/h_a6.py +2676 -0
  174. bnc_lookup-1.0.5/bnc_lookup/hs/h_a7.py +2625 -0
  175. bnc_lookup-1.0.5/bnc_lookup/hs/h_a8.py +2636 -0
  176. bnc_lookup-1.0.5/bnc_lookup/hs/h_a9.py +2555 -0
  177. bnc_lookup-1.0.5/bnc_lookup/hs/h_aa.py +2614 -0
  178. bnc_lookup-1.0.5/bnc_lookup/hs/h_ab.py +2636 -0
  179. bnc_lookup-1.0.5/bnc_lookup/hs/h_ac.py +2530 -0
  180. bnc_lookup-1.0.5/bnc_lookup/hs/h_ad.py +2529 -0
  181. bnc_lookup-1.0.5/bnc_lookup/hs/h_ae.py +2549 -0
  182. bnc_lookup-1.0.5/bnc_lookup/hs/h_af.py +2617 -0
  183. bnc_lookup-1.0.5/bnc_lookup/hs/h_b0.py +2625 -0
  184. bnc_lookup-1.0.5/bnc_lookup/hs/h_b1.py +2588 -0
  185. bnc_lookup-1.0.5/bnc_lookup/hs/h_b2.py +2655 -0
  186. bnc_lookup-1.0.5/bnc_lookup/hs/h_b3.py +2631 -0
  187. bnc_lookup-1.0.5/bnc_lookup/hs/h_b4.py +2690 -0
  188. bnc_lookup-1.0.5/bnc_lookup/hs/h_b5.py +2610 -0
  189. bnc_lookup-1.0.5/bnc_lookup/hs/h_b6.py +2677 -0
  190. bnc_lookup-1.0.5/bnc_lookup/hs/h_b7.py +2716 -0
  191. bnc_lookup-1.0.5/bnc_lookup/hs/h_b8.py +2668 -0
  192. bnc_lookup-1.0.5/bnc_lookup/hs/h_b9.py +2600 -0
  193. bnc_lookup-1.0.5/bnc_lookup/hs/h_ba.py +2578 -0
  194. bnc_lookup-1.0.5/bnc_lookup/hs/h_bb.py +2690 -0
  195. bnc_lookup-1.0.5/bnc_lookup/hs/h_bc.py +2594 -0
  196. bnc_lookup-1.0.5/bnc_lookup/hs/h_bd.py +2620 -0
  197. bnc_lookup-1.0.5/bnc_lookup/hs/h_be.py +2684 -0
  198. bnc_lookup-1.0.5/bnc_lookup/hs/h_bf.py +2657 -0
  199. bnc_lookup-1.0.5/bnc_lookup/hs/h_c0.py +2691 -0
  200. bnc_lookup-1.0.5/bnc_lookup/hs/h_c1.py +2694 -0
  201. bnc_lookup-1.0.5/bnc_lookup/hs/h_c2.py +2594 -0
  202. bnc_lookup-1.0.5/bnc_lookup/hs/h_c3.py +2600 -0
  203. bnc_lookup-1.0.5/bnc_lookup/hs/h_c4.py +2545 -0
  204. bnc_lookup-1.0.5/bnc_lookup/hs/h_c5.py +2610 -0
  205. bnc_lookup-1.0.5/bnc_lookup/hs/h_c6.py +2676 -0
  206. bnc_lookup-1.0.5/bnc_lookup/hs/h_c7.py +2664 -0
  207. bnc_lookup-1.0.5/bnc_lookup/hs/h_c8.py +2626 -0
  208. bnc_lookup-1.0.5/bnc_lookup/hs/h_c9.py +2552 -0
  209. bnc_lookup-1.0.5/bnc_lookup/hs/h_ca.py +2497 -0
  210. bnc_lookup-1.0.5/bnc_lookup/hs/h_cb.py +2692 -0
  211. bnc_lookup-1.0.5/bnc_lookup/hs/h_cc.py +2649 -0
  212. bnc_lookup-1.0.5/bnc_lookup/hs/h_cd.py +2496 -0
  213. bnc_lookup-1.0.5/bnc_lookup/hs/h_ce.py +2637 -0
  214. bnc_lookup-1.0.5/bnc_lookup/hs/h_cf.py +2666 -0
  215. bnc_lookup-1.0.5/bnc_lookup/hs/h_d0.py +2592 -0
  216. bnc_lookup-1.0.5/bnc_lookup/hs/h_d1.py +2634 -0
  217. bnc_lookup-1.0.5/bnc_lookup/hs/h_d2.py +2628 -0
  218. bnc_lookup-1.0.5/bnc_lookup/hs/h_d3.py +2692 -0
  219. bnc_lookup-1.0.5/bnc_lookup/hs/h_d4.py +2608 -0
  220. bnc_lookup-1.0.5/bnc_lookup/hs/h_d5.py +2581 -0
  221. bnc_lookup-1.0.5/bnc_lookup/hs/h_d6.py +2618 -0
  222. bnc_lookup-1.0.5/bnc_lookup/hs/h_d7.py +2690 -0
  223. bnc_lookup-1.0.5/bnc_lookup/hs/h_d8.py +2600 -0
  224. bnc_lookup-1.0.5/bnc_lookup/hs/h_d9.py +2623 -0
  225. bnc_lookup-1.0.5/bnc_lookup/hs/h_da.py +2611 -0
  226. bnc_lookup-1.0.5/bnc_lookup/hs/h_db.py +2675 -0
  227. bnc_lookup-1.0.5/bnc_lookup/hs/h_dc.py +2557 -0
  228. bnc_lookup-1.0.5/bnc_lookup/hs/h_dd.py +2565 -0
  229. bnc_lookup-1.0.5/bnc_lookup/hs/h_de.py +2568 -0
  230. bnc_lookup-1.0.5/bnc_lookup/hs/h_df.py +2726 -0
  231. bnc_lookup-1.0.5/bnc_lookup/hs/h_e0.py +2531 -0
  232. bnc_lookup-1.0.5/bnc_lookup/hs/h_e1.py +2505 -0
  233. bnc_lookup-1.0.5/bnc_lookup/hs/h_e2.py +2600 -0
  234. bnc_lookup-1.0.5/bnc_lookup/hs/h_e3.py +2546 -0
  235. bnc_lookup-1.0.5/bnc_lookup/hs/h_e4.py +2615 -0
  236. bnc_lookup-1.0.5/bnc_lookup/hs/h_e5.py +2609 -0
  237. bnc_lookup-1.0.5/bnc_lookup/hs/h_e6.py +2610 -0
  238. bnc_lookup-1.0.5/bnc_lookup/hs/h_e7.py +2689 -0
  239. bnc_lookup-1.0.5/bnc_lookup/hs/h_e8.py +2527 -0
  240. bnc_lookup-1.0.5/bnc_lookup/hs/h_e9.py +2561 -0
  241. bnc_lookup-1.0.5/bnc_lookup/hs/h_ea.py +2599 -0
  242. bnc_lookup-1.0.5/bnc_lookup/hs/h_eb.py +2685 -0
  243. bnc_lookup-1.0.5/bnc_lookup/hs/h_ec.py +2742 -0
  244. bnc_lookup-1.0.5/bnc_lookup/hs/h_ed.py +2683 -0
  245. bnc_lookup-1.0.5/bnc_lookup/hs/h_ee.py +2576 -0
  246. bnc_lookup-1.0.5/bnc_lookup/hs/h_ef.py +2644 -0
  247. bnc_lookup-1.0.5/bnc_lookup/hs/h_f0.py +2689 -0
  248. bnc_lookup-1.0.5/bnc_lookup/hs/h_f1.py +2646 -0
  249. bnc_lookup-1.0.5/bnc_lookup/hs/h_f2.py +2528 -0
  250. bnc_lookup-1.0.5/bnc_lookup/hs/h_f3.py +2665 -0
  251. bnc_lookup-1.0.5/bnc_lookup/hs/h_f4.py +2627 -0
  252. bnc_lookup-1.0.5/bnc_lookup/hs/h_f5.py +2682 -0
  253. bnc_lookup-1.0.5/bnc_lookup/hs/h_f6.py +2598 -0
  254. bnc_lookup-1.0.5/bnc_lookup/hs/h_f7.py +2664 -0
  255. bnc_lookup-1.0.5/bnc_lookup/hs/h_f8.py +2623 -0
  256. bnc_lookup-1.0.5/bnc_lookup/hs/h_f9.py +2557 -0
  257. bnc_lookup-1.0.5/bnc_lookup/hs/h_fa.py +2621 -0
  258. bnc_lookup-1.0.5/bnc_lookup/hs/h_fb.py +2658 -0
  259. bnc_lookup-1.0.5/bnc_lookup/hs/h_fc.py +2667 -0
  260. bnc_lookup-1.0.5/bnc_lookup/hs/h_fd.py +2578 -0
  261. bnc_lookup-1.0.5/bnc_lookup/hs/h_fe.py +2656 -0
  262. bnc_lookup-1.0.5/bnc_lookup/hs/h_ff.py +2782 -0
  263. bnc_lookup-1.0.5/pyproject.toml +76 -0
  264. bnc_lookup-1.0.5/setup.py +26 -0
@@ -0,0 +1,46 @@
1
+ BNC-LOOKUP LICENSE
2
+
3
+ This package contains two components with different licenses:
4
+
5
+ ===============================================================================
6
+ 1. SOFTWARE LICENSE (MIT)
7
+ ===============================================================================
8
+
9
+ Copyright (c) 2026 Craig Trim
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+
29
+ ===============================================================================
30
+ 2. BNC DATA LICENSE
31
+ ===============================================================================
32
+
33
+ This package contains data derived from the British National Corpus frequency
34
+ lists compiled by Adam Kilgarriff.
35
+
36
+ Source: https://www.kilgarriff.co.uk/BNClists/all.num.gz
37
+
38
+ The British National Corpus, version 3 (BNC XML Edition). 2007. Distributed by
39
+ Bodleian Libraries, University of Oxford, on behalf of the BNC Consortium.
40
+
41
+ The BNC frequency data is used in accordance with standard academic citation
42
+ practices. Users of this package should cite the BNC appropriately in any
43
+ published work.
44
+
45
+ For licensing information regarding the full British National Corpus, see:
46
+ http://www.natcorp.ox.ac.uk/corpus/licence.html
@@ -0,0 +1,169 @@
1
+ Metadata-Version: 2.1
2
+ Name: bnc-lookup
3
+ Version: 1.0.5
4
+ Summary: Static Hash-Based Lookup for BNC Terms
5
+ Home-page: https://github.com/craigtrim/bnc-lookup
6
+ License: MIT
7
+ Keywords: bnc,lexicon,nlp,natural-language-processing,dictionary,vocabulary,validation,linguistics
8
+ Author: Craig Trim
9
+ Author-email: craigtrim@gmail.com
10
+ Maintainer: Craig Trim
11
+ Maintainer-email: craigtrim@gmail.com
12
+ Requires-Python: >=3.7,<4.0
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Natural Language :: English
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.7
21
+ Classifier: Programming Language :: Python :: 3.8
22
+ Classifier: Programming Language :: Python :: 3.9
23
+ Classifier: Programming Language :: Python :: 3.10
24
+ Classifier: Programming Language :: Python :: 3.11
25
+ Classifier: Programming Language :: Python :: 3.12
26
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
27
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
28
+ Classifier: Topic :: Text Processing :: Linguistic
29
+ Project-URL: Repository, https://github.com/craigtrim/bnc-lookup
30
+ Description-Content-Type: text/markdown
31
+
32
+ # BNC Lookup
33
+
34
+ [![PyPI version](https://img.shields.io/pypi/v/bnc-lookup.svg)](https://pypi.org/project/bnc-lookup/)
35
+ [![PyPI downloads](https://img.shields.io/pypi/dm/bnc-lookup.svg)](https://pypi.org/project/bnc-lookup/)
36
+ [![Python versions](https://img.shields.io/pypi/pyversions/bnc-lookup.svg)](https://pypi.org/project/bnc-lookup/)
37
+ [![License](https://img.shields.io/badge/License-MIT%20%2B%20BNC-yellow.svg)](LICENSE)
38
+ [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
39
+ [![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
40
+ [![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](https://github.com/craigtrim/bnc-lookup)
41
+
42
+ **Is this token a word? O(1) answer. No setup. No dependencies.**
43
+
44
+ A simple question deserves a simple answer. This library gives you instant yes/no validation against 669,000 word forms from the British National Corpus.
45
+
46
+ ## Quick Start
47
+
48
+ ```bash
49
+ pip install bnc-lookup
50
+ ```
51
+
52
+ ```python
53
+ from bnc_lookup import is_bnc_term
54
+
55
+ # That's it. Start validating.
56
+ is_bnc_term('the') # True
57
+ is_bnc_term('however') # True
58
+ is_bnc_term('nonetheless') # True
59
+ is_bnc_term('xyzabc123') # False
60
+
61
+ # Handles plurals automatically
62
+ is_bnc_term('computers') # True
63
+
64
+ # Case insensitive
65
+ is_bnc_term('THE') # True
66
+ ```
67
+
68
+ ## Features
69
+
70
+ - **Zero Dependencies** - Pure Python, no external packages
71
+ - **Zero I/O** - No filesystem access, no database queries
72
+ - **Zero Setup** - No corpus downloads or configuration
73
+ - **Microsecond Lookups** - O(1) dictionary access
74
+ - **Smart Plurals** - Automatically checks singular forms
75
+ - **Simple API** - One function does it all
76
+
77
+ ## The Problem This Solves
78
+
79
+ In NLP, you frequently need to answer the question: **"Is this token a real word?"**
80
+
81
+ Not "what does it mean?" Not "give me synonyms." Just: is this a word?
82
+
83
+ <table>
84
+ <tr>
85
+ <td align="center"><code>is_bnc_term('computer')</code></td>
86
+ <td align="center"><code>is_bnc_term('asdfgh')</code></td>
87
+ </tr>
88
+ <tr>
89
+ <td align="center"><img src="docs/images/yes-hot-dog.png" width="180"></td>
90
+ <td align="center"><img src="docs/images/not-hot-dog.png" width="180"></td>
91
+ </tr>
92
+ <tr>
93
+ <td align="center"><code>True</code></td>
94
+ <td align="center"><code>False</code></td>
95
+ </tr>
96
+ </table>
97
+
98
+ That's it. O(1) response. No ambiguity.
99
+
100
+ ## Why BNC?
101
+
102
+ The British National Corpus isn't an academic wordlist (too narrow). It's not a web scrape (too noisy). It's not slang (too ephemeral).
103
+
104
+ It's a **100-million-word corpus of real British English** collected from written and spoken sources between 1991-1994. Books, newspapers, academic papers, conversations. The BNC frequency list captures ~669,000 unique word forms actually used by native speakers.
105
+
106
+ If a token passes the BNC test, you can be confident it's a word that real people actually use.
107
+
108
+ ## When to Use This
109
+
110
+ - **Tokenization filtering**: Keep real words, discard garbage
111
+ - **Input validation**: Reject nonsense in user input
112
+ - **NLP preprocessing**: Filter candidates before expensive operations
113
+ - **Spell-check pre-filtering**: Quick reject obvious non-words before fuzzy matching
114
+ - **Data cleaning**: Identify malformed or corrupted text
115
+
116
+ ## What This Doesn't Do
117
+
118
+ - No definitions, synonyms, or semantic relationships (use spaCy for that)
119
+ - No frequency counts or rankings (just yes/no)
120
+ - No spell-checking or suggestions (just existence check)
121
+
122
+ ## Documentation
123
+
124
+ For detailed usage, performance benchmarks, and advanced features, see the [API Documentation](docs/API.md).
125
+
126
+ ## How It Works
127
+
128
+ BNC terms are stored as MD5 hash suffixes in 256 `frozenset` buckets (by first two hex characters of the hash). Lookups hash the input, route to the correct bucket, and perform O(1) set membership. Modules are lazy-loaded on first access per bucket.
129
+
130
+ For the gory details, see [Implementation Notes](docs/IMPLEMENTATION.md).
131
+
132
+ ## Development
133
+
134
+ ```bash
135
+ git clone https://github.com/craigtrim/bnc-lookup.git
136
+ cd bnc-lookup
137
+ make install # Install dependencies
138
+ make test # Run tests
139
+ make all # Full build pipeline
140
+ ```
141
+
142
+ See [API Documentation](docs/API.md) for detailed development information.
143
+
144
+ ## License
145
+
146
+ This package is dual-licensed:
147
+ - **Software**: MIT License
148
+ - **BNC Data**: BNC User Licence
149
+
150
+ See [LICENSE](LICENSE) for complete terms.
151
+
152
+ ## Attribution
153
+
154
+ This package contains data derived from the British National Corpus frequency lists:
155
+
156
+ > BNC frequency lists compiled by Adam Kilgarriff.
157
+ > Source: https://www.kilgarriff.co.uk/BNClists/all.num.gz
158
+ >
159
+ > The British National Corpus, version 3 (BNC XML Edition). 2007. Distributed by Bodleian Libraries, University of Oxford, on behalf of the BNC Consortium.
160
+
161
+ **Note:** This is a static snapshot of BNC frequency data. The data is not automatically updated.
162
+
163
+ ## Links
164
+
165
+ - **Repository**: [github.com/craigtrim/bnc-lookup](https://github.com/craigtrim/bnc-lookup)
166
+ - **PyPI**: [pypi.org/project/bnc-lookup](https://pypi.org/project/bnc-lookup)
167
+ - **BNC**: [natcorp.ox.ac.uk](http://www.natcorp.ox.ac.uk)
168
+ - **Author**: Craig Trim ([craigtrim@gmail.com](mailto:craigtrim@gmail.com))
169
+
@@ -0,0 +1,137 @@
1
+ # BNC Lookup
2
+
3
+ [![PyPI version](https://img.shields.io/pypi/v/bnc-lookup.svg)](https://pypi.org/project/bnc-lookup/)
4
+ [![PyPI downloads](https://img.shields.io/pypi/dm/bnc-lookup.svg)](https://pypi.org/project/bnc-lookup/)
5
+ [![Python versions](https://img.shields.io/pypi/pyversions/bnc-lookup.svg)](https://pypi.org/project/bnc-lookup/)
6
+ [![License](https://img.shields.io/badge/License-MIT%20%2B%20BNC-yellow.svg)](LICENSE)
7
+ [![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
8
+ [![Pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
9
+ [![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](https://github.com/craigtrim/bnc-lookup)
10
+
11
+ **Is this token a word? O(1) answer. No setup. No dependencies.**
12
+
13
+ A simple question deserves a simple answer. This library gives you instant yes/no validation against 669,000 word forms from the British National Corpus.
14
+
15
+ ## Quick Start
16
+
17
+ ```bash
18
+ pip install bnc-lookup
19
+ ```
20
+
21
+ ```python
22
+ from bnc_lookup import is_bnc_term
23
+
24
+ # That's it. Start validating.
25
+ is_bnc_term('the') # True
26
+ is_bnc_term('however') # True
27
+ is_bnc_term('nonetheless') # True
28
+ is_bnc_term('xyzabc123') # False
29
+
30
+ # Handles plurals automatically
31
+ is_bnc_term('computers') # True
32
+
33
+ # Case insensitive
34
+ is_bnc_term('THE') # True
35
+ ```
36
+
37
+ ## Features
38
+
39
+ - **Zero Dependencies** - Pure Python, no external packages
40
+ - **Zero I/O** - No filesystem access, no database queries
41
+ - **Zero Setup** - No corpus downloads or configuration
42
+ - **Microsecond Lookups** - O(1) dictionary access
43
+ - **Smart Plurals** - Automatically checks singular forms
44
+ - **Simple API** - One function does it all
45
+
46
+ ## The Problem This Solves
47
+
48
+ In NLP, you frequently need to answer the question: **"Is this token a real word?"**
49
+
50
+ Not "what does it mean?" Not "give me synonyms." Just: is this a word?
51
+
52
+ <table>
53
+ <tr>
54
+ <td align="center"><code>is_bnc_term('computer')</code></td>
55
+ <td align="center"><code>is_bnc_term('asdfgh')</code></td>
56
+ </tr>
57
+ <tr>
58
+ <td align="center"><img src="docs/images/yes-hot-dog.png" width="180"></td>
59
+ <td align="center"><img src="docs/images/not-hot-dog.png" width="180"></td>
60
+ </tr>
61
+ <tr>
62
+ <td align="center"><code>True</code></td>
63
+ <td align="center"><code>False</code></td>
64
+ </tr>
65
+ </table>
66
+
67
+ That's it. O(1) response. No ambiguity.
68
+
69
+ ## Why BNC?
70
+
71
+ The British National Corpus isn't an academic wordlist (too narrow). It's not a web scrape (too noisy). It's not slang (too ephemeral).
72
+
73
+ It's a **100-million-word corpus of real British English** collected from written and spoken sources between 1991-1994. Books, newspapers, academic papers, conversations. The BNC frequency list captures ~669,000 unique word forms actually used by native speakers.
74
+
75
+ If a token passes the BNC test, you can be confident it's a word that real people actually use.
76
+
77
+ ## When to Use This
78
+
79
+ - **Tokenization filtering**: Keep real words, discard garbage
80
+ - **Input validation**: Reject nonsense in user input
81
+ - **NLP preprocessing**: Filter candidates before expensive operations
82
+ - **Spell-check pre-filtering**: Quick reject obvious non-words before fuzzy matching
83
+ - **Data cleaning**: Identify malformed or corrupted text
84
+
85
+ ## What This Doesn't Do
86
+
87
+ - No definitions, synonyms, or semantic relationships (use spaCy for that)
88
+ - No frequency counts or rankings (just yes/no)
89
+ - No spell-checking or suggestions (just existence check)
90
+
91
+ ## Documentation
92
+
93
+ For detailed usage, performance benchmarks, and advanced features, see the [API Documentation](docs/API.md).
94
+
95
+ ## How It Works
96
+
97
+ BNC terms are stored as MD5 hash suffixes in 256 `frozenset` buckets (by first two hex characters of the hash). Lookups hash the input, route to the correct bucket, and perform O(1) set membership. Modules are lazy-loaded on first access per bucket.
98
+
99
+ For the gory details, see [Implementation Notes](docs/IMPLEMENTATION.md).
100
+
101
+ ## Development
102
+
103
+ ```bash
104
+ git clone https://github.com/craigtrim/bnc-lookup.git
105
+ cd bnc-lookup
106
+ make install # Install dependencies
107
+ make test # Run tests
108
+ make all # Full build pipeline
109
+ ```
110
+
111
+ See [API Documentation](docs/API.md) for detailed development information.
112
+
113
+ ## License
114
+
115
+ This package is dual-licensed:
116
+ - **Software**: MIT License
117
+ - **BNC Data**: BNC User Licence
118
+
119
+ See [LICENSE](LICENSE) for complete terms.
120
+
121
+ ## Attribution
122
+
123
+ This package contains data derived from the British National Corpus frequency lists:
124
+
125
+ > BNC frequency lists compiled by Adam Kilgarriff.
126
+ > Source: https://www.kilgarriff.co.uk/BNClists/all.num.gz
127
+ >
128
+ > The British National Corpus, version 3 (BNC XML Edition). 2007. Distributed by Bodleian Libraries, University of Oxford, on behalf of the BNC Consortium.
129
+
130
+ **Note:** This is a static snapshot of BNC frequency data. The data is not automatically updated.
131
+
132
+ ## Links
133
+
134
+ - **Repository**: [github.com/craigtrim/bnc-lookup](https://github.com/craigtrim/bnc-lookup)
135
+ - **PyPI**: [pypi.org/project/bnc-lookup](https://pypi.org/project/bnc-lookup)
136
+ - **BNC**: [natcorp.ox.ac.uk](http://www.natcorp.ox.ac.uk)
137
+ - **Author**: Craig Trim ([craigtrim@gmail.com](mailto:craigtrim@gmail.com))
@@ -0,0 +1,5 @@
1
+ from bnc_lookup.find_bnc import FindBnc
2
+
3
+
4
+ def is_bnc_term(input_text: str) -> bool:
5
+ return FindBnc().exists(input_text)
@@ -0,0 +1,49 @@
1
+ # !/usr/bin/env python
2
+ # -*- coding: UTF-8 -*-
3
+ """ Facade to find BNC Data on Disk """
4
+
5
+ import hashlib
6
+ import importlib
7
+
8
+ _cache = {}
9
+
10
+
11
+ def _get_hash_set(prefix: str) -> frozenset:
12
+ if prefix not in _cache:
13
+ module = importlib.import_module(f'bnc_lookup.hs.h_{prefix}')
14
+ _cache[prefix] = getattr(module, f'hashes_{prefix}')
15
+ return _cache[prefix]
16
+
17
+
18
+ def _calculate_md5(input_text: str) -> str:
19
+ return hashlib.md5(input_text.lower().strip().encode()).hexdigest()
20
+
21
+
22
+ def _hash_exists(input_text: str) -> bool:
23
+ if not input_text:
24
+ return False
25
+ h = _calculate_md5(input_text)
26
+ prefix, suffix = h[:2], h[2:]
27
+ try:
28
+ return suffix in _get_hash_set(prefix)
29
+ except ModuleNotFoundError:
30
+ return False
31
+
32
+
33
+ class FindBnc:
34
+ """ Facade to find BNC Data on Disk """
35
+
36
+ def __init__(self):
37
+ pass
38
+
39
+ def exists(self, input_text: str) -> bool:
40
+ input_text = input_text.lower().strip()
41
+
42
+ if _hash_exists(input_text):
43
+ return True
44
+
45
+ if input_text.endswith('s') and len(input_text) > 3:
46
+ if _hash_exists(input_text[:-1]):
47
+ return True
48
+
49
+ return False