{"id":13627627,"url":"https://github.com/pdpipe/pdpipe","last_synced_at":"2026-03-06T22:06:37.267Z","repository":{"id":38375183,"uuid":"79951853","full_name":"pdpipe/pdpipe","owner":"pdpipe","description":"Easy pipelines for pandas DataFrames.","archived":false,"fork":false,"pushed_at":"2026-01-05T19:44:42.000Z","size":2842,"stargazers_count":724,"open_issues_count":22,"forks_count":46,"subscribers_count":12,"default_branch":"master","last_synced_at":"2026-01-18T14:12:15.310Z","etag":null,"topics":["data","data-science","dataframe","dataframes","pandas","pandas-dataframe","pipeline"],"latest_commit_sha":null,"homepage":"https://pdpipe.readthedocs.io/en/latest/","language":"Jupyter Notebook","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/pdpipe.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-01-24T20:37:22.000Z","updated_at":"2026-01-11T12:21:57.000Z","dependencies_parsed_at":"2026-01-01T20:00:35.605Z","dependency_job_id":null,"html_url":"https://github.com/pdpipe/pdpipe","commit_stats":{"total_commits":406,"total_committers":12,"mean_commits":"33.833333333333336","dds":"0.48275862068965514","last_synced_commit":"62b04f0dd82157b7ed2b4d72d59e98ced41c66ce"},"previous_names":["shaypal5/pdpipe"],"tags_count":94,"template":false,"template_full_name":null,"purl":"pkg:github/pdpipe/pdpipe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdpipe%2Fpdpipe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdpipe%2Fpdpipe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdpipe%2Fpdpipe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdpipe%2Fpdpipe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pdpipe","download_url":"https://codeload.github.com/pdpipe/pdpipe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pdpipe%2Fpdpipe/sbom","scorecard":{"id":725580,"data":{"date":"2025-08-11","repo":{"name":"github.com/pdpipe/pdpipe","commit":"337d26117bb15cea6814a6030520d47e6af33a28"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.9,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":1,"reason":"Found 2/15 approved changesets -- score normalized to 1","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"14 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/claude-code-review.yml:23","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/claude-code-review.yml:24","Info: jobLevel 'issues' permission set to 'read': .github/workflows/claude-code-review.yml:25","Info: jobLevel 'contents' permission set to 'read': .github/workflows/claude.yml:22","Info: jobLevel 'pull-requests' permission set to 'read': .github/workflows/claude.yml:23","Info: jobLevel 'issues' permission set to 'read': .github/workflows/claude.yml:24","Info: jobLevel 'actions' permission set to 'read': .github/workflows/claude.yml:26","Info: jobLevel 'contents' permission set to 'read': .github/workflows/release.yml:84","Warn: no topLevel permission defined: .github/workflows/black.yml:1","Warn: no topLevel permission defined: .github/workflows/claude-code-review.yml:1","Warn: no topLevel permission defined: .github/workflows/claude.yml:1","Warn: no topLevel permission defined: .github/workflows/lint.yml:1","Warn: no topLevel permission defined: .github/workflows/npdocval.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/black.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/black.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/black.yml:10: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/black.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/claude-code-review.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/claude-code-review.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/claude-code-review.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/claude-code-review.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/claude.yml:29: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/claude.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/claude.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/claude.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/lint.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/lint.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/lint.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/lint.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npdocval.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/npdocval.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/npdocval.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/npdocval.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:46: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:89: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:95: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:31: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/test.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:68: update your workflow using https://app.stepsecurity.io/secureworkflow/pdpipe/pdpipe/test.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/lint.yml:30","Warn: pipCommand not pinned by hash: .github/workflows/npdocval.yml:33","Warn: pipCommand not pinned by hash: .github/workflows/npdocval.yml:34","Warn: pipCommand not pinned by hash: .github/workflows/npdocval.yml:35","Warn: pipCommand not pinned by hash: .github/workflows/npdocval.yml:36","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:31","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:69","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:70","Warn: pipCommand not pinned by hash: .github/workflows/release.yml:74","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:37","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:38","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:39","Warn: pipCommand not pinned by hash: .github/workflows/test.yml:40","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   7 third-party GitHubAction dependencies pinned","Info:   0 out of  13 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.0.1 not signed: https://api.github.com/repos/pdpipe/pdpipe/releases/229112906","Warn: release artifact v1.0.0 not signed: https://api.github.com/repos/pdpipe/pdpipe/releases/228597694","Warn: release artifact v1.0.1 does not have provenance: https://api.github.com/repos/pdpipe/pdpipe/releases/229112906","Warn: release artifact v1.0.0 does not have provenance: https://api.github.com/repos/pdpipe/pdpipe/releases/228597694"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/release.yml:77"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Vulnerabilities","score":0,"reason":"14 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2024-4 / GHSA-2mqj-m65w-jghx","Warn: Project is vulnerable to: PYSEC-2023-165 / GHSA-cwvm-v4w8-q58c","Warn: Project is vulnerable to: PYSEC-2022-42992 / GHSA-hcpj-qp55-gfph","Warn: Project is vulnerable to: PYSEC-2023-137 / GHSA-pr76-5cm5-w9cj","Warn: Project is vulnerable to: PYSEC-2023-161 / GHSA-wfm5-v35h-vwf4","Warn: Project is vulnerable to: PYSEC-2021-356 / GHSA-2ww3-fxvq-293j","Warn: Project is vulnerable to: PYSEC-2024-167 / GHSA-cgvx-9447-vcch","Warn: Project is vulnerable to: PYSEC-2021-859 / GHSA-f8m6-h2c7-8h9x","Warn: Project is vulnerable to: PYSEC-2019-106 / GHSA-mr7p-25v2-35wr","Warn: Project is vulnerable to: PYSEC-2022-5 / GHSA-rqjh-jp2r-59cj","Warn: Project is vulnerable to: PYSEC-2020-107 / GHSA-jjw5-xxj6-pcv5","Warn: Project is vulnerable to: PYSEC-2024-110 / GHSA-jw8x-6495-233v","Warn: Project is vulnerable to: PYSEC-2020-108","Warn: Project is vulnerable to: PYSEC-2023-117 / GHSA-mrwq-x4v8-fh7p"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 25 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-22T12:42:05.800Z","repository_id":38375183,"created_at":"2025-08-22T12:42:05.800Z","updated_at":"2025-08-22T12:42:05.800Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28974246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T08:16:14.655Z","status":"ssl_error","status_checked_at":"2026-02-01T08:06:51.373Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["data","data-science","dataframe","dataframes","pandas","pandas-dataframe","pipeline"],"created_at":"2024-08-01T22:00:36.429Z","updated_at":"2026-02-01T09:01:02.493Z","avatar_url":"https://github.com/pdpipe.png","language":"Jupyter Notebook","readme":"pdpipe ˨\n########\n\n|PyPI-Status| |Downloads| |PyPI-Versions| |Build-Status| |Codecov| |Codefactor| |CodeStyle| |LICENCE|\n\n\nWebsite: `https://pdpipe.readthedocs.io/en/latest/ \u003chttps://pdpipe.readthedocs.io/en/latest/\u003e`_\n\nEasy pipelines for pandas DataFrames (`learn how! \u003chttps://tirthajyoti.github.io/Notebooks/Pandas-pipeline-with-pdpipe\u003e`_).\n\n.. code-block:: python\n\n  \u003e\u003e\u003e df = pd.DataFrame(\n          data=[[4, 165, 'USA'], [2, 180, 'UK'], [2, 170, 'Greece']],\n          index=['Dana', 'Jane', 'Nick'],\n          columns=['Medals', 'Height', 'Born']\n      )\n  \u003e\u003e\u003e import pdpipe as pdp\n  \u003e\u003e\u003e pipeline = pdp.ColDrop('Medals').OneHotEncode('Born')\n  \u003e\u003e\u003e pipeline(df)\n              Height  Born_UK  Born_USA\n      Dana     165        0         1\n      Jane     180        1         0\n      Nick     170        0         0\n\n.. .. alternative symbols: ˨ ᛪ ᛢ ᚶ ᚺ ↬ ⑀ ⤃ ⤳ ⥤ 』\n\n.. contents::\n\n.. section-numbering::\n\n📚 Documentation\n================\n\nThis is the repository of the ``pdpipe`` package, and this readme file is aimed to help potential contributors to the project.\n\nTo learn more about how to use ``pdpipe``, either `visit pdpipe's homepage \u003chttps://pdpipe.readthedocs.io/en/latest/\u003e`_ or read the `getting started section \u003chttps://pdpipe.readthedocs.io/en/latest/starting/install/\u003e`_.\n\n\n🔩 Installation\n===============\n\nInstall ``pdpipe`` with:\n\n.. code-block:: bash\n\n  pip install pdpipe\n\nSome pipeline stages require ``scikit-learn``; they will simply not be loaded if ``scikit-learn`` is not found on the system, and ``pdpipe`` will issue a warning. To use them you must also `install scikit-learn \u003chttp://scikit-learn.org/stable/install.html\u003e`_.\n\n\nSimilarly, some pipeline stages require ``nltk``; they will simply not be loaded if ``nltk`` is not found on your system, and ``pdpipe`` will issue a warning. To use them you must additionally `install nltk \u003chttp://www.nltk.org/install.html\u003e`_.\n\n\n\n🎁 Contributing\n===============\n\nPackage author and current maintainer is `Shay Palachy \u003chttp://www.shaypalachy.com/\u003e`_ (shay.palachy@gmail.com); You are more than welcome to approach him for help. Contributions are very welcomed, especially since this package is very much in its infancy and many other pipeline stages can be added.\n\n🪛 Installing for development\n-----------------------------\n\nClone:\n\n.. code-block:: bash\n\n  git clone git@github.com:pdpipe/pdpipe.git\n\n\nInstall in development mode with test dependencies:\n\n.. code-block:: bash\n\n  cd pdpipe\n  pip install -e \".[test]\"\n\n\n⚗️ Running the tests\n--------------------\n\nTo run the tests, use:\n\n.. code-block:: bash\n\n  python -m pytest\n\n\nNotice ``pytest`` runs are configured by the ``pytest.ini`` file. Read it to understand the exact ``pytest`` arguments used.\n\n\n🔬 Adding tests\n---------------\n\nAt the time of writing, ``pdpipe`` is maintained with a test coverage of 100%. Although challenging, I hope to maintain this status. If you add code to the package, please make sure you thoroughly test it. Codecov automatically reports changes in coverage on each PR, and so PR reducing test coverage will not be examined before that is fixed.\n\nTests reside under the ``tests`` directory in the root of the repository. Each module has a separate test folder, with each class - usually a pipeline stage - having a dedicated file (always starting with the string \"test\") containing several tests (each a global function starting with the string \"test\"). Please adhere to this structure, and try to separate tests cases to different test functions; this allows us to quickly focus on problem areas and use cases. Thank you! :)\n\n\n⚙️ Configuration\n----------------\n\n``pdpipe`` can be configured using both a configuration file - locaated at either ``$XDG_CONFIG_HOME/pdpipe/cfg.json`` or, if the ``XDG_CONFIG_HOME`` environment variable is not set, at ``~/.pdpipe/cfg.json`` - and environment variables.\n\nAt the moment, these configuration options are only relevant for development. The available options are:\n\n* ``LOAD_STAGE_ATTRIBUTES`` - True by default. If set to False stage attributes, which enable the chainer construction pattern, e.g. ``pdp.ColDrop('b').Bin('f')``, are not loaded. This is used for sensible documentation generation. Set with this ``\"LOAD_STAGE_ATTRIBUTES\": false`` in ``cfg.json``, or with ``export PDPIPE__LOAD_STAGE_ATTRIBUTES=False`` for environment variable-driven configuration.\n\n\n✒️ Code style\n-------------\n\n``pdpip`` code is written to adhere to the coding style dictated by `flake8 \u003chttp://flake8.pycqa.org/en/latest/\u003e`_. Practically, this means that one of the jobs that runs on `the project's Travis \u003chttps://travis-ci.org/pdpipe/pdpipe\u003e`_ for each commit and pull request checks for a successfull run of the ``flake8`` CLI command in the repository's root. Which means pull requests will be flagged red by the Travis bot if non-flake8-compliant code was added.\n\nTo solve this, please run ``flake8`` on your code (whether through your text editor/IDE or using the command line) and fix all resulting errors. Thank you! :)\n\n\n📓 Adding documentation\n-----------------------\n\nThis project is documented using the `numpy docstring conventions`_, which were chosen as they are perhaps the most widely-spread conventions that are both supported by common tools such as Sphinx and result in human-readable docstrings (in my personal opinion, of course). When documenting code you add to this project, please follow `these conventions`_.\n\n.. _`numpy docstring conventions`: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard\n.. _`these conventions`: https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard\n\nAdditionally, if you update this ``README.rst`` file,  use ``python setup.py checkdocs`` to validate it compiles.\n\n\n📋 Adding doctests\n------------------\n\nDoctests can be added in the traditional manner:\n\n.. code-block:: python\n\n\n    class ApplyByCols(PdPipelineStage):\n        \"\"\"A pipeline stage applying an element-wise function to columns.\n\n        Parameters\n        ----------\n        columns : str or list-like\n            Names of columns on which to apply the given function.\n        func : function\n            The function to be applied to each element of the given columns.\n        result_columns : str or list-like, default None\n            The names of the new columns resulting from the mapping operation. Must\n            be of the same length as columns. If None, behavior depends on the\n            drop parameter: If drop is True, the name of the source column is used;\n            otherwise, the name of the source column is used with the suffix\n            '_app'.\n        drop : bool, default True\n            If set to True, source columns are dropped after being mapped.\n        func_desc : str, default None\n            A function description of the given function; e.g. 'normalizing revenue\n            by company size'. A default description is used if None is given.\n\n\n        Example\n        -------\n        \u003e\u003e\u003e import pandas as pd; import pdpipe as pdp; import math;\n        \u003e\u003e\u003e data = [[3.2, \"acd\"], [7.2, \"alk\"], [12.1, \"alk\"]]\n        \u003e\u003e\u003e df = pd.DataFrame(data, [1,2,3], [\"ph\",\"lbl\"])\n        \u003e\u003e\u003e round_ph = pdp.ApplyByCols(\"ph\", math.ceil)\n        \u003e\u003e\u003e round_ph(df)\n           ph  lbl\n        1   4  acd\n        2   8  alk\n        3  13  alk\n        \"\"\"\n\n\n💳 Credits\n==========\nCreated by `Shay Palachy \u003chttp://www.shaypalachy.com/\u003e`_  (shay.palachy@gmail.com).\n\n⭐ Feature Contributors:\n------------------------\n\n* `Amihai Offenbacher @amihaiOff \u003chttps://github.com/amihaiOff\u003e`_ - Runtime parameters.\n\n* `David Katz @DavidKatz-il \u003chttps://github.com/DavidKatz-il\u003e`_ - Black formatter GitHub action.\n\n🐞 Bugfixes \u0026 Documentation:\n----------------------------\n\n* `@carbonleakage \u003chttps://github.com/carbonleakage\u003e`_\n\n* `@yarkhinephyo \u003chttps://github.com/yarkhinephyo\u003e`_\n\n* `@Silun \u003chttps://github.com/Silun\u003e`_\n\n* `@naveenkaushik2504 \u003chttps://github.com/naveenkaushik2504\u003e`_\n\n.. alternative:\n.. https://badge.fury.io/py/yellowbrick.svg\n\n.. |PyPI-Status| image:: https://img.shields.io/pypi/v/pdpipe.svg\n  :target: https://pypi.org/project/pdpipe\n\n.. |PyPI-Versions| image:: https://img.shields.io/pypi/pyversions/pdpipe.svg\n   :target: https://pypi.org/project/pdpipe\n\n.. |Build-Status| image:: https://github.com/pdpipe/pdpipe/actions/workflows/test.yml/badge.svg\n  :target: https://github.com/pdpipe/pdpipe/actions/workflows/test.yml\n\n.. |LICENCE| image:: https://img.shields.io/badge/License-MIT-ff69b4.svg\n  :target: https://pypi.python.org/pypi/pdpipe\n\n.. .. |LICENCE| image:: https://github.com/shaypal5/pdpipe/blob/master/mit_license_badge.svg\n  :target: https://pypi.python.org/pypi/pdpipe\n\n.. https://img.shields.io/pypi/l/pdpipe.svg\n\n.. |Codecov| image:: https://codecov.io/github/pdpipe/pdpipe/coverage.svg?branch=master\n   :target: https://codecov.io/github/pdpipe/pdpipe?branch=master\n\n\n.. |Codacy|  image:: https://api.codacy.com/project/badge/Grade/7d605e063f114ecdb5569266bd0226cd\n   :alt: Codacy Badge\n   :target: https://app.codacy.com/app/shaypal5/pdpipe?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=shaypal5/pdpipe\u0026utm_campaign=Badge_Grade_Dashboard\n\n.. |Requirements| image:: https://requires.io/github/shaypal5/pdpipe/requirements.svg?branch=master\n     :target: https://requires.io/github/shaypal5/pdpipe/requirements/?branch=master\n     :alt: Requirements Status\n\n.. |Downloads| image:: https://pepy.tech/badge/pdpipe\n     :target: https://pepy.tech/project/pdpipe\n     :alt: PePy stats\n\n.. |Codefactor| image:: https://www.codefactor.io/repository/github/pdpipe/pdpipe/badge?style=plastic\n     :target: https://www.codefactor.io/repository/github/pdpipe/pdpipe\n     :alt: Codefactor code quality\n\n.. |CodeStyle| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n    :target: https://github.com/psf/black\n     :alt: Black code style code\n","funding_links":[],"categories":["Projects by main language","Python","数据管道和流处理","Data Pipelines \u0026 Streaming"],"sub_categories":["python"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdpipe%2Fpdpipe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpdpipe%2Fpdpipe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpdpipe%2Fpdpipe/lists"}