mac-alias 2.2.2__tar.gz → 2.2.4rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mac_alias-2.2.4rc1/.github/dependabot.yml +30 -0
- mac_alias-2.2.4rc1/.github/workflows/ci.yml +114 -0
- mac_alias-2.2.4rc1/.github/workflows/dependabot-changenote.yml +19 -0
- mac_alias-2.2.4rc1/.github/workflows/publish.yml +22 -0
- mac_alias-2.2.4rc1/.github/workflows/release.yml +86 -0
- mac_alias-2.2.4rc1/.github/zizmor.yml +9 -0
- mac_alias-2.2.4rc1/.gitignore +14 -0
- mac_alias-2.2.4rc1/.pre-commit-config.yaml +20 -0
- mac_alias-2.2.4rc1/.readthedocs.yaml +19 -0
- mac_alias-2.2.4rc1/CHANGELOG.md +144 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/LICENSE +1 -0
- mac_alias-2.2.4rc1/PKG-INFO +39 -0
- mac_alias-2.2.4rc1/README.md +11 -0
- mac_alias-2.2.4rc1/changes/template.md +29 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/docs/alias_fmt.rst +1 -1
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/docs/conf.py +3 -10
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/docs/mac_alias.rst +6 -2
- mac_alias-2.2.4rc1/pyproject.toml +152 -0
- mac_alias-2.2.4rc1/setup.cfg +4 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/src/mac_alias/__init__.py +31 -30
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/src/mac_alias/alias.py +20 -19
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/src/mac_alias/bookmark.py +11 -11
- mac_alias-2.2.4rc1/src/mac_alias.egg-info/PKG-INFO +39 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/src/mac_alias.egg-info/SOURCES.txt +12 -6
- mac_alias-2.2.4rc1/src/mac_alias.egg-info/scm_file_list.json +35 -0
- mac_alias-2.2.4rc1/src/mac_alias.egg-info/scm_version.json +8 -0
- mac_alias-2.2.4rc1/tox.ini +29 -0
- mac_alias-2.2.2/.pre-commit-config.yaml +0 -35
- mac_alias-2.2.2/.readthedocs.yaml +0 -29
- mac_alias-2.2.2/MANIFEST.in +0 -10
- mac_alias-2.2.2/PKG-INFO +0 -78
- mac_alias-2.2.2/README.rst +0 -46
- mac_alias-2.2.2/pyproject.toml +0 -12
- mac_alias-2.2.2/setup.cfg +0 -75
- mac_alias-2.2.2/src/mac_alias.egg-info/PKG-INFO +0 -78
- mac_alias-2.2.2/src/mac_alias.egg-info/entry_points.txt +0 -2
- mac_alias-2.2.2/src/mac_alias.egg-info/not-zip-safe +0 -1
- mac_alias-2.2.2/src/mac_alias.egg-info/requires.txt +0 -14
- mac_alias-2.2.2/tox.ini +0 -49
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/docs/Makefile +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/docs/_static/README.rst +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/docs/bookmark_fmt.rst +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/docs/index.rst +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/docs/make.bat +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/src/mac_alias/osx.py +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/src/mac_alias/utils.py +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/src/mac_alias.egg-info/dependency_links.txt +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/src/mac_alias.egg-info/top_level.txt +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/tests/__init__.py +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/tests/test_alias.py +0 -0
- {mac_alias-2.2.2 → mac_alias-2.2.4rc1}/tests/test_bookmark.py +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
|
|
3
|
+
multi-ecosystem-groups:
|
|
4
|
+
dependencies:
|
|
5
|
+
schedule:
|
|
6
|
+
# Check for updates on the first Sunday of every month, 8PM UTC
|
|
7
|
+
interval: "cron"
|
|
8
|
+
cronjob: "0 20 * * sun#1"
|
|
9
|
+
|
|
10
|
+
updates:
|
|
11
|
+
- package-ecosystem: "github-actions"
|
|
12
|
+
directory: "/"
|
|
13
|
+
patterns: ["*"]
|
|
14
|
+
multi-ecosystem-group: "dependencies"
|
|
15
|
+
cooldown:
|
|
16
|
+
default-days: 7
|
|
17
|
+
|
|
18
|
+
- package-ecosystem: "pip"
|
|
19
|
+
directory: "/"
|
|
20
|
+
patterns: ["*"]
|
|
21
|
+
multi-ecosystem-group: "dependencies"
|
|
22
|
+
cooldown:
|
|
23
|
+
default-days: 7
|
|
24
|
+
|
|
25
|
+
- package-ecosystem: "pre-commit"
|
|
26
|
+
directory: "/"
|
|
27
|
+
patterns: ["*"]
|
|
28
|
+
multi-ecosystem-group: "dependencies"
|
|
29
|
+
cooldown:
|
|
30
|
+
default-days: 7
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
workflow_call:
|
|
8
|
+
inputs:
|
|
9
|
+
attest-package:
|
|
10
|
+
description: "Create GitHub provenance attestation for the package."
|
|
11
|
+
default: "false"
|
|
12
|
+
type: string
|
|
13
|
+
outputs:
|
|
14
|
+
artifact-basename:
|
|
15
|
+
description: "Base name of the uploaded artifacts; use for artifact retrieval."
|
|
16
|
+
value: ${{ jobs.package.outputs.artifact-basename }}
|
|
17
|
+
|
|
18
|
+
# Cancel active CI runs for a PR before starting another run
|
|
19
|
+
concurrency:
|
|
20
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
21
|
+
cancel-in-progress: true
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
|
|
26
|
+
defaults:
|
|
27
|
+
run:
|
|
28
|
+
shell: bash
|
|
29
|
+
|
|
30
|
+
env:
|
|
31
|
+
FORCE_COLOR: "1"
|
|
32
|
+
|
|
33
|
+
jobs:
|
|
34
|
+
pre-commit:
|
|
35
|
+
name: Pre-commit checks
|
|
36
|
+
runs-on: "ubuntu-latest"
|
|
37
|
+
steps:
|
|
38
|
+
- name: Checkout
|
|
39
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
40
|
+
with:
|
|
41
|
+
persist-credentials: false
|
|
42
|
+
fetch-depth: 1
|
|
43
|
+
|
|
44
|
+
- name: Set up Python
|
|
45
|
+
uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
|
|
46
|
+
with:
|
|
47
|
+
python-version: "3.X"
|
|
48
|
+
|
|
49
|
+
- name: Lint with prek
|
|
50
|
+
uses: j178/prek-action@44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d # v3.1.0
|
|
51
|
+
|
|
52
|
+
towncrier:
|
|
53
|
+
name: Check towncrier
|
|
54
|
+
uses: beeware/.github/.github/workflows/towncrier-run.yml@main
|
|
55
|
+
permissions:
|
|
56
|
+
contents: read
|
|
57
|
+
pull-requests: write
|
|
58
|
+
with:
|
|
59
|
+
tox-source: "--group tox"
|
|
60
|
+
|
|
61
|
+
package:
|
|
62
|
+
name: Package mac_alias
|
|
63
|
+
needs: [ pre-commit, towncrier ]
|
|
64
|
+
permissions:
|
|
65
|
+
id-token: write
|
|
66
|
+
attestations: write
|
|
67
|
+
contents: read
|
|
68
|
+
uses: beeware/.github/.github/workflows/python-package-create.yml@main
|
|
69
|
+
with:
|
|
70
|
+
attest: ${{ inputs.attest-package }}
|
|
71
|
+
|
|
72
|
+
unit-tests:
|
|
73
|
+
name: Unit tests
|
|
74
|
+
needs: package
|
|
75
|
+
strategy:
|
|
76
|
+
fail-fast: false
|
|
77
|
+
matrix:
|
|
78
|
+
python-version: [ "3.11", "3.12", "3.13", "3.14", "3.15", "3.16" ]
|
|
79
|
+
include:
|
|
80
|
+
# Run all Python versions on M1
|
|
81
|
+
- macOS-version: "macos-26"
|
|
82
|
+
|
|
83
|
+
# Run the most recent Python on macOS 15 M1
|
|
84
|
+
- python-version: "3.x"
|
|
85
|
+
macOS-version: "macos-15"
|
|
86
|
+
# Run the most recent Python on macOS 15 intel
|
|
87
|
+
- python-version: "3.x"
|
|
88
|
+
macOS-version: "macos-15-intel"
|
|
89
|
+
# Run the most recent Python on macOS 27
|
|
90
|
+
- python-version: "3.x"
|
|
91
|
+
macOS-version: "xcode-27"
|
|
92
|
+
|
|
93
|
+
runs-on: ${{ matrix.macOS-version }}
|
|
94
|
+
steps:
|
|
95
|
+
- name: Checkout
|
|
96
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
97
|
+
with:
|
|
98
|
+
persist-credentials: false
|
|
99
|
+
fetch-depth: 1
|
|
100
|
+
|
|
101
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
102
|
+
uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
|
|
103
|
+
with:
|
|
104
|
+
python-version: ${{ matrix.python-version }}
|
|
105
|
+
allow-prereleases: true
|
|
106
|
+
|
|
107
|
+
- name: Install dependencies
|
|
108
|
+
run: |
|
|
109
|
+
python -m pip install --upgrade pip
|
|
110
|
+
python -m pip install --group tox
|
|
111
|
+
|
|
112
|
+
- name: Test
|
|
113
|
+
run: |
|
|
114
|
+
tox -e py
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: Dependabot Change Note
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- 'dependabot/**'
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
pull-requests: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
changenote:
|
|
14
|
+
name: Dependabot Change Note
|
|
15
|
+
uses: beeware/.github/.github/workflows/dependabot-changenote.yml@main
|
|
16
|
+
secrets:
|
|
17
|
+
BRUTUS_PAT_TOKEN: ${{ secrets.BRUTUS_PAT_TOKEN }}
|
|
18
|
+
with:
|
|
19
|
+
changenote-format: "md"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Upload Python Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: published
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
deploy:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
# This permission is required for trusted publishing.
|
|
12
|
+
id-token: write
|
|
13
|
+
steps:
|
|
14
|
+
- uses: dsaltares/fetch-gh-release-asset@aa2ab1243d6e0d5b405b973c89fa4d06a2d0fff7 # 1.1.2
|
|
15
|
+
with:
|
|
16
|
+
version: tags/${{ github.event.release.tag_name }}
|
|
17
|
+
file: ${{ github.event.repository.name }}.*
|
|
18
|
+
regex: true
|
|
19
|
+
target: dist/
|
|
20
|
+
|
|
21
|
+
- name: Publish release to production PyPI
|
|
22
|
+
uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: Create Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
ci:
|
|
10
|
+
name: CI
|
|
11
|
+
permissions:
|
|
12
|
+
id-token: write
|
|
13
|
+
contents: read
|
|
14
|
+
attestations: write
|
|
15
|
+
pull-requests: write
|
|
16
|
+
uses: $/.github/workflows/ci.yml
|
|
17
|
+
with:
|
|
18
|
+
attest-package: "true"
|
|
19
|
+
|
|
20
|
+
docs:
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
name: Verify Docs Build
|
|
24
|
+
uses: beeware/.github/.github/workflows/docs-build-verify.yml@main
|
|
25
|
+
secrets:
|
|
26
|
+
RTD_API_TOKEN: ${{ secrets.RTD_API_TOKEN }}
|
|
27
|
+
with:
|
|
28
|
+
project-name: "mac-alias"
|
|
29
|
+
project-version: ${{ github.ref_name }}
|
|
30
|
+
|
|
31
|
+
release:
|
|
32
|
+
name: Create Release
|
|
33
|
+
needs: ci
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
permissions:
|
|
36
|
+
contents: write
|
|
37
|
+
# This permission is required for trusted publishing.
|
|
38
|
+
id-token: write
|
|
39
|
+
steps:
|
|
40
|
+
- name: Set build variables
|
|
41
|
+
run: |
|
|
42
|
+
echo "VERSION=${GITHUB_REF_NAME#v}" | tee -a $GITHUB_ENV
|
|
43
|
+
|
|
44
|
+
- name: Checkout
|
|
45
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
46
|
+
with:
|
|
47
|
+
persist-credentials: false
|
|
48
|
+
fetch-depth: 0
|
|
49
|
+
fetch-tags: true
|
|
50
|
+
|
|
51
|
+
- name: Set up Python
|
|
52
|
+
uses: actions/setup-python@6d4fd22b20465ccc0f7354476588e8df7c9ca0e0 # v7.1.0
|
|
53
|
+
with:
|
|
54
|
+
python-version: "3.x"
|
|
55
|
+
|
|
56
|
+
- name: Get packages
|
|
57
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
58
|
+
with:
|
|
59
|
+
pattern: Packages-*
|
|
60
|
+
merge-multiple: true
|
|
61
|
+
path: dist
|
|
62
|
+
|
|
63
|
+
- name: Install packages
|
|
64
|
+
run: pip install dist/*.whl
|
|
65
|
+
|
|
66
|
+
- name: Check version number
|
|
67
|
+
# Check that the version number of the installed package matches the tag.
|
|
68
|
+
run: |
|
|
69
|
+
set -x
|
|
70
|
+
test $(python -c "import mac_alias; print(mac_alias.__version__)") = $VERSION
|
|
71
|
+
|
|
72
|
+
- name: Create release
|
|
73
|
+
env:
|
|
74
|
+
GH_TOKEN: ${{ github.token }}
|
|
75
|
+
GH_REPO: ${{ github.repository }}
|
|
76
|
+
run: |
|
|
77
|
+
gh release create "${GITHUB_REF_NAME}" \
|
|
78
|
+
--title "$VERSION" \
|
|
79
|
+
--draft \
|
|
80
|
+
--verify-tag \
|
|
81
|
+
dist/*
|
|
82
|
+
|
|
83
|
+
- name: Publish release to Test PyPI
|
|
84
|
+
uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # v1.14.3
|
|
85
|
+
with:
|
|
86
|
+
repository-url: https://test.pypi.org/legacy/
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
rules:
|
|
2
|
+
unpinned-uses:
|
|
3
|
+
config:
|
|
4
|
+
# Allow BeeWare-provided actions to be unpinned. If an attacker is in a
|
|
5
|
+
# position to exploit those action, they're probably able to exploit
|
|
6
|
+
# repositories directly; and it's significantly easier for our internal
|
|
7
|
+
# actions to automatically be the most recent versions.
|
|
8
|
+
policies:
|
|
9
|
+
beeware/*: ref-pin
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v6.0.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: check-toml
|
|
6
|
+
- id: check-yaml
|
|
7
|
+
- id: check-case-conflict
|
|
8
|
+
- id: check-docstring-first
|
|
9
|
+
- id: end-of-file-fixer
|
|
10
|
+
- id: trailing-whitespace
|
|
11
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
12
|
+
rev: v0.17.2
|
|
13
|
+
hooks:
|
|
14
|
+
- id: ruff-format
|
|
15
|
+
- id: ruff-check
|
|
16
|
+
args: [ --fix ]
|
|
17
|
+
- repo: https://github.com/zizmorcore/zizmor-pre-commit
|
|
18
|
+
rev: v1.31.1
|
|
19
|
+
hooks:
|
|
20
|
+
- id: zizmor
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# .readthedocs.yaml
|
|
2
|
+
# Read the Docs configuration file
|
|
3
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
4
|
+
|
|
5
|
+
# Required
|
|
6
|
+
version: 2
|
|
7
|
+
|
|
8
|
+
# Set the version of Python and other tools you might need
|
|
9
|
+
build:
|
|
10
|
+
os: ubuntu-22.04
|
|
11
|
+
tools:
|
|
12
|
+
python: "3.12"
|
|
13
|
+
jobs:
|
|
14
|
+
pre_install:
|
|
15
|
+
- python -m pip install --upgrade pip
|
|
16
|
+
- python -m pip install --group tox
|
|
17
|
+
build:
|
|
18
|
+
html:
|
|
19
|
+
- python -m tox -e docs -- $READTHEDOCS_OUTPUT/html/
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Release History
|
|
2
|
+
|
|
3
|
+
<!-- towncrier release notes start -->
|
|
4
|
+
|
|
5
|
+
## 2.2.4 (2026-11-11)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* Support for Python 3.16 was added. ([#234](https://github.com/dmgbuild/mac_alias/issues/234))
|
|
10
|
+
|
|
11
|
+
### Backward Incompatible Changes
|
|
12
|
+
|
|
13
|
+
* Support for Python 3.10 was dropped. ([#231](https://github.com/dmgbuild/mac_alias/issues/231))
|
|
14
|
+
|
|
15
|
+
### Misc
|
|
16
|
+
|
|
17
|
+
* [#205](https://github.com/dmgbuild/mac_alias/issues/205), [#206](https://github.com/dmgbuild/mac_alias/issues/206), [#207](https://github.com/dmgbuild/mac_alias/issues/207), [#208](https://github.com/dmgbuild/mac_alias/issues/208), [#209](https://github.com/dmgbuild/mac_alias/issues/209), [#211](https://github.com/dmgbuild/mac_alias/issues/211), [#212](https://github.com/dmgbuild/mac_alias/issues/212), [#213](https://github.com/dmgbuild/mac_alias/issues/213), [#214](https://github.com/dmgbuild/mac_alias/issues/214), [#215](https://github.com/dmgbuild/mac_alias/issues/215), [#216](https://github.com/dmgbuild/mac_alias/issues/216), [#217](https://github.com/dmgbuild/mac_alias/issues/217), [#218](https://github.com/dmgbuild/mac_alias/issues/218), [#220](https://github.com/dmgbuild/mac_alias/issues/220), [#222](https://github.com/dmgbuild/mac_alias/issues/222), [#223](https://github.com/dmgbuild/mac_alias/issues/223), [#224](https://github.com/dmgbuild/mac_alias/issues/224), [#225](https://github.com/dmgbuild/mac_alias/issues/225), [#226](https://github.com/dmgbuild/mac_alias/issues/226), [#227](https://github.com/dmgbuild/mac_alias/issues/227), [#228](https://github.com/dmgbuild/mac_alias/issues/228), [#229](https://github.com/dmgbuild/mac_alias/issues/229), [#230](https://github.com/dmgbuild/mac_alias/issues/230), [#232](https://github.com/dmgbuild/mac_alias/issues/232), [#233](https://github.com/dmgbuild/mac_alias/issues/233), [#235](https://github.com/dmgbuild/mac_alias/issues/235), [#236](https://github.com/dmgbuild/mac_alias/issues/236)
|
|
18
|
+
|
|
19
|
+
## 2.2.3 (2025-12-04)
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* Support for Python 3.13, 3.14 and 3.15 was added.
|
|
24
|
+
|
|
25
|
+
### Backward Incompatible Changes
|
|
26
|
+
|
|
27
|
+
* Support for Python 3.7, 3.8 and 3.9 was dropped.
|
|
28
|
+
|
|
29
|
+
### Misc
|
|
30
|
+
|
|
31
|
+
* [#204](https://github.com/dmgbuild/mac_alias/issues/204), [#24](https://github.com/dmgbuild/mac_alias/issues/24)
|
|
32
|
+
|
|
33
|
+
## 2.2.2 (2022-12-06)
|
|
34
|
+
|
|
35
|
+
### Bugfixes
|
|
36
|
+
|
|
37
|
+
* `kBookmarkVolumePath` and `kBookmarkVolumeURL` are now correctly exported from the top-level package. ([#20](https://github.com/dmgbuild/mac_alias/issues/20))
|
|
38
|
+
|
|
39
|
+
## 2.2.1 (2022-11-24)
|
|
40
|
+
|
|
41
|
+
### Features
|
|
42
|
+
|
|
43
|
+
* The project now uses a PEP 517 compliant build configuration, and declares Python 3.7 to 3.12 as supported versions. ([#19](https://github.com/dmgbuild/mac_alias/issues/19))
|
|
44
|
+
|
|
45
|
+
### Bugfixes
|
|
46
|
+
|
|
47
|
+
* A stray entry in Alias serialization was removed. ([#12](https://github.com/dmgbuild/mac_alias/issues/12))
|
|
48
|
+
|
|
49
|
+
### Backward Incompatible Changes
|
|
50
|
+
|
|
51
|
+
* Support for Python 2, and Python 3 versions prior to 3.7 was dropped.
|
|
52
|
+
|
|
53
|
+
### Misc
|
|
54
|
+
|
|
55
|
+
* [#13](https://github.com/dmgbuild/mac_alias/issues/13), [#14](https://github.com/dmgbuild/mac_alias/issues/14), [#16](https://github.com/dmgbuild/mac_alias/issues/16), [#17](https://github.com/dmgbuild/mac_alias/issues/17)
|
|
56
|
+
|
|
57
|
+
## 2.2.0 (2020-12-08)
|
|
58
|
+
|
|
59
|
+
### Features
|
|
60
|
+
|
|
61
|
+
* `osx.py` was updated with definitions from macOS 11 (Big Sur).
|
|
62
|
+
|
|
63
|
+
### Bugfixes
|
|
64
|
+
|
|
65
|
+
* `statfs` and `fstatfs` are now correctly located on ARM64 (Apple Silicon) machines. ([#11](https://github.com/dmgbuild/mac_alias/issues/11))
|
|
66
|
+
|
|
67
|
+
## 2.1.1 (2020-11-28)
|
|
68
|
+
|
|
69
|
+
### Bugfixes
|
|
70
|
+
|
|
71
|
+
* A `NameError` when reading an Alias from a file descriptor was corrected. ([#9](https://github.com/dmgbuild/mac_alias/issues/9))
|
|
72
|
+
|
|
73
|
+
## 2.1.0 (2020-10-11)
|
|
74
|
+
|
|
75
|
+
### Features
|
|
76
|
+
|
|
77
|
+
* Tentative support for the Alias v3 format was added.
|
|
78
|
+
|
|
79
|
+
### Bugfixes
|
|
80
|
+
|
|
81
|
+
* Volume paths are now normalized to NFC form before being compared, avoiding Unicode string comparison issues. ([#7](https://github.com/dmgbuild/mac_alias/issues/7))
|
|
82
|
+
|
|
83
|
+
## 2.0.7 (2018-02-13)
|
|
84
|
+
|
|
85
|
+
### Bugfixes
|
|
86
|
+
|
|
87
|
+
* A number of Python 3 compatibility problems were corrected. ([#3](https://github.com/dmgbuild/mac_alias/issues/3))
|
|
88
|
+
|
|
89
|
+
## 2.0.6 (2017-08-02)
|
|
90
|
+
|
|
91
|
+
### Features
|
|
92
|
+
|
|
93
|
+
* Bookmarks can now be parsed from `bytearray` data.
|
|
94
|
+
|
|
95
|
+
### Bugfixes
|
|
96
|
+
|
|
97
|
+
* Stray debugging `print` statements were removed from bookmark generation.
|
|
98
|
+
|
|
99
|
+
## 2.0.5 (2017-08-02)
|
|
100
|
+
|
|
101
|
+
### Bugfixes
|
|
102
|
+
|
|
103
|
+
* Byte strings are now used with `struct.pack`, correcting a Python 3 compatibility problem.
|
|
104
|
+
|
|
105
|
+
## 2.0.4 (2017-07-28)
|
|
106
|
+
|
|
107
|
+
### Bugfixes
|
|
108
|
+
|
|
109
|
+
* A number of Python 3 compatibility problems were corrected.
|
|
110
|
+
|
|
111
|
+
## 2.0.2 (2017-07-27)
|
|
112
|
+
|
|
113
|
+
### Features
|
|
114
|
+
|
|
115
|
+
* A basic test suite was added.
|
|
116
|
+
|
|
117
|
+
### Bugfixes
|
|
118
|
+
|
|
119
|
+
* A number of Python 3 compatibility problems were corrected.
|
|
120
|
+
|
|
121
|
+
## 2.0.1 (2017-04-28)
|
|
122
|
+
|
|
123
|
+
### Bugfixes
|
|
124
|
+
|
|
125
|
+
* Generated bookmarks now use generic ("nobody") user information, rather than details of the author.
|
|
126
|
+
|
|
127
|
+
## 2.0.0 (2016-12-02)
|
|
128
|
+
|
|
129
|
+
### Features
|
|
130
|
+
|
|
131
|
+
* Support for reading and generating Bookmark records was added.
|
|
132
|
+
|
|
133
|
+
## 1.1.0 (2015-10-19)
|
|
134
|
+
|
|
135
|
+
### Bugfixes
|
|
136
|
+
|
|
137
|
+
* Values provided to the `TargetInfo` initializer are now used, rather than being ignored.
|
|
138
|
+
* Floor division is now used explicitly where required, correcting Python 3 compatibility.
|
|
139
|
+
* The `TAG_APPLESHARE_SERVER_NAME` tag value was corrected.
|
|
140
|
+
* The full path to `libc` is now used, correcting a problem on OS X 10.11 (El Capitan).
|
|
141
|
+
|
|
142
|
+
## 1.0.0 (2014-02-13)
|
|
143
|
+
|
|
144
|
+
* Initial release.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: mac_alias
|
|
3
|
+
Version: 2.2.4rc1
|
|
4
|
+
Summary: Generate/parse macOS Alias records from Python
|
|
5
|
+
Author-email: Alastair Houghton <alastair@alastairs-place.net>
|
|
6
|
+
Maintainer-email: Russell Keith-Magee <russell@keith-magee.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Documentation, https://mac-alias.readthedocs.io/en/latest/
|
|
9
|
+
Project-URL: Homepage, https://github.com/dmgbuild/mac_alias
|
|
10
|
+
Project-URL: Tracker, https://github.com/dmgbuild/mac_alias/issues
|
|
11
|
+
Project-URL: Source, https://github.com/dmgbuild/mac_alias
|
|
12
|
+
Keywords: mac_alias
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.16
|
|
21
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
22
|
+
Classifier: Topic :: Desktop Environment
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Requires-Python: >=3.11
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Dynamic: license-file
|
|
28
|
+
|
|
29
|
+
# mac_alias
|
|
30
|
+
|
|
31
|
+
[](https://pypi.python.org/pypi/mac_alias) [](https://pypi.python.org/pypi/mac_alias) [](https://pypi.python.org/pypi/mac_alias) [](https://github.com/dmgbuild/mac_alias/blob/main/LICENSE) [](https://github.com/dmgbuild/mac_alias/actions)
|
|
32
|
+
|
|
33
|
+
`mac_alias` lets you generate or read binary Alias and Bookmark records from Python code.
|
|
34
|
+
|
|
35
|
+
While it is written in pure Python, some macOS specific code is required to generate a proper Alias or Bookmark record for a given file, so this module currently is not portable to other platforms.
|
|
36
|
+
|
|
37
|
+
Credit is due to Wim Lewis <wiml@hhhh.org>, whose work on reverse engineering the alias format was extremely useful in writing this code. Alastair Houghton <alastair@alastairs-place.net> was responsible for reverse engineering the bookmark format.
|
|
38
|
+
|
|
39
|
+
See the [documentation](https://mac-alias.readthedocs.io) for more information.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# mac_alias
|
|
2
|
+
|
|
3
|
+
[](https://pypi.python.org/pypi/mac_alias) [](https://pypi.python.org/pypi/mac_alias) [](https://pypi.python.org/pypi/mac_alias) [](https://github.com/dmgbuild/mac_alias/blob/main/LICENSE) [](https://github.com/dmgbuild/mac_alias/actions)
|
|
4
|
+
|
|
5
|
+
`mac_alias` lets you generate or read binary Alias and Bookmark records from Python code.
|
|
6
|
+
|
|
7
|
+
While it is written in pure Python, some macOS specific code is required to generate a proper Alias or Bookmark record for a given file, so this module currently is not portable to other platforms.
|
|
8
|
+
|
|
9
|
+
Credit is due to Wim Lewis <wiml@hhhh.org>, whose work on reverse engineering the alias format was extremely useful in writing this code. Alastair Houghton <alastair@alastairs-place.net> was responsible for reverse engineering the bookmark format.
|
|
10
|
+
|
|
11
|
+
See the [documentation](https://mac-alias.readthedocs.io) for more information.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{% for section, _ in sections.items() %}
|
|
2
|
+
{% if section %}
|
|
3
|
+
{{section}}
|
|
4
|
+
|
|
5
|
+
{% endif %}
|
|
6
|
+
|
|
7
|
+
{% if sections[section] %}
|
|
8
|
+
{% for category, val in definitions.items() if category in sections[section]%}
|
|
9
|
+
### {{ definitions[category]['name'] }}
|
|
10
|
+
|
|
11
|
+
{% if definitions[category]['showcontent'] %}
|
|
12
|
+
{% for text, values in sections[section][category].items() %}
|
|
13
|
+
* {{ text }} ({{ values|join(', ') }})
|
|
14
|
+
{% endfor %}
|
|
15
|
+
{% else %}
|
|
16
|
+
* {{ sections[section][category]['']|join(', ') }}
|
|
17
|
+
{% endif %}
|
|
18
|
+
{% if sections[section][category]|length == 0 %}
|
|
19
|
+
No significant changes.
|
|
20
|
+
|
|
21
|
+
{% else %}
|
|
22
|
+
{% endif %}
|
|
23
|
+
|
|
24
|
+
{% endfor %}
|
|
25
|
+
{% else %}
|
|
26
|
+
No significant changes.
|
|
27
|
+
|
|
28
|
+
{% endif %}
|
|
29
|
+
{% endfor %}
|
|
@@ -49,7 +49,7 @@ Offset Size Contents
|
|
|
49
49
|
28 4 Target CNID
|
|
50
50
|
32 8 Target creation date (65536ths of a second since 1904-01-01 00:00:00 UTC)
|
|
51
51
|
40 4 Volume attributes
|
|
52
|
-
|
|
52
|
+
44 14 Reserved (set to zero)
|
|
53
53
|
====== ==== ========
|
|
54
54
|
|
|
55
55
|
This record is optionally followed by tag-length-value data:
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
# serve to show the default.
|
|
13
13
|
|
|
14
14
|
import os
|
|
15
|
-
import re
|
|
16
15
|
import sys
|
|
16
|
+
from importlib.metadata import version
|
|
17
17
|
|
|
18
18
|
# If extensions (or modules to document with autodoc) are in another directory,
|
|
19
19
|
# add these directories to sys.path here. If the directory is relative to the
|
|
@@ -57,14 +57,7 @@ copyright = "2014-2020, Alastair Houghton"
|
|
|
57
57
|
# built documents.
|
|
58
58
|
#
|
|
59
59
|
# The full version, including alpha/beta/rc tags.
|
|
60
|
-
|
|
61
|
-
version_match = re.search(
|
|
62
|
-
r"^__version__ = ['\"]([^'\"]*)['\"]", version_file.read(), re.M
|
|
63
|
-
)
|
|
64
|
-
if version_match:
|
|
65
|
-
release = version_match.group(1)
|
|
66
|
-
else:
|
|
67
|
-
raise RuntimeError("Unable to find version string.")
|
|
60
|
+
release = version("mac_alias")
|
|
68
61
|
|
|
69
62
|
# The short X.Y version.
|
|
70
63
|
version = ".".join(release.split(".")[:2])
|
|
@@ -112,7 +105,7 @@ pygments_style = "sphinx"
|
|
|
112
105
|
|
|
113
106
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
114
107
|
# a list of builtin themes.
|
|
115
|
-
html_theme = "
|
|
108
|
+
html_theme = "furo"
|
|
116
109
|
|
|
117
110
|
# Theme options are theme-specific and customize the look and feel of a theme
|
|
118
111
|
# further. For a list of options available for each theme, see the
|
|
@@ -14,6 +14,10 @@ Classes
|
|
|
14
14
|
:members:
|
|
15
15
|
:undoc-members:
|
|
16
16
|
|
|
17
|
+
.. autoclass:: VolumeInfo
|
|
18
|
+
:members:
|
|
19
|
+
:undoc-members:
|
|
20
|
+
|
|
17
21
|
.. autoclass:: TargetInfo
|
|
18
22
|
:members:
|
|
19
23
|
:undoc-members:
|
|
@@ -36,7 +40,7 @@ Constants
|
|
|
36
40
|
.. py:data:: ALIAS_KIND_FILE
|
|
37
41
|
ALIAS_KIND_FOLDER
|
|
38
42
|
|
|
39
|
-
Values for the :attr
|
|
43
|
+
Values for the :attr:`TargetInfo.kind` attribute.
|
|
40
44
|
|
|
41
45
|
.. py:data:: ALIAS_HFS_VOLUME_SIGNATURE
|
|
42
46
|
|
|
@@ -51,7 +55,7 @@ Constants
|
|
|
51
55
|
ALIAS_FILESYSTEM_NTFS
|
|
52
56
|
ALIAS_FILESYSTEM_UNKNOWN
|
|
53
57
|
|
|
54
|
-
Values returned by the :attr
|
|
58
|
+
Values returned by the :attr:`VolumeInfo.filesystem_type` attribute.
|
|
55
59
|
|
|
56
60
|
.. py:data:: ALIAS_FIXED_DISK
|
|
57
61
|
ALIAS_NETWORK_DISK
|