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.
- bnc_lookup-1.0.5/LICENSE +46 -0
- bnc_lookup-1.0.5/PKG-INFO +169 -0
- bnc_lookup-1.0.5/README.md +137 -0
- bnc_lookup-1.0.5/bnc_lookup/__init__.py +5 -0
- bnc_lookup-1.0.5/bnc_lookup/find_bnc.py +49 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/__init__.py +519 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_00.py +2549 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_01.py +2645 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_02.py +2650 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_03.py +2578 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_04.py +2724 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_05.py +2570 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_06.py +2631 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_07.py +2637 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_08.py +2526 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_09.py +2680 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_0a.py +2602 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_0b.py +2634 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_0c.py +2653 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_0d.py +2534 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_0e.py +2603 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_0f.py +2550 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_10.py +2645 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_11.py +2644 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_12.py +2647 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_13.py +2538 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_14.py +2569 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_15.py +2638 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_16.py +2573 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_17.py +2582 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_18.py +2637 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_19.py +2608 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_1a.py +2625 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_1b.py +2623 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_1c.py +2601 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_1d.py +2639 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_1e.py +2654 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_1f.py +2553 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_20.py +2620 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_21.py +2595 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_22.py +2596 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_23.py +2639 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_24.py +2575 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_25.py +2624 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_26.py +2606 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_27.py +2641 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_28.py +2679 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_29.py +2616 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_2a.py +2571 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_2b.py +2660 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_2c.py +2638 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_2d.py +2698 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_2e.py +2660 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_2f.py +2581 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_30.py +2743 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_31.py +2607 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_32.py +2605 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_33.py +2624 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_34.py +2463 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_35.py +2699 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_36.py +2668 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_37.py +2683 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_38.py +2467 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_39.py +2621 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_3a.py +2613 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_3b.py +2607 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_3c.py +2558 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_3d.py +2698 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_3e.py +2578 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_3f.py +2576 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_40.py +2680 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_41.py +2712 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_42.py +2615 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_43.py +2624 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_44.py +2605 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_45.py +2642 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_46.py +2597 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_47.py +2580 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_48.py +2588 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_49.py +2553 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_4a.py +2644 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_4b.py +2593 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_4c.py +2656 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_4d.py +2475 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_4e.py +2690 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_4f.py +2659 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_50.py +2658 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_51.py +2625 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_52.py +2616 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_53.py +2555 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_54.py +2642 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_55.py +2631 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_56.py +2615 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_57.py +2653 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_58.py +2657 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_59.py +2687 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_5a.py +2545 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_5b.py +2683 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_5c.py +2621 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_5d.py +2621 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_5e.py +2571 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_5f.py +2680 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_60.py +2633 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_61.py +2652 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_62.py +2680 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_63.py +2651 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_64.py +2635 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_65.py +2625 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_66.py +2588 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_67.py +2532 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_68.py +2702 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_69.py +2536 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_6a.py +2717 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_6b.py +2601 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_6c.py +2661 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_6d.py +2550 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_6e.py +2660 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_6f.py +2611 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_70.py +2673 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_71.py +2591 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_72.py +2661 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_73.py +2652 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_74.py +2689 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_75.py +2569 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_76.py +2561 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_77.py +2621 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_78.py +2691 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_79.py +2596 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_7a.py +2564 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_7b.py +2609 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_7c.py +2649 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_7d.py +2679 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_7e.py +2625 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_7f.py +2662 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_80.py +2682 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_81.py +2614 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_82.py +2573 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_83.py +2735 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_84.py +2638 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_85.py +2600 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_86.py +2602 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_87.py +2566 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_88.py +2616 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_89.py +2603 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_8a.py +2592 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_8b.py +2692 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_8c.py +2594 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_8d.py +2565 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_8e.py +2615 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_8f.py +2634 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_90.py +2622 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_91.py +2614 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_92.py +2596 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_93.py +2620 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_94.py +2591 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_95.py +2599 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_96.py +2538 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_97.py +2681 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_98.py +2655 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_99.py +2519 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_9a.py +2647 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_9b.py +2593 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_9c.py +2622 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_9d.py +2695 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_9e.py +2728 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_9f.py +2568 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a0.py +2758 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a1.py +2587 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a2.py +2549 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a3.py +2616 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a4.py +2552 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a5.py +2562 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a6.py +2676 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a7.py +2625 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a8.py +2636 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_a9.py +2555 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_aa.py +2614 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ab.py +2636 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ac.py +2530 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ad.py +2529 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ae.py +2549 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_af.py +2617 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b0.py +2625 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b1.py +2588 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b2.py +2655 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b3.py +2631 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b4.py +2690 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b5.py +2610 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b6.py +2677 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b7.py +2716 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b8.py +2668 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_b9.py +2600 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ba.py +2578 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_bb.py +2690 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_bc.py +2594 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_bd.py +2620 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_be.py +2684 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_bf.py +2657 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c0.py +2691 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c1.py +2694 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c2.py +2594 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c3.py +2600 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c4.py +2545 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c5.py +2610 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c6.py +2676 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c7.py +2664 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c8.py +2626 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_c9.py +2552 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ca.py +2497 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_cb.py +2692 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_cc.py +2649 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_cd.py +2496 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ce.py +2637 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_cf.py +2666 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d0.py +2592 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d1.py +2634 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d2.py +2628 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d3.py +2692 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d4.py +2608 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d5.py +2581 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d6.py +2618 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d7.py +2690 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d8.py +2600 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_d9.py +2623 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_da.py +2611 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_db.py +2675 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_dc.py +2557 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_dd.py +2565 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_de.py +2568 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_df.py +2726 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e0.py +2531 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e1.py +2505 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e2.py +2600 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e3.py +2546 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e4.py +2615 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e5.py +2609 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e6.py +2610 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e7.py +2689 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e8.py +2527 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_e9.py +2561 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ea.py +2599 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_eb.py +2685 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ec.py +2742 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ed.py +2683 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ee.py +2576 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ef.py +2644 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f0.py +2689 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f1.py +2646 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f2.py +2528 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f3.py +2665 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f4.py +2627 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f5.py +2682 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f6.py +2598 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f7.py +2664 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f8.py +2623 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_f9.py +2557 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_fa.py +2621 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_fb.py +2658 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_fc.py +2667 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_fd.py +2578 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_fe.py +2656 -0
- bnc_lookup-1.0.5/bnc_lookup/hs/h_ff.py +2782 -0
- bnc_lookup-1.0.5/pyproject.toml +76 -0
- bnc_lookup-1.0.5/setup.py +26 -0
bnc_lookup-1.0.5/LICENSE
ADDED
|
@@ -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
|
+
[](https://pypi.org/project/bnc-lookup/)
|
|
35
|
+
[](https://pypi.org/project/bnc-lookup/)
|
|
36
|
+
[](https://pypi.org/project/bnc-lookup/)
|
|
37
|
+
[](LICENSE)
|
|
38
|
+
[](https://github.com/astral-sh/ruff)
|
|
39
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
40
|
+
[](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
|
+
[](https://pypi.org/project/bnc-lookup/)
|
|
4
|
+
[](https://pypi.org/project/bnc-lookup/)
|
|
5
|
+
[](https://pypi.org/project/bnc-lookup/)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](https://github.com/astral-sh/ruff)
|
|
8
|
+
[](https://github.com/pre-commit/pre-commit)
|
|
9
|
+
[](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,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
|