Skip to main content

No project description provided

Project description

How to create a new python project with projen

  1. run pj new python --name=kaito_model (pj is an alias for npx projen)

  2. configure .projenrc.py by adding below

     project = PythonProject(
         ...
         homepage="",
         license=None,
         project_type=ProjectType.LIB, # or ProjectType.APP if this is not a library
         pip=False,
         venv=False,
         setuptools=False,
         poetry=True,
         poetry_options={
             "repository": "https://github.com/MetaSearch-IO/KaitoModelPython.git",
         },
         deps=[
             "python@^3.9",
         ],
     )
    

    Note that python dependency is required by poetry and the version should be at least 3.7

  3. increase the version in .projenrc.py if necessary.

  4. setup the poetry environment by running poetry env use <PATH_TO_PROJECT>/.env/bin/python3.9 (or your desired python version)

    1. see poetry docs for the exact env path.
    2. you may also need to change the IDE interpreter to the same path, otherwise the IDE will not be able to find the dependencies.
  5. run pj build to install dependencies and generate artifacts.

  6. if not already, setup pypi main token by poetry config pypi-token.pypi <main-token>, find main token in notion doc

  7. run pj publish to upload a new version to pypi.

How to adopt projen to an existing python project

  1. run pj new python, the script will recognize your project name and create a .projenrc.py file.
  2. delete the content inside the newly created <project-name> folder, move content from src (or other folder name with existing source files) to <project-name>, and delete the src folder. Move the test files to <project-name>/tests as well.
    1. you may want to change the module_name in .projenrc.py, note that only lowercase letters and underscores are allowed.
  3. refer to How to create a new python project with projen step 2 till the end, configure the .projenrc.py file.
  4. additionally, you need to base on the existing setup.cfg (or requirements.txt), add the dependencies to .projenrc.py file. Then delete the setup.cfg (or requirements.txt) file.

How to automate the release process

  1. create a project specific pypi token with repo scope, and add it to the github secrets as PYPI_API_TOKEN. Or ask your admin to do it for you.

Bonus

How to enforce pre commit actions (for any language)

  1. install pre-commit and add pre-commit to deps list.

  2. create a pre-commit configuration file .pre-commit-config.yaml similar to below

    # See https://pre-commit.com for more information
    # See https://pre-commit.com/hooks.html for more hooks
    repos:
      - repo: https://github.com/pre-commit/pre-commit-hooks
        rev: v3.2.0
        hooks:
          - id: trailing-whitespace
          - id: end-of-file-fixer
            exclude: ^\.* # Most dot files managed by projen and are read only
          - id: check-yaml
          - id: check-added-large-files
    
  3. run pre-commit install

  4. (optional) run pre-commit autoupdate to update hooks to the latest version

How to run github actions locally

  1. install act

  2. (optional) create an act environment variables fle .actenv with extra env variables, some examples could be

    GITHUB_TOKEN=<your-github-token>
    PYPI_API_TOKEN=<your-pypi-token>
    

    Note that act will try to load file .env as environment variables, but it will not work because .env now it's a virtual environment folder managed by projen. So we need to create a new file.

  3. run act --env-file .actenv to run the github actions locally.

    1. the first time run act will let you choose default image, you should choose at least Medium image.
    2. make an alias for this command for easier use alias act='act --env-file .actenv'

TODO: Run projen as pre-commit hook to ensure the project is up to date

TODO: Auto bump the version number

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kaito_model-0.1.4.tar.gz (10.7 kB view hashes)

Uploaded Source

Built Distribution

kaito_model-0.1.4-py3-none-any.whl (11.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page