mac-alias 2.2.3__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.
Files changed (43) hide show
  1. mac_alias-2.2.4rc1/.github/dependabot.yml +30 -0
  2. mac_alias-2.2.4rc1/.github/workflows/ci.yml +114 -0
  3. mac_alias-2.2.4rc1/.github/workflows/dependabot-changenote.yml +19 -0
  4. mac_alias-2.2.4rc1/.github/workflows/publish.yml +22 -0
  5. mac_alias-2.2.4rc1/.github/workflows/release.yml +86 -0
  6. mac_alias-2.2.4rc1/.github/zizmor.yml +9 -0
  7. mac_alias-2.2.4rc1/.gitignore +14 -0
  8. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/.pre-commit-config.yaml +5 -1
  9. mac_alias-2.2.4rc1/CHANGELOG.md +144 -0
  10. mac_alias-2.2.4rc1/PKG-INFO +39 -0
  11. mac_alias-2.2.4rc1/README.md +11 -0
  12. mac_alias-2.2.4rc1/changes/template.md +29 -0
  13. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/docs/conf.py +2 -9
  14. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/pyproject.toml +38 -17
  15. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/src/mac_alias/__init__.py +31 -29
  16. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/src/mac_alias/alias.py +6 -4
  17. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/src/mac_alias/bookmark.py +4 -4
  18. mac_alias-2.2.4rc1/src/mac_alias.egg-info/PKG-INFO +39 -0
  19. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/src/mac_alias.egg-info/SOURCES.txt +12 -2
  20. mac_alias-2.2.4rc1/src/mac_alias.egg-info/scm_file_list.json +35 -0
  21. mac_alias-2.2.4rc1/src/mac_alias.egg-info/scm_version.json +8 -0
  22. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/tox.ini +14 -10
  23. mac_alias-2.2.3/PKG-INFO +0 -72
  24. mac_alias-2.2.3/README.rst +0 -44
  25. mac_alias-2.2.3/src/mac_alias.egg-info/PKG-INFO +0 -72
  26. mac_alias-2.2.3/src/mac_alias.egg-info/entry_points.txt +0 -2
  27. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/.readthedocs.yaml +0 -0
  28. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/LICENSE +0 -0
  29. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/docs/Makefile +0 -0
  30. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/docs/_static/README.rst +0 -0
  31. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/docs/alias_fmt.rst +0 -0
  32. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/docs/bookmark_fmt.rst +0 -0
  33. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/docs/index.rst +0 -0
  34. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/docs/mac_alias.rst +0 -0
  35. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/docs/make.bat +0 -0
  36. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/setup.cfg +0 -0
  37. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/src/mac_alias/osx.py +0 -0
  38. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/src/mac_alias/utils.py +0 -0
  39. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/src/mac_alias.egg-info/dependency_links.txt +0 -0
  40. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/src/mac_alias.egg-info/top_level.txt +0 -0
  41. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/tests/__init__.py +0 -0
  42. {mac_alias-2.2.3 → mac_alias-2.2.4rc1}/tests/test_alias.py +0 -0
  43. {mac_alias-2.2.3 → 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,14 @@
1
+ .cache
2
+ .coverage
3
+ .eggs
4
+ .tox
5
+ .vscode
6
+ *.egg
7
+ *.egg-info
8
+ *.pyc
9
+ *~
10
+ build
11
+ coverage.xml
12
+ dist
13
+ docs/_build
14
+ venv*
@@ -9,8 +9,12 @@ repos:
9
9
  - id: end-of-file-fixer
10
10
  - id: trailing-whitespace
11
11
  - repo: https://github.com/astral-sh/ruff-pre-commit
12
- rev: v0.14.6
12
+ rev: v0.17.2
13
13
  hooks:
14
14
  - id: ruff-format
15
15
  - id: ruff-check
16
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,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
+ [![Python Versions](https://img.shields.io/pypi/pyversions/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![PyPI Version](https://img.shields.io/pypi/v/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![Maturity](https://img.shields.io/pypi/status/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![MIT License](https://img.shields.io/pypi/l/mac_alias.svg)](https://github.com/dmgbuild/mac_alias/blob/main/LICENSE) [![Build status](https://github.com/dmgbuild/mac_alias/workflows/CI/badge.svg?branch=main)](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
+ [![Python Versions](https://img.shields.io/pypi/pyversions/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![PyPI Version](https://img.shields.io/pypi/v/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![Maturity](https://img.shields.io/pypi/status/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![MIT License](https://img.shields.io/pypi/l/mac_alias.svg)](https://github.com/dmgbuild/mac_alias/blob/main/LICENSE) [![Build status](https://github.com/dmgbuild/mac_alias/workflows/CI/badge.svg?branch=main)](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 %}
@@ -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
- with open("../src/mac_alias/__init__.py", encoding="utf8") as version_file:
61
- version_match = re.search(
62
- r"^__version__ = ['\"]([^'\"]*)['\"]", version_file.read(), re.MULTILINE
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])
@@ -1,6 +1,7 @@
1
1
  [build-system]
2
2
  requires = [
3
- "setuptools==80.9.0",
3
+ "setuptools==84.2.1",
4
+ "setuptools_scm==10.3.4",
4
5
  ]
5
6
  build-backend = "setuptools.build_meta"
6
7
 
@@ -8,8 +9,8 @@ build-backend = "setuptools.build_meta"
8
9
  dynamic = ["version"]
9
10
  name = "mac_alias"
10
11
  description = "Generate/parse macOS Alias records from Python"
11
- readme = "README.rst"
12
- requires-python = ">= 3.10"
12
+ readme = "README.md"
13
+ requires-python = ">= 3.11"
13
14
  license = "MIT"
14
15
  license-files = [
15
16
  "LICENSE",
@@ -26,12 +27,12 @@ keywords = [
26
27
  classifiers = [
27
28
  "Development Status :: 5 - Production/Stable",
28
29
  "Programming Language :: Python :: 3",
29
- "Programming Language :: Python :: 3.10",
30
30
  "Programming Language :: Python :: 3.11",
31
31
  "Programming Language :: Python :: 3.12",
32
32
  "Programming Language :: Python :: 3.13",
33
33
  "Programming Language :: Python :: 3.14",
34
34
  "Programming Language :: Python :: 3.15",
35
+ "Programming Language :: Python :: 3.16",
35
36
  "Programming Language :: Python :: 3 :: Only",
36
37
  "Topic :: Desktop Environment",
37
38
  "Topic :: Software Development :: Libraries :: Python Modules",
@@ -43,26 +44,27 @@ Homepage = "https://github.com/dmgbuild/mac_alias"
43
44
  Tracker = "https://github.com/dmgbuild/mac_alias/issues"
44
45
  Source = "https://github.com/dmgbuild/mac_alias"
45
46
 
46
- [project.scripts]
47
- mac_alias = "mac_alias.__main__:main"
48
-
49
47
  [dependency-groups]
50
48
  package = [
51
- "build == 1.2.1",
52
- "twine == 6.1.0",
49
+ "build == 1.6.1",
50
+ "twine == 7.0.0",
53
51
  ]
54
52
 
55
53
  pre-commit = [
56
- "prek == 0.2.19",
54
+ "prek == 0.5.7",
55
+ ]
56
+
57
+ towncrier = [
58
+ "towncrier==26.9.0",
57
59
  ]
58
60
 
59
61
  test = [
60
- "coverage == 7.10.7",
61
- "pytest == 8.4.2",
62
+ "coverage == 7.17.0",
63
+ "pytest == 9.1.1",
62
64
  ]
63
65
 
64
66
  tox = [
65
- "tox-uv == 1.29.0"
67
+ "tox-uv == 1.37.0"
66
68
  ]
67
69
 
68
70
  dev = [
@@ -73,12 +75,12 @@ dev = [
73
75
 
74
76
  # Docs are always built on Py3.12; see RTD and tox config files.
75
77
  docs = [
76
- "furo == 2025.9.25",
77
- "sphinx == 8.2.3",
78
+ "furo == 2025.12.19",
79
+ "sphinx == 9.0.4",
78
80
  ]
79
81
 
80
- [tool.setuptools.dynamic]
81
- version = {attr = "mac_alias.__version__"}
82
+ [tool.setuptools_scm]
83
+ # An empty table is needed to enable setuptools_scm
82
84
 
83
85
  [tool.coverage.run]
84
86
  branch = true
@@ -129,3 +131,22 @@ extend-select = [
129
131
  # F403: * import used; unable to detect undefined names
130
132
  # F405: undefined, or defined from star imports
131
133
  "src/mac_alias/__init__.py" = ["F403", "F405"]
134
+ # Ignores needed to pass the Ruff 0.16 update.
135
+ "src/mac_alias/alias.py" = ["UP031", "RUF012"]
136
+ "src/mac_alias/osx.py" = ["UP031", "RUF012"]
137
+
138
+ [tool.towncrier]
139
+ directory = "changes"
140
+ package = "mac_alias"
141
+ package_dir = "src"
142
+ filename = "CHANGELOG.md"
143
+ title_format = "## {version} ({project_date})"
144
+ issue_format = "[#{issue}](https://github.com/dmgbuild/mac_alias/issues/{issue})"
145
+ template = "changes/template.md"
146
+ type = [
147
+ { directory = "feature", name = "Features", showcontent = true },
148
+ { directory = "bugfix", name = "Bugfixes", showcontent = true },
149
+ { directory = "removal", name = "Backward Incompatible Changes", showcontent = true },
150
+ { directory = "doc", name = "Documentation", showcontent = true },
151
+ { directory = "misc", name = "Misc", showcontent = false },
152
+ ]
@@ -1,46 +1,48 @@
1
+ from importlib.metadata import version
2
+
1
3
  from .alias import *
2
4
  from .bookmark import *
3
5
 
4
- __version__ = "2.2.3"
6
+ __version__ = version("mac_alias")
5
7
 
6
8
  __all__ = [
7
- "__version__",
8
- "ALIAS_KIND_FILE",
9
- "ALIAS_KIND_FOLDER",
10
- "ALIAS_HFS_VOLUME_SIGNATURE",
11
- "ALIAS_FIXED_DISK",
12
- "ALIAS_NETWORK_DISK",
9
+ "ALIAS_1_44MB_FLOPPY_DISK",
13
10
  "ALIAS_400KB_FLOPPY_DISK",
14
11
  "ALIAS_800KB_FLOPPY_DISK",
15
- "ALIAS_1_44MB_FLOPPY_DISK",
16
12
  "ALIAS_EJECTABLE_DISK",
13
+ "ALIAS_FIXED_DISK",
14
+ "ALIAS_HFS_VOLUME_SIGNATURE",
15
+ "ALIAS_KIND_FILE",
16
+ "ALIAS_KIND_FOLDER",
17
+ "ALIAS_NETWORK_DISK",
17
18
  "ALIAS_NO_CNID",
18
- "kBookmarkPath",
19
+ "URL",
20
+ "Alias",
21
+ "AppleShareInfo",
22
+ "Bookmark",
23
+ "Data",
24
+ "TargetInfo",
25
+ "VolumeInfo",
26
+ "__version__",
19
27
  "kBookmarkCNIDPath",
20
- "kBookmarkFileProperties",
21
- "kBookmarkFileName",
22
- "kBookmarkFileID",
28
+ "kBookmarkContainingFolder",
29
+ "kBookmarkCreationOptions",
23
30
  "kBookmarkFileCreationDate",
31
+ "kBookmarkFileID",
32
+ "kBookmarkFileName",
33
+ "kBookmarkFileProperties",
34
+ "kBookmarkPath",
35
+ "kBookmarkSecurityExtension",
24
36
  "kBookmarkTOCPath",
37
+ "kBookmarkUID",
38
+ "kBookmarkURLLengths",
39
+ "kBookmarkUserName",
40
+ "kBookmarkVolumeCreationDate",
41
+ "kBookmarkVolumeName",
25
42
  "kBookmarkVolumePath",
43
+ "kBookmarkVolumeProperties",
44
+ "kBookmarkVolumeSize",
26
45
  "kBookmarkVolumeURL",
27
- "kBookmarkVolumeName",
28
46
  "kBookmarkVolumeUUID",
29
- "kBookmarkVolumeSize",
30
- "kBookmarkVolumeCreationDate",
31
- "kBookmarkVolumeProperties",
32
- "kBookmarkContainingFolder",
33
- "kBookmarkUserName",
34
- "kBookmarkUID",
35
47
  "kBookmarkWasFileReference",
36
- "kBookmarkCreationOptions",
37
- "kBookmarkURLLengths",
38
- "kBookmarkSecurityExtension",
39
- "AppleShareInfo",
40
- "VolumeInfo",
41
- "TargetInfo",
42
- "Alias",
43
- "Bookmark",
44
- "Data",
45
- "URL",
46
48
  ]
@@ -297,12 +297,14 @@ class Alias:
297
297
  version=2,
298
298
  volume=None,
299
299
  target=None,
300
- extra=[],
300
+ extra=None,
301
301
  ):
302
302
  """Construct a new :class:`Alias` object with the specified
303
303
  contents."""
304
304
 
305
305
  #: Application specific information (four byte byte-string)
306
+ if extra is None:
307
+ extra = []
306
308
  self.appinfo = appinfo
307
309
 
308
310
  #: Version (we support versions 2 and 3)
@@ -344,7 +346,7 @@ class Alias:
344
346
  levels_to, # h
345
347
  volattrs, # I
346
348
  volfsid, # 2s
347
- reserved, # 10s
349
+ _reserved, # 10s
348
350
  ) = struct.unpack(b">h28pI2shI64pII4s4shhI2s10s", b.read(142))
349
351
  else:
350
352
  (
@@ -356,7 +358,7 @@ class Alias:
356
358
  cnid, # I
357
359
  crdate_hr, # Q
358
360
  volattrs, # I
359
- reserved, # 14s
361
+ _reserved, # 14s
360
362
  ) = struct.unpack(b">hQ4shIIQI14s", b.read(46))
361
363
 
362
364
  volname = b""
@@ -463,7 +465,7 @@ class Alias:
463
465
  def for_file(cls, path):
464
466
  """Create an :class:`Alias` that points at the specified file."""
465
467
  if sys.platform != "darwin":
466
- raise Exception("Not implemented (requires special support)")
468
+ raise RuntimeError("Not implemented (requires special support)")
467
469
 
468
470
  path = encode_utf8(path)
469
471
 
@@ -294,7 +294,7 @@ class Bookmark:
294
294
  elif dtype == BMK_NULL:
295
295
  return None
296
296
 
297
- print("Unknown data type %08x" % typecode) # noqa: T201
297
+ print(f"Unknown data type {typecode:08x}") # noqa: T201
298
298
  return (typecode, databytes)
299
299
 
300
300
  @classmethod
@@ -307,7 +307,7 @@ class Bookmark:
307
307
  if isinstance(data, bytearray):
308
308
  data = bytes(data)
309
309
 
310
- magic, size, dummy, hdrsize = struct.unpack(b"<4sIII", data[0:16])
310
+ magic, size, _dummy, hdrsize = struct.unpack(b"<4sIII", data[0:16])
311
311
 
312
312
  if magic not in (b"book", b"alis"):
313
313
  raise ValueError(f"Not a bookmark file (bad magic) {magic!r}")
@@ -348,7 +348,7 @@ class Bookmark:
348
348
  toc = {}
349
349
  for n in range(toccount):
350
350
  ebase = tocbase + 20 + 12 * n
351
- eid, eoffset, edummy = struct.unpack(b"<III", data[ebase : ebase + 12])
351
+ eid, eoffset, _edummy = struct.unpack(b"<III", data[ebase : ebase + 12])
352
352
 
353
353
  if eid & 0x80000000:
354
354
  eid = cls._get_item(data, hdrsize, eid & 0x7FFFFFFF)
@@ -418,7 +418,7 @@ class Bookmark:
418
418
  if item.base:
419
419
  baseoff = offset + 16
420
420
  reloff, baseenc = cls._encode_item(item.base, baseoff)
421
- xoffset, relenc = cls._encode_item(item.relative, reloff)
421
+ _xoffset, relenc = cls._encode_item(item.relative, reloff)
422
422
  result = b"".join(
423
423
  [
424
424
  struct.pack(
@@ -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
+ [![Python Versions](https://img.shields.io/pypi/pyversions/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![PyPI Version](https://img.shields.io/pypi/v/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![Maturity](https://img.shields.io/pypi/status/mac_alias.svg)](https://pypi.python.org/pypi/mac_alias) [![MIT License](https://img.shields.io/pypi/l/mac_alias.svg)](https://github.com/dmgbuild/mac_alias/blob/main/LICENSE) [![Build status](https://github.com/dmgbuild/mac_alias/workflows/CI/badge.svg?branch=main)](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.
@@ -1,9 +1,18 @@
1
+ .gitignore
1
2
  .pre-commit-config.yaml
2
3
  .readthedocs.yaml
4
+ CHANGELOG.md
3
5
  LICENSE
4
- README.rst
6
+ README.md
5
7
  pyproject.toml
6
8
  tox.ini
9
+ .github/dependabot.yml
10
+ .github/zizmor.yml
11
+ .github/workflows/ci.yml
12
+ .github/workflows/dependabot-changenote.yml
13
+ .github/workflows/publish.yml
14
+ .github/workflows/release.yml
15
+ changes/template.md
7
16
  docs/Makefile
8
17
  docs/alias_fmt.rst
9
18
  docs/bookmark_fmt.rst
@@ -20,7 +29,8 @@ src/mac_alias/utils.py
20
29
  src/mac_alias.egg-info/PKG-INFO
21
30
  src/mac_alias.egg-info/SOURCES.txt
22
31
  src/mac_alias.egg-info/dependency_links.txt
23
- src/mac_alias.egg-info/entry_points.txt
32
+ src/mac_alias.egg-info/scm_file_list.json
33
+ src/mac_alias.egg-info/scm_version.json
24
34
  src/mac_alias.egg-info/top_level.txt
25
35
  tests/__init__.py
26
36
  tests/test_alias.py
@@ -0,0 +1,35 @@
1
+ {
2
+ "files": [
3
+ ".github/dependabot.yml",
4
+ ".github/workflows/ci.yml",
5
+ ".github/workflows/dependabot-changenote.yml",
6
+ ".github/workflows/publish.yml",
7
+ ".github/workflows/release.yml",
8
+ ".github/zizmor.yml",
9
+ ".gitignore",
10
+ ".pre-commit-config.yaml",
11
+ ".readthedocs.yaml",
12
+ "CHANGELOG.md",
13
+ "LICENSE",
14
+ "README.md",
15
+ "changes/template.md",
16
+ "docs/Makefile",
17
+ "docs/_static/README.rst",
18
+ "docs/alias_fmt.rst",
19
+ "docs/bookmark_fmt.rst",
20
+ "docs/conf.py",
21
+ "docs/index.rst",
22
+ "docs/mac_alias.rst",
23
+ "docs/make.bat",
24
+ "pyproject.toml",
25
+ "src/mac_alias/__init__.py",
26
+ "src/mac_alias/alias.py",
27
+ "src/mac_alias/bookmark.py",
28
+ "src/mac_alias/osx.py",
29
+ "src/mac_alias/utils.py",
30
+ "tests/__init__.py",
31
+ "tests/test_alias.py",
32
+ "tests/test_bookmark.py",
33
+ "tox.ini"
34
+ ]
35
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "2.2.4rc1",
3
+ "distance": 0,
4
+ "node": "g9b5bdf511f82cace8411dd1f3f75bf9731024765",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-11-11"
8
+ }
@@ -1,8 +1,20 @@
1
1
  [tox]
2
- envlist = docs,package,py{310,311,312,313,314,315}
2
+ envlist = pre-commit,towncrier-check,docs,py{311,312,313,314,315,316}
3
3
  skip_missing_interpreters = true
4
4
 
5
- [testenv]
5
+ [testenv:pre-commit]
6
+ package = wheel
7
+ wheel_build_env = .pkg
8
+ dependency_groups = pre-commit
9
+ commands = prek run --all-files --show-diff-on-failure --color=always
10
+
11
+ [testenv:towncrier{,-check}]
12
+ dependency_groups = towncrier
13
+ commands =
14
+ check : python -m towncrier.check --compare-with origin/main
15
+ !check : python -m towncrier {posargs}
16
+
17
+ [testenv:py{,311,312,313,314,315,316}]
6
18
  dependency_groups = test
7
19
  commands =
8
20
  python -m coverage run -m pytest -vv
@@ -15,11 +27,3 @@ change_dir = docs
15
27
  dependency_groups = docs
16
28
  commands =
17
29
  python -m sphinx build --fail-on-warning --keep-going --jobs auto -n --verbose --fresh-env --show-traceback --write-all -d _build/doctrees --builder html . {posargs:_build/html}
18
-
19
- [testenv:package]
20
- skip_install = True
21
- passenv = FORCE_COLOR
22
- dependency_groups = package
23
- commands =
24
- python -m build --sdist --wheel --outdir dist/ .
25
- python -m twine check dist/*
mac_alias-2.2.3/PKG-INFO DELETED
@@ -1,72 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: mac_alias
3
- Version: 2.2.3
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.10
16
- Classifier: Programming Language :: Python :: 3.11
17
- Classifier: Programming Language :: Python :: 3.12
18
- Classifier: Programming Language :: Python :: 3.13
19
- Classifier: Programming Language :: Python :: 3.14
20
- Classifier: Programming Language :: Python :: 3.15
21
- Classifier: Programming Language :: Python :: 3 :: Only
22
- Classifier: Topic :: Desktop Environment
23
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
- Requires-Python: >=3.10
25
- Description-Content-Type: text/x-rst
26
- License-File: LICENSE
27
- Dynamic: license-file
28
-
29
- =========
30
- mac_alias
31
- =========
32
-
33
- .. |pyversions| image:: https://img.shields.io/pypi/pyversions/mac_alias.svg
34
- :target: https://pypi.python.org/pypi/mac_alias
35
- :alt: Python Versions
36
-
37
- .. |version| image:: https://img.shields.io/pypi/v/mac_alias.svg
38
- :target: https://pypi.python.org/pypi/mac_alias
39
- :alt: PyPI Version
40
-
41
- .. |maturity| image:: https://img.shields.io/pypi/status/mac_alias.svg
42
- :target: https://pypi.python.org/pypi/mac_alias
43
- :alt: Maturity
44
-
45
- .. |license| image:: https://img.shields.io/pypi/l/mac_alias.svg
46
- :target: https://github.com/dmgbuild/mac_alias/blob/main/LICENSE
47
- :alt: MIT License
48
-
49
- .. |ci| image:: https://github.com/dmgbuild/mac_alias/workflows/CI/badge.svg?branch=main
50
- :target: https://github.com/dmgbuild/mac_alias/actions
51
- :alt: Build Status
52
-
53
- |pyversions| |version| |maturity| |license| |ci|
54
-
55
- What is this?
56
- -------------
57
-
58
- ``mac_alias`` lets you generate or read binary Alias and Bookmark records
59
- from Python code.
60
-
61
- While it is written in pure Python, some OS X specific code is required to
62
- generate a proper Alias or Bookmark record for a given file, so this module
63
- currently is not portable to other platforms.
64
-
65
- Credit is due to Wim Lewis <wiml@hhhh.org>, whose work on reverse engineering
66
- the alias format was extremely useful in writing this code. Alastair Houghton
67
- <alastair@alastairs-place.net> was responsible for reverse engineering the
68
- bookmark format.
69
-
70
- See the documentation_ for more information.
71
-
72
- .. _documentation: http://mac-alias.rtfd.org
@@ -1,44 +0,0 @@
1
- =========
2
- mac_alias
3
- =========
4
-
5
- .. |pyversions| image:: https://img.shields.io/pypi/pyversions/mac_alias.svg
6
- :target: https://pypi.python.org/pypi/mac_alias
7
- :alt: Python Versions
8
-
9
- .. |version| image:: https://img.shields.io/pypi/v/mac_alias.svg
10
- :target: https://pypi.python.org/pypi/mac_alias
11
- :alt: PyPI Version
12
-
13
- .. |maturity| image:: https://img.shields.io/pypi/status/mac_alias.svg
14
- :target: https://pypi.python.org/pypi/mac_alias
15
- :alt: Maturity
16
-
17
- .. |license| image:: https://img.shields.io/pypi/l/mac_alias.svg
18
- :target: https://github.com/dmgbuild/mac_alias/blob/main/LICENSE
19
- :alt: MIT License
20
-
21
- .. |ci| image:: https://github.com/dmgbuild/mac_alias/workflows/CI/badge.svg?branch=main
22
- :target: https://github.com/dmgbuild/mac_alias/actions
23
- :alt: Build Status
24
-
25
- |pyversions| |version| |maturity| |license| |ci|
26
-
27
- What is this?
28
- -------------
29
-
30
- ``mac_alias`` lets you generate or read binary Alias and Bookmark records
31
- from Python code.
32
-
33
- While it is written in pure Python, some OS X specific code is required to
34
- generate a proper Alias or Bookmark record for a given file, so this module
35
- currently is not portable to other platforms.
36
-
37
- Credit is due to Wim Lewis <wiml@hhhh.org>, whose work on reverse engineering
38
- the alias format was extremely useful in writing this code. Alastair Houghton
39
- <alastair@alastairs-place.net> was responsible for reverse engineering the
40
- bookmark format.
41
-
42
- See the documentation_ for more information.
43
-
44
- .. _documentation: http://mac-alias.rtfd.org
@@ -1,72 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: mac_alias
3
- Version: 2.2.3
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.10
16
- Classifier: Programming Language :: Python :: 3.11
17
- Classifier: Programming Language :: Python :: 3.12
18
- Classifier: Programming Language :: Python :: 3.13
19
- Classifier: Programming Language :: Python :: 3.14
20
- Classifier: Programming Language :: Python :: 3.15
21
- Classifier: Programming Language :: Python :: 3 :: Only
22
- Classifier: Topic :: Desktop Environment
23
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
- Requires-Python: >=3.10
25
- Description-Content-Type: text/x-rst
26
- License-File: LICENSE
27
- Dynamic: license-file
28
-
29
- =========
30
- mac_alias
31
- =========
32
-
33
- .. |pyversions| image:: https://img.shields.io/pypi/pyversions/mac_alias.svg
34
- :target: https://pypi.python.org/pypi/mac_alias
35
- :alt: Python Versions
36
-
37
- .. |version| image:: https://img.shields.io/pypi/v/mac_alias.svg
38
- :target: https://pypi.python.org/pypi/mac_alias
39
- :alt: PyPI Version
40
-
41
- .. |maturity| image:: https://img.shields.io/pypi/status/mac_alias.svg
42
- :target: https://pypi.python.org/pypi/mac_alias
43
- :alt: Maturity
44
-
45
- .. |license| image:: https://img.shields.io/pypi/l/mac_alias.svg
46
- :target: https://github.com/dmgbuild/mac_alias/blob/main/LICENSE
47
- :alt: MIT License
48
-
49
- .. |ci| image:: https://github.com/dmgbuild/mac_alias/workflows/CI/badge.svg?branch=main
50
- :target: https://github.com/dmgbuild/mac_alias/actions
51
- :alt: Build Status
52
-
53
- |pyversions| |version| |maturity| |license| |ci|
54
-
55
- What is this?
56
- -------------
57
-
58
- ``mac_alias`` lets you generate or read binary Alias and Bookmark records
59
- from Python code.
60
-
61
- While it is written in pure Python, some OS X specific code is required to
62
- generate a proper Alias or Bookmark record for a given file, so this module
63
- currently is not portable to other platforms.
64
-
65
- Credit is due to Wim Lewis <wiml@hhhh.org>, whose work on reverse engineering
66
- the alias format was extremely useful in writing this code. Alastair Houghton
67
- <alastair@alastairs-place.net> was responsible for reverse engineering the
68
- bookmark format.
69
-
70
- See the documentation_ for more information.
71
-
72
- .. _documentation: http://mac-alias.rtfd.org
@@ -1,2 +0,0 @@
1
- [console_scripts]
2
- mac_alias = mac_alias.__main__:main
File without changes
File without changes
File without changes
File without changes
File without changes