{"id":19526794,"url":"https://github.com/deepcloudlabs/dcl162-2024-jul-16","last_synced_at":"2026-06-11T13:31:02.402Z","repository":{"id":248640342,"uuid":"829277852","full_name":"deepcloudlabs/dcl162-2024-jul-16","owner":"deepcloudlabs","description":"DCL-162: Advanced Python Programming","archived":false,"fork":false,"pushed_at":"2024-07-19T06:47:51.000Z","size":613,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T02:25:43.972Z","etag":null,"topics":["asynchronous-programming","dom-parser","flask-restful","flask-socketio","functional-programming-in-python","oop-in-python","python-kafka","python-rabbitmq","sax-parser","thread-programming"],"latest_commit_sha":null,"homepage":"https://www.deepcloudlabs.com","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/deepcloudlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-07-16T05:51:10.000Z","updated_at":"2024-07-19T06:47:53.000Z","dependencies_parsed_at":"2024-11-11T01:12:12.464Z","dependency_job_id":null,"html_url":"https://github.com/deepcloudlabs/dcl162-2024-jul-16","commit_stats":null,"previous_names":["deepcloudlabs/dcl162-2024-jul-16"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/deepcloudlabs/dcl162-2024-jul-16","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepcloudlabs%2Fdcl162-2024-jul-16","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepcloudlabs%2Fdcl162-2024-jul-16/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepcloudlabs%2Fdcl162-2024-jul-16/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepcloudlabs%2Fdcl162-2024-jul-16/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deepcloudlabs","download_url":"https://codeload.github.com/deepcloudlabs/dcl162-2024-jul-16/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepcloudlabs%2Fdcl162-2024-jul-16/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34201839,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["asynchronous-programming","dom-parser","flask-restful","flask-socketio","functional-programming-in-python","oop-in-python","python-kafka","python-rabbitmq","sax-parser","thread-programming"],"created_at":"2024-11-11T01:12:09.520Z","updated_at":"2026-06-11T13:31:02.383Z","avatar_url":"https://github.com/deepcloudlabs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DCL-162: Advanced Python Programming\n\nThese projects are created as part of the following training: DCL-162 \"Advanced Python Programming\"\n\nPlease follow the link for the complete training catalog: https://www.deepcloudlabs.com/resources\n\n# Modules and Packages\n\nPython'da bir paket oluşturmak için bir dizin yaratmanız yeterli olacaktır:\n\n![Installation folder](module10-figure01.png?raw=true \"package directory content\")\n\nBu dizin yapısı içinde **`__init__.py`** dosyası modül yüklenirken bir kere çalıştırılır ve modülle ilgili başlangıç işlemleri gerçekleştirilir:\n\n```python\nprint(\"deepcloudlabs module is loaded!\")\n# all initialization code goes here\n\nfrom deepcloudlabs.dictionary import lines\n\nwith open(\"deepcloudlabs/dictionary-tur.txt\", \"r\") as the_file:\n    for line in the_file.readlines():\n        lines.append(line.strip())\n```\n\nBöylelikle modül içindeki **dictionary.py** dosyası içinde tekrar tekrar dosyanın yüklenmesine gerek olmaz:\n\n\n```python\nlines = []\n\ndef get_word(index):\n    return lines[index]\n```\n\nBurada **lines** listesi her zaman modül yüklenirken sözlük dosyası okunarak doldurulur. Modülün kullanımına ilişkin aşağıdaki örneklere göz atalım:\n\n```python\nfrom deepcloudlabs.utils import lost_numbers as nums, is_even as cift_mi\n\nprint(nums)\nprint(cift_mi(42))\n\nimport deepcloudlabs.hr\n\nprint(dir(deepcloudlabs))\nexample = {\n    \"identity\": \"9876543210\",\n    \"fullname\": \"kate austen\"\n}\njack = deepcloudlabs.hr.Employee(\"12345678910\", \"jack bauer\")\n\nkate = deepcloudlabs.hr.Employee(**example)\n\nprint(jack.identity, jack.fullname)\nprint(kate.identity, kate.fullname)\n\nfrom deepcloudlabs.dictionary import get_word\n\nprint(get_word(42))\n```\n\n**deepcloudlabs** altındaki **utils.py** paketini yüklemek için aşağıdaki python satırını yazmanız yeterli olacaktır:\n\n```python\nfrom deepcloudlabs.utils import lost_numbers as nums, is_even as cift_mi\n```\n\n**deepcloudlabs** altındaki **hr.py** paketini yüklemek için aşağıdaki python satırını yazmanız yeterli olacaktır:\n\n```python\nimport deepcloudlabs.hr\n```\n\nBu şekilde **Employee** sınıfından nesne yaratabilirsiniz:\n\n```python\nexample = {\n    \"identity\": \"9876543210\",\n    \"fullname\": \"kate austen\"\n}\njack = deepcloudlabs.hr.Employee(\"12345678910\", \"jack bauer\")\n\nkate = deepcloudlabs.hr.Employee(**example)\n\nprint(jack.identity, jack.fullname)\nprint(kate.identity, kate.fullname)\n```\nSözlükteki 42. sıradaki kelimeye erişmek için ise aşağıdaki kodu yazıyoruz:\n\n```python\nfrom deepcloudlabs.dictionary import get_word\n\nprint(get_word(42))\n```\n\n# Python'da PIP Paketi Oluşturmak\n\nPython'da **pip paketi** oluşturmak için aşağıdaki adımları izleyebilirsiniz:\n\n![paket dizin yapısı](pip-module-fig01.png?raw=true \"package directory content\")\n\n![paket dizin yapısı](pip-module-fig03.png?raw=true \"package directory content\")\n\n![paket dizin yapısı](pip-module-fig02.png?raw=true \"package directory content\")\n\n**setup.py** dosyası içinde dağıtım dosyalarını oluşturacak Python betiği yer alıyor:\n\n```python\nimport setuptools\n\nwith open(\"README.md\", \"r\") as fh:\n    long_description = fh.read()\n\n\nsetuptools.setup(\n     name='dcllottery',  \n     version='0.1',\n     scripts=['dcl-lottery'] ,\n     author=\"Binnur Kurt\",\n     author_email=\"info@deepcloudlabs.com\",\n     description=\"Lottery utility package\",\n     long_description=long_description,\n     long_description_content_type=\"text/markdown\",\n     url=\"https://github.com/deepcloudlabs/lottery\",\n     packages=setuptools.find_packages(where=\"src\"),\n     classifiers=[\n         \"Programming Language :: Python :: 3\",\n         \"License :: OSI Approved :: MIT License\",\n         \"Operating System :: OS Independent\",\n     ],\n    package_dir={\"\": \"src\"},\n    python_requires=\"\u003e=3.6\",\n )\n ```\n**setup.py** betiğini çalıştırabilmek için iki paketin kurulu olması gerekiyor: **setuptools** ve **wheel**. Eğer kurulu değil iseler aşağıdaki verildiği şekilde bu iki paketi kurabilirsiniz:\n\n```bash\n$ pip install setuptools wheel\nCollecting setuptools\n  Using cached setuptools-57.4.0-py3-none-any.whl (819 kB)\nCollecting wheel\n  Using cached wheel-0.36.2-py2.py3-none-any.whl (35 kB)\nInstalling collected packages: wheel, setuptools\nSuccessfully installed setuptools-57.4.0 wheel-0.36.2\n```\n\n**setup.py** dosyasını çalıştırarak dağıtım dosylarını oluşturabilirsiniz:\n\n```bash \n$ python setup.py bdist_wheel\nrunning bdist_wheel\nrunning build\nrunning build_py\ncreating build\ncreating build\\lib\ncreating build\\lib\\dcllottery\ncopying src\\dcllottery\\utils.py -\u003e build\\lib\\dcllottery\ncopying src\\dcllottery\\__init__.py -\u003e build\\lib\\dcllottery\nrunning build_scripts\ncreating build\\scripts-3.9\ncopying dcl-lottery -\u003e build\\scripts-3.9\ninstalling to build\\bdist.win-amd64\\wheel\nrunning install\nrunning install_lib\ncreating build\\bdist.win-amd64\ncreating build\\bdist.win-amd64\\wheel\ncreating build\\bdist.win-amd64\\wheel\\dcllottery\ncopying build\\lib\\dcllottery\\utils.py -\u003e build\\bdist.win-amd64\\wheel\\.\\dcllottery\ncopying build\\lib\\dcllottery\\__init__.py -\u003e build\\bdist.win-amd64\\wheel\\.\\dcllottery\nrunning install_egg_info\nrunning egg_info\ncreating src\\dcllottery.egg-info\nwriting src\\dcllottery.egg-info\\PKG-INFO\nwriting dependency_links to src\\dcllottery.egg-info\\dependency_links.txt\nwriting top-level names to src\\dcllottery.egg-info\\top_level.txt\nwriting manifest file 'src\\dcllottery.egg-info\\SOURCES.txt'\nreading manifest file 'src\\dcllottery.egg-info\\SOURCES.txt'\nadding license file 'LICENSE'\nwriting manifest file 'src\\dcllottery.egg-info\\SOURCES.txt'\nCopying src\\dcllottery.egg-info to build\\bdist.win-amd64\\wheel\\.\\dcllottery-0.1-py3.9.egg-info\nrunning install_scripts\ncreating build\\bdist.win-amd64\\wheel\\dcllottery-0.1.data\ncreating build\\bdist.win-amd64\\wheel\\dcllottery-0.1.data\\scripts\ncopying build\\scripts-3.9\\dcl-lottery -\u003e build\\bdist.win-amd64\\wheel\\dcllottery-0.1.data\\scripts\nadding license file \"LICENSE\" (matched pattern \"LICEN[CS]E*\")\ncreating build\\bdist.win-amd64\\wheel\\dcllottery-0.1.dist-info\\WHEEL\ncreating 'dist\\dcllottery-0.1-py3-none-any.whl' and adding 'build\\bdist.win-amd64\\wheel' to it\nadding 'dcllottery/__init__.py'\nadding 'dcllottery/utils.py'\nadding 'dcllottery-0.1.data/scripts/dcl-lottery'\nadding 'dcllottery-0.1.dist-info/LICENSE'\nadding 'dcllottery-0.1.dist-info/METADATA'\nadding 'dcllottery-0.1.dist-info/WHEEL'\nadding 'dcllottery-0.1.dist-info/top_level.txt'\nadding 'dcllottery-0.1.dist-info/RECORD'\nremoving build\\bdist.win-amd64\\wheel\n```\n\nArtık dağıtım dosyalarını https://pypi.org sitesine taşıyabiliriz:\n\n```bash \n$ python -m twine upload  dist/*\nUploading distributions to https://upload.pypi.org/legacy/\nEnter your password: *your password*\nUploading dcllottery-0.1-py3-none-any.whl\n100%|████████████████████████████████████████████████████████████████████| 6.06k/6.06k [00:02\u003c00:00, 2.25kB/s]\n\nView at:\nhttps://pypi.org/project/dcllottery/0.1/\n```\n\nArtık herhangi bir proje içinden bu pakete ulaşabilirsiniz:\n\n```bash\n$ pip install dcllottery\nCollecting dcllottery\n  Using cached dcllottery-0.1-py3-none-any.whl (3.0 kB)\nInstalling collected packages: dcllottery\nSuccessfully installed dcllottery-0.1\n```\n\nÖrnek bir kullanım için aşağıdaki kodu kullanabilirsiniz:\n\n```python\nimport dcllottery.utils as dcl\n\nnumbers = dcl.get_lottery_numbers(1,60,6)\nprint(numbers)\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeepcloudlabs%2Fdcl162-2024-jul-16","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeepcloudlabs%2Fdcl162-2024-jul-16","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeepcloudlabs%2Fdcl162-2024-jul-16/lists"}