jodie 0.1.0__py3-none-any.whl

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.
@@ -0,0 +1,216 @@
1
+ Metadata-Version: 2.4
2
+ Name: jodie
3
+ Version: 0.1.0
4
+ Summary: Jodie lets you add contacts to Contacts.app on macOS from command line
5
+ Author-email: austin <tips@cia.lol>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/austinogilvie/jodie
8
+ Project-URL: Repository, https://github.com/austinogilvie/jodie
9
+ Project-URL: Issues, https://github.com/austinogilvie/jodie/issues
10
+ Keywords: macOS,Contacts.app,Contact management,Contacts,command line tool,CLI
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: MacOS
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Communications :: Email :: Address Book
22
+ Classifier: Topic :: Utilities
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ Requires-Dist: docopt~=0.6.2
26
+ Requires-Dist: nameparser==1.1.3
27
+ Requires-Dist: tomli>=2.0; python_version < "3.11"
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=7.0; extra == "dev"
30
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
31
+
32
+ # Jodie
33
+
34
+ A command line tool to quickly save new contacts to Contacts.app on macOS.
35
+
36
+ Named for [Jodie Foster](https://en.wikipedia.org/wiki/Jodie_Foster) for her stellar performance in [Contact](https://en.wikipedia.org/wiki/Contact_(1997_American_film)).
37
+
38
+ ![Jodie Foster in Contact](jodie-foster-contact.gif)
39
+
40
+ ## Installation
41
+
42
+ ```bash
43
+ git clone git@github.com:austinogilvie/jodie.git
44
+ cd jodie
45
+ pip install .
46
+ ```
47
+
48
+ After installation, both `jodie` and `jodie-cli` commands are available.
49
+
50
+ ## Quick Start
51
+
52
+ ```bash
53
+ # Smart parsing (default) - jodie figures out what's what
54
+ jodie new "John Doe" john@acme.com "Acme Inc" "CEO"
55
+
56
+ # Preview before saving
57
+ jodie new "John Doe" john@acme.com --dry-run
58
+
59
+ # Parse from clipboard (copy an email signature first)
60
+ jodie new --paste
61
+
62
+ # Parse from stdin
63
+ echo "John Doe <john@acme.com>" | jodie new --stdin
64
+ ```
65
+
66
+ ## Usage
67
+
68
+ ```
69
+ jodie - Manage macOS Contacts.app from command line!
70
+
71
+ Usage:
72
+ jodie new TEXT... [options]
73
+ jodie new [options]
74
+ jodie new --paste [options]
75
+ jodie new --stdin [options]
76
+ jodie new --explicit EMAIL NAME [COMPANY] [TITLE]
77
+
78
+ Arguments:
79
+ TEXT Text for jodie to parse intelligently (default mode).
80
+ EMAIL Email address (used with --explicit).
81
+ NAME Full name (used with --explicit).
82
+ COMPANY Company name (used with --explicit).
83
+ TITLE Job title (used with --explicit).
84
+
85
+ Options:
86
+ --explicit Use strict positional parsing.
87
+ --paste Read input from clipboard (pbpaste).
88
+ --stdin Read input from stdin (pipe/heredoc).
89
+ -D --dry-run Preview parsed fields without saving.
90
+
91
+ -E EMAIL --email=EMAIL Email address.
92
+ -F FIRST --first=FIRST First name.
93
+ -L LAST --last=LAST Last name.
94
+ -U NAME --full-name=NAME Full name (or use --name).
95
+ -P PHONE --phone=PHONE Phone number.
96
+ -T TITLE --title=TITLE Job title.
97
+ -C COMPANY --company=COMPANY Company name.
98
+ -W URL --websites=URL Comma-separated website URLs.
99
+ --linkedin=URL LinkedIn URL (auto-labeled).
100
+
101
+ -H --help Show this screen.
102
+ -V --version Show version.
103
+ ```
104
+
105
+ ## Examples
106
+
107
+ ### Smart Parsing (Default)
108
+
109
+ Just pass the information in any order - jodie figures it out:
110
+
111
+ ```bash
112
+ jodie new "John Doe" john@acme.com "Acme Inc" "CEO" "https://linkedin.com/in/johndoe"
113
+ ```
114
+
115
+ ### Preview with --dry-run
116
+
117
+ See what jodie parsed before saving:
118
+
119
+ ```bash
120
+ jodie new "John Doe" john@acme.com "Acme Inc" --dry-run
121
+ ```
122
+
123
+ Output:
124
+ ```
125
+ ┌─────────────────────────────────────────────────────────┐
126
+ │ Contact Preview │
127
+ ├──────────────┬──────────────────────┬───────────────────┤
128
+ │ Field │ Value │ Source │
129
+ ├──────────────┼──────────────────────┼───────────────────┤
130
+ │ First Name │ John │ parsed (100%) │
131
+ │ Last Name │ Doe │ parsed (100%) │
132
+ │ Email │ john@acme.com │ parsed (100%) │
133
+ │ Company │ Acme Inc │ parsed (100%) │
134
+ └──────────────┴──────────────────────┴───────────────────┘
135
+
136
+ Run without --dry-run to save this contact.
137
+ ```
138
+
139
+ ### Parse Email Signatures from Clipboard
140
+
141
+ Copy an email signature to your clipboard, then:
142
+
143
+ ```bash
144
+ jodie new --paste --dry-run
145
+ ```
146
+
147
+ Jodie handles common signature formats:
148
+ - Strips pronouns (he/him, she/her, they/them)
149
+ - Splits on bullet separators (•, |, —)
150
+ - Filters out reply headers and forwarded message noise
151
+ - Infers company from email domain
152
+
153
+ ### Parse from Stdin
154
+
155
+ Pipe text directly:
156
+
157
+ ```bash
158
+ echo "Jane Smith <jane@startup.io> | CEO | Startup Inc" | jodie new --stdin
159
+ ```
160
+
161
+ Or use a heredoc:
162
+
163
+ ```bash
164
+ jodie new --stdin << 'EOF'
165
+ Jane Smith
166
+ CEO, Startup Inc
167
+ jane@startup.io
168
+ 415-555-1234
169
+ https://linkedin.com/in/janesmith
170
+ EOF
171
+ ```
172
+
173
+ ### Explicit Flags
174
+
175
+ For full control, use explicit flags:
176
+
177
+ ```bash
178
+ jodie new \
179
+ --first "John" \
180
+ --last "Doe" \
181
+ --email "john@acme.com" \
182
+ --phone "+1 555 555 5555" \
183
+ --title "CEO" \
184
+ --company "Acme Inc" \
185
+ --linkedin "https://linkedin.com/in/johndoe" \
186
+ --websites "https://acme.com,https://github.com/johndoe"
187
+ ```
188
+
189
+ ### Strict Positional Mode
190
+
191
+ If you prefer explicit ordering (email first, then name, company, title):
192
+
193
+ ```bash
194
+ jodie new --explicit john@acme.com "John Doe" "Acme Inc" "CEO"
195
+ ```
196
+
197
+ Note: `--explicit` mode doesn't support `--dry-run`. Use smart parsing with `--dry-run` to preview first.
198
+
199
+ ## Flag Aliases
200
+
201
+ For convenience, these aliases are supported:
202
+
203
+ | Primary | Aliases |
204
+ |---------|---------|
205
+ | `--first` | `--first-name`, `--firstname` |
206
+ | `--last` | `--last-name`, `--lastname` |
207
+ | `--full-name` | `--name` |
208
+ | `--websites` | `--website` |
209
+
210
+ ## Known Limitations
211
+
212
+ - **Notes field**: Currently disabled due to macOS entitlement requirements. Will be re-enabled in a future update.
213
+
214
+ ## License
215
+
216
+ MIT
@@ -0,0 +1,22 @@
1
+ jodie/__init__.py,sha256=1Vbq4yQV90EfB4FcNtTl2Vry0RfIaOyZdIJX787NE3k,156
2
+ jodie/config.py,sha256=cxDwhFKXAsXztQcIN11re1LPMA-SDd6L6zS793HXTys,3050
3
+ jodie/constants.py,sha256=FGgE65ArdA9Sjk2tTin5hI5rhr3iRHCmUHY4cXFnPLY,888
4
+ jodie/cli/__doc__.py,sha256=xq5E6cA6cI75SFdFPmy64ioDy_x9AbSOTfEWU6mCZMY,3099
5
+ jodie/cli/__init__.py,sha256=NmIjHZJf4m9jlcUDVmXP2IWMUDSfkJEt0Ba73a53oQE,47
6
+ jodie/cli/__main__.py,sha256=mF28Rt2xnU2HrMqc89eg1Ro1A-enHfrs2GlkirdHQW8,11709
7
+ jodie/cli/preview.py,sha256=diuYvioNvQce_OQqqFEl4pxJrQTxYfTRfGA5n7A6w6U,2378
8
+ jodie/contact/__init__.py,sha256=fvYMNKjRR081QW7glEqx-2xPhJVKQ4DKVDcVhBKoZ5U,118
9
+ jodie/contact/contact.py,sha256=6TaXBIyeZNsjzhN1Q1Tt6KSVAzbj5XEWVX5-GIGYj6c,24572
10
+ jodie/input/__init__.py,sha256=COtBM4zRVwaupLiKmzm_Xbby_7ULFqAnxZ79_f8WTqk,182
11
+ jodie/input/clipboard.py,sha256=D38Mw3uRdge0ZRLZAsfZ4PCASl4_OQdUrDRzpZzZ-Xk,286
12
+ jodie/input/signature.py,sha256=iwqjnKqfp0ym9N5X2DYdBRtu-QorlBU3m1LJKIwKI_s,1544
13
+ jodie/input/stdin.py,sha256=xlz4jGZZtHa-CLK6Cewcu17pugRImb-bcsIeoUee8RI,196
14
+ jodie/parsers/__init__.py,sha256=aBvotR0pnVD8u6byrKSyODRQv_zyN3VKgL2va1TnfOI,452
15
+ jodie/parsers/base.py,sha256=uJVXMMDB9bWBBS6-L6TJvz1hsQ2uv0fNpRsszOhRDrw,1880
16
+ jodie/parsers/parsers.py,sha256=scMNKwT4R7s0KFe_LbKH6nxCS3m4fTXbxT9iKr3lhEk,8660
17
+ jodie/parsers/pipeline.py,sha256=RcIstg4qKV03DgVKlwtM0S6JZKs1u3f-TRA_qmZlyR8,4468
18
+ jodie-0.1.0.dist-info/METADATA,sha256=QrFFosM0Opd-a1gGzBTQivbOkF5ISCylYkkgRqZ3NCE,6782
19
+ jodie-0.1.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
20
+ jodie-0.1.0.dist-info/entry_points.txt,sha256=gcALVZny5Rf9XkvJHgzT_XgM8Rfv02TsI2Czj0LYVA8,86
21
+ jodie-0.1.0.dist-info/top_level.txt,sha256=mGpLxKAloOMxcCxDh6it4IITdOFBPeyq-kaEhzjlJxA,6
22
+ jodie-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ jodie = jodie.cli.__main__:main
3
+ jodie-cli = jodie.cli.__main__:main
@@ -0,0 +1 @@
1
+ jodie