diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index bf55bcfb..056e30b6 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -13,8 +13,12 @@ jobs: docs: runs-on: ubuntu-latest steps: - - name: Checkout repository + - name: Checkout code uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' - name: Install dependencies run: pip install . && pip install sphinx sphinx-rtd-theme - name: Build documentation diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index a9e2a2f5..0105bc5f 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,18 +2,24 @@ name: 'lint' on: push: - paths: + paths: &shared_paths - 'examples/**' - 'pyfpga/**' - 'tests/**' + pull_request: + paths: *shared_paths jobs: lint: runs-on: ubuntu-latest steps: - - name: Checkout repository + - name: Checkout code uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.12' - name: Install dependencies - run: pip install pycodestyle pylint + run: pip install jinja2 pycodestyle pylint - name: Run linting run: make lint diff --git a/.github/workflows/pypi.yaml b/.github/workflows/pypi.yml similarity index 100% rename from .github/workflows/pypi.yaml rename to .github/workflows/pypi.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1cf17508..f523430c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2,10 +2,12 @@ name: 'test' on: push: - paths: + paths: &shared_paths - 'examples/projects/**' - 'pyfpga/**' - 'tests/**' + pull_request: + paths: *shared_paths jobs: test: @@ -25,7 +27,7 @@ jobs: runs-on: ${{ matrix.os }}-latest name: ${{ matrix.os }} | ${{ matrix.pyver }} steps: - - name: Checkout repository + - name: Checkout code uses: actions/checkout@v4 - name: Set up Python ${{ matrix.pyver }} uses: actions/setup-python@v5 diff --git a/pyfpga/__init__.py b/pyfpga/__init__.py index d5dfd336..a7495f1c 100644 --- a/pyfpga/__init__.py +++ b/pyfpga/__init__.py @@ -1,3 +1,3 @@ """PyFPGA""" -__version__ = '0.4.0' +__version__ = '0.5.0' diff --git a/pyfpga/gowin.py b/pyfpga/gowin.py index fcc44d84..48cfd2e0 100644 --- a/pyfpga/gowin.py +++ b/pyfpga/gowin.py @@ -29,16 +29,23 @@ def _make_custom(self): if 'part' not in self.data: self.data['part'] = 'GW2AR-LV18QN88C8/I7' + # pylint: disable=duplicate-code + def _get_bitstream(self, bitstream=None): if not bitstream: + project = self.data['project'] + pnr_dir = Path(self.odir) / project / 'impl' / 'pnr' + for ext in self.conf['prog_bit']: - candidate = ( - Path(self.odir) / - f'{self.data["project"]}/impl/pnr/{self.data["project"]}.{ext}' - ) + candidate = pnr_dir / f'{project}.{ext}' if candidate.is_file(): bitstream = candidate break - if not bitstream or not Path(bitstream).is_file(): + else: + bitstream = Path(bitstream) + + if not bitstream or not bitstream.is_file(): raise FileNotFoundError(bitstream) - return self._get_absolute(bitstream, self.conf['prog_ext']) + + abs_path = self._get_absolute(bitstream, self.conf['prog_ext']) + return Path(abs_path).as_posix() diff --git a/tests/mocks/gw_sh.bat b/tests/mocks/gw_sh.bat new file mode 100644 index 00000000..158862c7 --- /dev/null +++ b/tests/mocks/gw_sh.bat @@ -0,0 +1 @@ +@echo off & python "%~dp0%~n0" %*