{"id":25602795,"url":"https://github.com/anqorithm/isic4kit","last_synced_at":"2025-11-11T08:33:34.368Z","repository":{"id":278396277,"uuid":"935441415","full_name":"anqorithm/isic4kit","owner":"anqorithm","description":"A Python SDK Library for working with the International Standard Industrial Classification of All Economic Activities (ISIC), Revision 4.","archived":false,"fork":false,"pushed_at":"2025-02-19T15:25:52.000Z","size":58,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-19T15:30:03.149Z","etag":null,"topics":["business-classification","business-intelligence","data-analytics","data-science","economic-activities","economic-classification","economic-data","industrial-classification","industry-classification","isic","isic4","poetry","python","python3","sdk","standardization","statistical-analysis","statistical-classification","tree-structure","un-standards"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anqorithm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-19T13:00:18.000Z","updated_at":"2025-02-19T15:26:19.000Z","dependencies_parsed_at":"2025-02-19T15:30:27.081Z","dependency_job_id":"7508ad9f-e4a4-4395-9d4f-7e29f714fdac","html_url":"https://github.com/anqorithm/isic4kit","commit_stats":null,"previous_names":["anqorithm/isic4kit"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anqorithm%2Fisic4kit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anqorithm%2Fisic4kit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anqorithm%2Fisic4kit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anqorithm%2Fisic4kit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anqorithm","download_url":"https://codeload.github.com/anqorithm/isic4kit/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239888630,"owners_count":19713692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["business-classification","business-intelligence","data-analytics","data-science","economic-activities","economic-classification","economic-data","industrial-classification","industry-classification","isic","isic4","poetry","python","python3","sdk","standardization","statistical-analysis","statistical-classification","tree-structure","un-standards"],"created_at":"2025-02-21T17:24:03.590Z","updated_at":"2025-11-11T08:33:32.250Z","avatar_url":"https://github.com/anqorithm.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ISIC4Kit\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/anqorithm/isic4kit/raw/main/assets/logo.svg\" width=\"400\" alt=\"ISIC4Kit Logo\"\u003e\n\u003c/p\u003e\n\n[![Downloads](https://static.pepy.tech/badge/isic4kit)](https://pepy.tech/project/isic4kit)\n![License](https://img.shields.io/badge/License-MIT-yellow.svg)\n![Python](https://img.shields.io/badge/Python-≥3.8,\u003c4.0-blue.svg)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/isic4kit)\n[![PyPI version](https://img.shields.io/pypi/v/isic4kit)](https://pypi.org/project/isic4kit/)\n![Commits](https://img.shields.io/github/last-commit/anqorithm/isic4kit)\n![Contributors](https://img.shields.io/github/contributors/anqorithm/isic4kit)\n![Coverage](https://img.shields.io/badge/Coverage-64%25-yellow.svg)\n![Tests](https://img.shields.io/badge/Tests-36%20passed%2C%200%20failed-brightgreen.svg)\n![Pytest](https://img.shields.io/badge/Pytest-passing-brightgreen.svg)\n![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)\n![Documentation](https://img.shields.io/badge/docs-passing-brightgreen.svg)\n![GitHub issues](https://img.shields.io/github/issues/anqorithm/isic4kit)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/anqorithm/isic4kit)\n![GitHub stars](https://img.shields.io/github/stars/anqorithm/isic4kit)\n![GitHub forks](https://img.shields.io/github/forks/anqorithm/isic4kit)\n![Build Status](https://img.shields.io/badge/build-passing-brightgreen.svg)\n![Maintenance](https://img.shields.io/maintenance/yes/2024)\n![Code Size](https://img.shields.io/github/languages/code-size/anqorithm/isic4kit)\n![Repository Size](https://img.shields.io/github/repo-size/anqorithm/isic4kit)\n![Top Language](https://img.shields.io/github/languages/top/anqorithm/isic4kit)\n![Languages](https://img.shields.io/github/languages/count/anqorithm/isic4kit)\n![Open Issues](https://img.shields.io/github/issues-raw/anqorithm/isic4kit)\n![Closed Issues](https://img.shields.io/github/issues-closed-raw/anqorithm/isic4kit)\n![Open PRs](https://img.shields.io/github/issues-pr-raw/anqorithm/isic4kit)\n![Closed PRs](https://img.shields.io/github/issues-pr-closed-raw/anqorithm/isic4kit)\n![Discussions](https://img.shields.io/github/discussions/anqorithm/isic4kit)\n\nA Python SDK Library for working with the International Standard Industrial Classification of All Economic Activities (ISIC), Revision 4.\n\n## Features\n\n- Search and navigate through the ISIC hierarchical structure\n- Support for multiple languages (English, Arabic, and more coming soon)\n- Pydantic-based\n- Easy to use\n- Well-documented\n- Tested and maintained\n- Lightweight and fast\n\n\n\n## Data Structure\n\n### ISIC Hierarchy\n\nISIC follows a hierarchical structure:\n\n```mermaid\nflowchart TD\n    Section[Section] --\u003e Division[Division]\n    Division --\u003e Group[Group]\n    Group --\u003e Class[Class]\n    \n    Section --\u003e |contains| SectionDesc[Description]\n    Division --\u003e |contains| DivisionDesc[Description]\n    Group --\u003e |contains| GroupDesc[Description]\n    Class --\u003e |contains| ClassDesc[Description]\n```\n\nEach level contains:\n- **Section**: Highest level (A-U), e.g., \"A\" for Agriculture\n- **Division**: Two-digit code (01-99)\n- **Group**: Three-digit code (011-999)\n- **Class**: Four-digit code (0111-9999)\n\n### Data Format\n\nThe ISIC data is organized in a hierarchical structure:\n\n```python\nsections = [\n    {\n        \"section\": \"A\",\n        \"description\": \"Agriculture, forestry and fishing\",\n        \"divisions\": [\n            {\n                \"division\": \"01\",\n                \"description\": \"Crop and animal production\",\n                \"groups\": [\n                    {\n                        \"group\": \"011\",\n                        \"description\": \"Growing of non-perennial crops\",\n                        \"classes\": [\n                            {\n                                \"class\": \"0111\",\n                                \"description\": \"Growing of cereals\"\n                            },\n                            # ...\n                        ]\n                    },\n                    # ...\n                ]\n            },\n            # ...\n        ]\n    },\n    # ...\n]\n```\n\n## Demo\n\nThe following is a demo of the SDK library in action.\n\n[![asciicast](https://asciinema.org/a/EIWus3SvaHt71GnjSN0g4KH0u.svg)](https://asciinema.org/a/EIWus3SvaHt71GnjSN0g4KH0u)\n\n\n## Technical Diagrams\n\n### ISIC4 Hierarchy Structure\n```mermaid\nclassDiagram\n    ISICSection \"1\" --\u003e \"*\" ISICDivision : contains\n    ISICDivision \"1\" --\u003e \"*\" ISICGroup : contains\n    ISICGroup \"1\" --\u003e \"*\" ISICClass : contains\n\n    class ISICSection {\n        +str code\n        +str description\n        +List[ISICDivision] divisions\n        +print_tree()\n    }\n    \n    class ISICDivision {\n        +str code\n        +str description\n        +List[ISICGroup] groups\n        +print_tree()\n    }\n    \n    class ISICGroup {\n        +str code\n        +str description\n        +List[ISICClass] classes\n        +print_tree()\n    }\n    \n    class ISICClass {\n        +str code\n        +str description\n        +print_tree()\n    }\n```\n\n### ISIC4Kit Search Sequence\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant ISIC4Classifier\n    participant ISICSearchMixin\n    participant Models\n    participant Tree\n\n    User-\u003e\u003eISIC4Classifier: search(query)\n    activate ISIC4Classifier\n    \n    ISIC4Classifier-\u003e\u003eISICSearchMixin: search(query)\n    activate ISICSearchMixin\n    \n    ISICSearchMixin-\u003e\u003eISICSearchMixin: process query\n    ISICSearchMixin-\u003e\u003eModels: create ISICSearchResult\n    activate Models\n    Models--\u003e\u003eISICSearchMixin: return result\n    deactivate Models\n    \n    ISICSearchMixin-\u003e\u003eModels: create ISICSearchResults\n    activate Models\n    Models--\u003e\u003eISICSearchMixin: return results\n    deactivate Models\n    \n    ISICSearchMixin--\u003e\u003eISIC4Classifier: return results\n    deactivate ISICSearchMixin\n    \n    ISIC4Classifier-\u003e\u003eTree: print_tree()\n    activate Tree\n    Tree--\u003e\u003eISIC4Classifier: display hierarchy\n    deactivate Tree\n    \n    ISIC4Classifier--\u003e\u003eUser: return formatted results\n    deactivate ISIC4Classifier\n```\n\n\n### ISIC4Kit Component Architecture\n\n```mermaid\nflowchart TB\n    subgraph Main\n        ISIC4Classifier\n    end\n\n    subgraph Base Classes\n        BaseISIC4\n        ISICSearchMixin\n        ISICLoaderMixin\n    end\n\n    subgraph Models\n        ISICSection\n        ISICDivision\n        ISICGroup\n        ISICClass\n        ISICHierarchy\n        ISICSearchResult\n        ISICSearchResults\n    end\n\n    subgraph Utils\n        Tree\n    end\n\n    ISIC4Classifier --\u003e BaseISIC4\n    ISIC4Classifier --\u003e ISICSearchMixin\n    ISIC4Classifier --\u003e ISICLoaderMixin\n    \n    BaseISIC4 --\u003e ISICSection\n    BaseISIC4 --\u003e ISICDivision\n    BaseISIC4 --\u003e ISICGroup\n    BaseISIC4 --\u003e ISICClass\n    \n    ISICSearchMixin --\u003e ISICSearchResult\n    ISICSearchMixin --\u003e ISICSearchResults\n    ISICSearchMixin --\u003e ISICHierarchy\n    \n    ISICSection --\u003e Tree\n    ISICDivision --\u003e Tree\n    ISICGroup --\u003e Tree\n    ISICClass --\u003e Tree\n```\n\n## Installation\n\n### Poetry (recommended)\n```bash\npoetry add isic4kit\n```\n\n### pip\n```bash\npip install isic4kit\n```\n\n## Dependencies\n\n- Python \u003e=3.8, \u003c4.0\n- pydantic ^2.10.6\n- pytest ^8.3.4\n\n## Usage\n\n### Basic Usage\n\n```python\nfrom isic4kit import ISIC4Classifier\n\n# Initialize classifier (English)\nisic_en = ISIC4Classifier(language=\"en\")\n\n# Example 1: Get section (Agriculture)\nsection = isic_en.get_section(\"a\")\nsection.print_tree()\n\n# Example 2: Get division (Crop and animal production)\ndivision = isic_en.get_division(\"01\")\ndivision.print_tree()\n\n# Example 3: Get group (Growing of non-perennial crops)\ngroup = isic_en.get_group(\"011\")\ngroup.print_tree()\n\n# Example 4: Get class (Growing of cereals)\nclass_ = isic_en.get_class(\"0111\")\nclass_.print_tree()\n```\n\n### Search Functionality\n\n```python\n# Search for activities containing \"mining\"\nresults = isic_en.search(\"mining\")\nresults.print_tree()\n```\n\n[![asciicast](https://asciinema.org/a/C0BHgHsunbUVblrbbXXPHHw9O.svg)](https://asciinema.org/a/C0BHgHsunbUVblrbbXXPHHw9O)\n\n### Multi-language Support\n\nThe classifier supports multiple languages. Here's an example in Arabic:\n\n```python\n# Initialize with Arabic language\nisic_ar = ISIC4Classifier(language=\"ar\")\n\n# Example 1: Get section (الزراعة)\nsection_ar = isic_ar.get_section(\"a\")\nsection_ar.print_tree()\n\n# Example 2: Get division (زراعة المحاصيل والإنتاج الحيواني)\ndivision_ar = isic_ar.get_division(\"01\")\ndivision_ar.print_tree()\n\n# Example 3: Get group (زراعة المحاصيل غير الدائمة)\ngroup_ar = isic_ar.get_group(\"011\")\ngroup_ar.print_tree()\n\n# Example 4: Get class (زراعة الحبوب)\nclass_ar = isic_ar.get_class(\"0111\")\nclass_ar.print_tree()\n\n# Example 5: Search in Arabic\nsearch_ar = isic_ar.search(\"تعدين\")\nsearch_ar.print_tree()\n```\n\n## Examples\n\n### English Examples\n\n```python\nfrom isic4kit import ISIC4Classifier\n\n# Initialize English classifier\nisic_en = ISIC4Classifier(language=\"en\")\n\n# Example 1: Get section (Agriculture)\nsection_en = isic_en.get_section(\"a\")\nsection_en.print_tree()\n```\n\nOutput:\n```\n└── a: Agriculture, forestry and fishing\n    ├── 01: Crop and animal production, hunting and related service activities\n    │   ├── 011: Growing of non-perennial crops\n    │   │   ├── 0111: Growing of cereals (except rice), leguminous crops and oil seeds\n    │   │   ├── 0112: Growing of rice\n    │   │   ├── 0113: Growing of vegetables and melons, roots and tubers\n    │   │   ├── 0114: Growing of sugar cane\n    │   │   ├── 0115: Growing of tobacco\n    │   │   ├── 0116: Growing of fibre crops\n    │   │   └── 0119: Growing of other non-perennial crops\n    │   └── ...\n    ├── 02: Forestry and logging\n    └── 03: Fishing and aquaculture\n```\n\n```python\n# Example 2: Get division (Crop and animal production)\ndivision_en = isic_en.get_division(\"01\")\ndivision_en.print_tree()\n```\n\nOutput:\n```\n└── 01: Crop and animal production, hunting and related service activities\n    ├── 011: Growing of non-perennial crops\n    │   ├── 0111: Growing of cereals (except rice), leguminous crops and oil seeds\n    │   ├── 0112: Growing of rice\n    │   ├── 0113: Growing of vegetables and melons, roots and tubers\n    │   ├── 0114: Growing of sugar cane\n    │   ├── 0115: Growing of tobacco\n    │   ├── 0116: Growing of fibre crops\n    │   └── 0119: Growing of other non-perennial crops\n    └── ...\n```\n\n```python\n# Example 3: Get group (Growing of non-perennial crops)\ngroup_en = isic_en.get_group(\"011\")\ngroup_en.print_tree()\n```\n\nOutput:\n```\n└── 011: Growing of non-perennial crops\n    ├── 0111: Growing of cereals (except rice), leguminous crops and oil seeds\n    ├── 0112: Growing of rice\n    ├── 0113: Growing of vegetables and melons, roots and tubers\n    ├── 0114: Growing of sugar cane\n    ├── 0115: Growing of tobacco\n    ├── 0116: Growing of fibre crops\n    └── 0119: Growing of other non-perennial crops\n```\n\n```python\n# Example 4: Get class (Growing of cereals)\nclass_en = isic_en.get_class(\"0111\")\nclass_en.print_tree()\n```\n\nOutput:\n```\n└── 0111: Growing of cereals (except rice), leguminous crops and oil seeds\n```\n\n```python\n# Example 5: Search in English\nsearch_en = isic_en.search(\"mining\")\nsearch_en.print_tree()\n```\n\nOutput:\n```\n├── 05: Mining of coal and lignite\n│   ├── 051: Mining of hard coal\n│   │   ├── 0510: Mining of hard coal (anthracite)\n│   ├── 052: Mining of lignite\n│   │   ├── 0520: Mining of lignite\n├── 07: Mining of metal ores\n│   ├── 071: Mining of iron ores\n│   │   ├── 0710: Mining of iron ores\n│   ├── 072: Mining of non-ferrous metal ores\n│   │   ├── 0721: Mining of uranium and thorium ores\n│   │   ├── 0729: Mining of other non-ferrous metal ores\n├── 08: Other mining and quarrying\n│   ├── 089: Mining and quarrying n.e.c.\n│   │   ├── 0891: Mining of chemical and fertilizer minerals\n│   │   ├── 0899: Other mining and quarrying n.e.c.\n├── 09: Mining support service activities\n│   ├── 099: Support activities for other mining and quarrying\n│   │   ├── 0990: Support activities for other mining and quarrying\n│   │   ├── 2824: Manufacture of machinery for mining, quarrying and construction\n```\n\n### Arabic Examples\n\n```python\n# Initialize Arabic classifier\nisic_ar = ISIC4Classifier(language=\"ar\")\n\n# Example 1: Get section (الزراعة)\nsection_ar = isic_ar.get_section(\"a\")\nsection_ar.print_tree()\n```\n\nOutput:\n```\n└── a: الزراعة والحراجة وصيد الأسماك\n    ├── 01: أنشطة زراعة المحاصيل والإنتاج الحيواني والصيد والخدمات المتصلة\n    │   ├── 011: زراعة المحاصيل غير الدائمة\n    │   │   ├── 0111: زراعة الحبوب باستثناء الأرز( والمحاصيل البقولية والبذور الزيتية)\n    │   │   └── ...\n    └── ...\n```\n\n```python\n# Example 5: Search in Arabic\nsearch_ar = isic_ar.search(\"تعدين\")\nsearch_ar.print_tree()\n```\n\n[![asciicast](https://asciinema.org/a/ciiUfT41khDLbqZr7aDhVfNCQ.svg)](https://asciinema.org/a/ciiUfT41khDLbqZr7aDhVfNCQ)\n\nOutput:\n```\n├── 05: تعدين الفحم والليغنيت\n│   ├── 051: تعدين الفحم القاسي (الأنفراثيت)\n│   │   ├── 0510: تعدين الفحم القاسي (الأنفراثيت)\n│   ├── 052: تعدين الليغنيت\n│   │   ├── 0520: تعدين الليغنيت\n├── 07: تعدين ركازات الفلزات\n│   ├── 071: تعدين ركازات الحديد\n│   │   ├── 0710: تعدين ركازات الحديد\n│   └── ...\n└── ...\n```\n\n## Supported Languages\n\n- English (en)\n- Arabic (ar)\n- More languages coming soon...\n\n## Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/anqorithm/isic4kit.git\ncd isic4kit\n\n# Install poetry (if not already installed)\ncurl -sSL https://install.python-poetry.org | python3 -\n\n# Install dependencies\npoetry install\n\n# Activate virtual environment\npoetry shell\n```\n\n## Testing\n\nRun the test suite using pytest:\n\n```bash\n# Run all tests\npoetry run pytest\n\n```\n![Coverage](https://github.com/anqorithm/isic4kit/raw/main/assets/3.png)\n\n\n## Coverage\n\nThe test suite includes unit tests for all classes and methods. The coverage report can be generated using the following command:\n\n```bash\npoetry run pytest --cov=isic4kit tests/\n```\n\n![Coverage](https://github.com/anqorithm/isic4kit/raw/main/assets/1.png)\n\n![Coverage](https://github.com/anqorithm/isic4kit/raw/main/assets/2.png)\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n## Contributors\n\n- [Abdullah Alqahtani](https://github.com/anqorithm)\n\n## References\n\n1. United Nations Statistics Division. (2008). International Standard Industrial Classification of All Economic Activities (ISIC), Revision 4. [English Version](https://unstats.un.org/unsd/classifications/Econ/Download/In%20Text/ISIC_Rev_4_publication_English.pdf)\n\n2. United Nations Statistics Division. (2008). التصنيف الصناعي الدولي الموحد لجميع الأنشطة الاقتصادية، التنقيح 4. [Arabic Version](https://unstats.un.org/unsd/classifications/Econ/Download/In%20Text/ISIC_Rev_4_publication_Arabic.pdf)\n\n3. Ministry of Commerce - Saudi Arabia. (2023). ISIC4 Guide. [Source](https://mc.gov.sa/ar/guides/ISIC4/Pages/default.aspx)\n\n4. Saudi Food and Drug Authority. (2023). Economic Activities Classification. [Source](https://www.sfda.gov.sa/en/economic-activities)\n\n5. General Authority for Statistics - Saudi Arabia. (2023). ISIC4 Classification. [Source](https://www.stats.gov.sa/en/isic4)\n\n## License\n\n[MIT License](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanqorithm%2Fisic4kit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanqorithm%2Fisic4kit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanqorithm%2Fisic4kit/lists"}