Loading...
Loading...
Compare original and translation side by side
references/references/spec-schema.mdreferences/boolean-search.mdscripts/validate_boolean.pyreferences/geo-locations.mdreferences/industries.jsonreferences/regions.jsongrepreferences/references/spec-schema.mdreferences/boolean-search.mdscripts/validate_boolean.pyreferences/geo-locations.mdreferences/industries.jsonreferences/regions.jsongrepecho '<JSON_SPEC>' | python3 scripts/build_url.py -visualize:show_widgetecho '<JSON_SPEC>' | python3 scripts/build_url.py -visualize:show_widget{
"filters": [
{"type": "INDUSTRY", "values": [{"id": 4, "selectionType": "INCLUDED"}]},
{"type": "FUNCTION", "values": [{"id": 15, "selectionType": "INCLUDED"}]},
{"type": "REGION", "values": [{"id": 105015875, "selectionType": "INCLUDED"}]},
{"type": "CURRENT_TITLE", "values": [{"text": "(CMO OR \"Chief Marketing Officer\") NOT Fractional", "selectionType": "INCLUDED"}]},
{"type": "RECENTLY_CHANGED_JOBS", "toggle": true}
]
}typevaluesidCOMPANY_HEADCOUNTCOMPANY_TYPEPROFILE_LANGUAGEtextFIRST_NAMELAST_NAMECURRENT_TITLEPAST_TITLEKEYWORDSselectionType"INCLUDED""EXCLUDED"EXCLUDEDtoggle: truevalues{
"filters": [
{"type": "INDUSTRY", "values": [{"id": 4, "selectionType": "INCLUDED"}]},
{"type": "FUNCTION", "values": [{"id": 15, "selectionType": "INCLUDED"}]},
{"type": "REGION", "values": [{"id": 105015875, "selectionType": "INCLUDED"}]},
{"type": "CURRENT_TITLE", "values": [{"text": "(CMO OR \"Chief Marketing Officer\") NOT Fractional", "selectionType": "INCLUDED"}]},
{"type": "RECENTLY_CHANGED_JOBS", "toggle": true}
]
}typevaluesidCOMPANY_HEADCOUNTCOMPANY_TYPEPROFILE_LANGUAGEtextFIRST_NAMELAST_NAMECURRENT_TITLEPAST_TITLEKEYWORDSselectionType"INCLUDED""EXCLUDED"EXCLUDEDtoggle: truevaluesvalues:| User says | ID | LinkedIn entity |
|---|---|---|
| EMEA | | EMEA |
| DACH | | DACH |
| Benelux | | Benelux |
| Nordics | | Nordics |
| APAC | | APAC |
| APJ (Asia Pacific Japan) | | APJ |
| MENA (Middle East / North Africa) | | MENA |
| Oceania | | Oceania |
| North America / NorAm | | North America |
| South America | | South America |
| Europe (whole continent) | | Europe |
| Asia | | Asia |
| Africa | | Africa |
| Worldwide / "anywhere" | | Worldwide |
{"type": "REGION", "values": [{"id": 91000007, "selectionType": "INCLUDED"}]}values:| 用户表述 | ID | LinkedIn实体 |
|---|---|---|
| EMEA | | EMEA |
| DACH | | DACH |
| Benelux | | Benelux |
| Nordics | | Nordics |
| APAC | | APAC |
| APJ(亚太日本区) | | APJ |
| MENA(中东/北非) | | MENA |
| Oceania | | Oceania |
| North America / NorAm | | North America |
| South America | | South America |
| Europe(全欧洲) | | Europe |
| Asia | | Asia |
| Africa | | Africa |
| Worldwide / "全球" | | Worldwide |
{"type": "REGION", "values": [{"id": 91000007, "selectionType": "INCLUDED"}]}101165590, 105015875, 101282230, 105646813, 103350119, 102890719, 100565514, 106693272, 104738515, 105117694, 103819153, 104514075, 100456013, 103883259, 100364837, 105072130, 104042105, 101620260, 104305776, 100459316101165590, 105015875, 101282230, 105646813, 103350119, 102890719, 100565514, 106693272, 104738515, 105117694, 103819153, 104514075, 100456013, 103883259, 100364837, 105072130, 104042105, 101620260, 104305776, 100459316101165590, 105015875, 101282230, 105646813, 103350119, 102890719, 100565514, 106693272, 104738515, 103883259, 100364837, 104042105101165590, 105015875, 101282230, 105646813, 103350119, 102890719, 100565514, 106693272, 104738515, 103883259, 100364837, 104042105106057199, 103323778, 100446943, 104621616, 100876405106057199, 103323778, 100446943, 104621616, 100876405| User says | Industry IDs | What it maps to |
|---|---|---|
| SaaS / B2B SaaS / "software companies" | | Software Development + Tech Info Internet |
| FinTech | | Software Development + Financial Services |
| InsurTech | | Software Development + Insurance |
| HRTech | | Software Dev + HR Services + Staffing & Recruiting |
| EdTech | | Software Dev + E-Learning Providers + E-learning |
| HealthTech | | Software Dev + Hospitals & Health Care + Health Wellness Fitness |
| BioTech | | Biotechnology + Pharmaceutical Manufacturing |
| Cybersecurity | | Computer & Network Security + Software Development |
| DataTech / AI | | Data Infrastructure & Analytics + Software Development |
| AdTech / MarTech | | Software Dev + Marketing Services + Advertising Services |
| eCommerce | | Software Dev + Tech Info Internet + Retail |
| Agency / Consulting | | Business Consulting + Marketing Services + Advertising Services |
| Logistics / SupplyChain | | Transportation/Logistics/Supply Chain + Software Dev |
| PE / VC | | Venture Capital and Private Equity Principals + Investment Management |
| Pure B2B (any tech) | | Software Dev + Tech Info Internet + IT Services |
references/industries.json| 用户表述 | 行业ID | 对应领域 |
|---|---|---|
| SaaS / B2B SaaS / "软件公司" | | 软件开发 + 科技信息互联网 |
| FinTech | | 软件开发 + 金融服务 |
| InsurTech | | 软件开发 + 保险 |
| HRTech | | 软件开发 + 人力资源服务 + 招聘与猎头 |
| EdTech | | 软件开发 + 在线教育提供商 + 在线学习 |
| HealthTech | | 软件开发 + 医疗保健机构 + 健康与健身 |
| BioTech | | 生物技术 + 制药制造 |
| Cybersecurity | | 计算机与网络安全 + 软件开发 |
| DataTech / AI | | 数据基础设施与分析 + 软件开发 |
| AdTech / MarTech | | 软件开发 + 营销服务 + 广告服务 |
| eCommerce | | 软件开发 + 科技信息互联网 + 零售 |
| Agency / Consulting | | 商业咨询 + 营销服务 + 广告服务 |
| Logistics / SupplyChain | | 运输/物流/供应链 + 软件开发 |
| PE / VC | | 风险投资与私募股权 + 投资管理 |
| Pure B2B(任意科技领域) | | 软件开发 + 科技信息互联网 + IT服务 |
references/industries.json| ID | Country | ID | Country |
|---|---|---|---|
| 103644278 | United States | 102713980 | India |
| 105015875 | France | 102454443 | Singapore |
| 101165590 | United Kingdom | 101355337 | Japan |
| 101282230 | Germany | 101452733 | Australia |
| 105646813 | Spain | 105149562 | South Korea |
| 103350119 | Italy | 103291313 | Hong Kong SAR |
| 102890719 | Netherlands | 106057199 | Brazil |
| 100565514 | Belgium | 103323778 | Mexico |
| 106693272 | Switzerland | 104305776 | United Arab Emirates |
| 104738515 | Ireland | 101620260 | Israel |
| 105117694 | Sweden | 102105699 | Türkiye |
| 104042105 | Luxembourg | 92000000 | Worldwide |
| 101174742 | Canada | 102890883 | China |
references/regions.json| ID | 国家 | ID | 国家 |
|---|---|---|---|
| 103644278 | 美国 | 102713980 | 印度 |
| 105015875 | 法国 | 102454443 | 新加坡 |
| 101165590 | 英国 | 101355337 | 日本 |
| 101282230 | 德国 | 101452733 | 澳大利亚 |
| 105646813 | 西班牙 | 105149562 | 韩国 |
| 103350119 | 意大利 | 103291313 | 中国香港 |
| 102890719 | 荷兰 | 106057199 | 巴西 |
| 100565514 | 比利时 | 103323778 | 墨西哥 |
| 106693272 | 瑞士 | 104305776 | 阿联酋 |
| 104738515 | 爱尔兰 | 101620260 | 以色列 |
| 105117694 | 瑞典 | 102105699 | 土耳其 |
| 104042105 | 卢森堡 | 92000000 | 全球 |
| 101174742 | 加拿大 | 102890883 | 中国 |
references/regions.json| ID | Industry |
|---|---|
| 4 | Software Development |
| 6 | Technology, Information and Internet |
| 96 | IT Services and IT Consulting |
| 43 | Financial Services |
| 11 | Business Consulting and Services |
| 80 | Advertising Services |
| 1862 | Marketing Services |
| 25 | Manufacturing |
| 27 | Retail |
| 105 | Professional Training and Coaching |
references/industries.json| ID | 行业 |
|---|---|
| 4 | 软件开发 |
| 6 | 科技、信息与互联网 |
| 96 | IT服务与IT咨询 |
| 43 | 金融服务 |
| 11 | 商业咨询与服务 |
| 80 | 广告服务 |
| 1862 | 营销服务 |
| 25 | 制造业 |
| 27 | 零售业 |
| 105 | 专业培训与辅导 |
references/industries.jsonFUNCTIONFUNCTION| ID | Function | ID | Function |
|---|---|---|---|
| 1 | Accounting | 14 | Legal |
| 2 | Administrative | 15 | Marketing |
| 3 | Arts and Design | 16 | Media and Communication |
| 4 | Business Development | 17 | Military and Protective Services |
| 5 | Community and Social Services | 18 | Operations |
| 6 | Consulting | 19 | Product Management |
| 7 | Education | 20 | Program and Project Management |
| 8 | Engineering | 21 | Purchasing |
| 9 | Entrepreneurship | 22 | Quality Assurance |
| 10 | Finance | 23 | Real Estate |
| 11 | Healthcare Services | 24 | Research |
| 12 | Human Resources | 25 | Sales |
| 13 | Information Technology | 26 | Customer Success and Support |
| ID | 职能 | ID | 职能 |
|---|---|---|---|
| 1 | 会计 | 14 | 法务 |
| 2 | 行政 | 15 | 营销 |
| 3 | 艺术与设计 | 16 | 媒体与传播 |
| 4 | 业务拓展 | 17 | 军事与安保服务 |
| 5 | 社区与社会服务 | 18 | 运营 |
| 6 | 咨询 | 19 | 产品管理 |
| 7 | 教育 | 20 | 项目管理 |
| 8 | 工程 | 21 | 采购 |
| 9 | 创业 | 22 | 质量保证 |
| 10 | 财务 | 23 | 房地产 |
| 11 | 医疗保健服务 | 24 | 研究 |
| 12 | 人力资源 | 25 | 销售 |
| 13 | 信息技术 | 26 | 客户成功与支持 |
SENIORITY_LEVELSENIORITY_LEVEL| ID | Level | ID | Level |
|---|---|---|---|
| 320 | Owner / Partner | 210 | Experienced Manager |
| 310 | CXO | 200 | Entry Level Manager |
| 300 | Vice President | 130 | Strategic |
| 220 | Director | 120 | Senior |
| 110 | Entry Level | 100 | In Training |
| ID | 职级 | ID | 职级 |
|---|---|---|---|
| 320 | 所有者/合伙人 | 210 | 资深经理 |
| 310 | CXO | 200 | 初级经理 |
| 300 | 副总裁 | 130 | 战略层 |
| 220 | 总监 | 120 | 资深员工 |
| 110 | 初级员工 | 100 | 培训中 |
COMPANY_HEADCOUNTCOMPANY_HEADCOUNT| ID | Range | ID | Range |
|---|---|---|---|
| A | Self-employed | F | 501-1,000 |
| B | 1-10 | G | 1,001-5,000 |
| C | 11-50 | H | 5,001-10,000 |
| D | 51-200 | I | 10,001+ |
| E | 201-500 |
| ID | 范围 | ID | 范围 |
|---|---|---|---|
| A | 自雇 | F | 501-1000人 |
| B | 1-10人 | G | 1001-5000人 |
| C | 11-50人 | H | 5001-10000人 |
| D | 51-200人 | I | 10001人以上 |
| E | 201-500人 |
COMPANY_TYPECOMPANY_TYPE| ID | Type | ID | Type |
|---|---|---|---|
| C | Public Company | E | Self Employed |
| P | Privately Held | O | Self Owned |
| N | Non Profit | G | Government Agency |
| D | Educational Institution | S | Partnership |
| ID | 类型 | ID | 类型 |
|---|---|---|---|
| C | 上市公司 | E | 自雇 |
| P | 私有企业 | O | 自有企业 |
| N | 非营利组织 | G | 政府机构 |
| D | 教育机构 | S | 合伙企业 |
YEARS_AT_CURRENT_COMPANYYEARS_IN_CURRENT_POSITIONYEARS_OF_EXPERIENCEYEARS_AT_CURRENT_COMPANYYEARS_IN_CURRENT_POSITIONYEARS_OF_EXPERIENCE1234512345PROFILE_LANGUAGEPROFILE_LANGUAGEfrendeesitptnlplruzhjakoartrsvnodacsrotlmsinfrendeesitptnlplruzhjakoartrsvnodacsrotlmsin| Type | Hardcoded ID | Behavior |
|---|---|---|
| | Changed jobs in last 90 days |
| | Posted on LinkedIn in last 30 days |
| | People from your past companies |
| | Follows your LinkedIn page |
{"type": "RECENTLY_CHANGED_JOBS", "toggle": true}| 类型 | 硬编码ID | 行为 |
|---|---|---|
| | 过去90天内换工作 |
| | 过去30天内在LinkedIn发布内容 |
| | 曾任职于你过往公司的人员 |
| | 关注你LinkedIn主页的人员 |
{"type": "RECENTLY_CHANGED_JOBS", "toggle": true}KEYWORDSCURRENT_TITLEPAST_TITLEKEYWORDSCURRENT_TITLEPAST_TITLEANDORNOT"..."(...)()""NOTANDORANDORNOT"..."(...)()""NOTANDOR"Manag*(Manager OR Management OR Managing)the a an to for of on in with by and"Manag*(Manager OR Management OR Managing)the a an to for of on in with by andCMO → ("CMO" OR "Chief Marketing Officer" OR "Head of Marketing" OR "VP Marketing")
CRO/Sales → ("CRO" OR "Chief Revenue Officer" OR "Head of Sales" OR "VP Sales" OR "SVP Sales")
CEO → (CEO OR "Chief Executive Officer" OR Founder OR Co-Founder OR Owner)
CFO → (CFO OR "Chief Financial Officer" OR "Head of Finance" OR "VP Finance")
CTO → (CTO OR "Chief Technology Officer" OR "VP Engineering" OR "Head of Engineering")
RevOps → ("Head of Sales Operations" OR "RevOps" OR "Revenue Operations" OR "Sales Operations Manager")
Growth → ("Head of Growth" OR "Growth Manager" OR "Growth Marketing Manager" OR "Demand Generation Manager")
SDR Mgr → ("SDR Manager" OR "BDR Manager" OR "Head of SDR" OR "Sales Development Manager")CMO → ("CMO" OR "Chief Marketing Officer" OR "Head of Marketing" OR "VP Marketing")
CRO/Sales → ("CRO" OR "Chief Revenue Officer" OR "Head of Sales" OR "VP Sales" OR "SVP Sales")
CEO → (CEO OR "Chief Executive Officer" OR Founder OR Co-Founder OR Owner)
CFO → (CFO OR "Chief Financial Officer" OR "Head of Finance" OR "VP Finance")
CTO → (CTO OR "Chief Technology Officer" OR "VP Engineering" OR "Head of Engineering")
RevOps → ("Head of Sales Operations" OR "RevOps" OR "Revenue Operations" OR "Sales Operations Manager")
Growth → ("Head of Growth" OR "Growth Manager" OR "Growth Marketing Manager" OR "Demand Generation Manager")
SDR Mgr → ("SDR Manager" OR "BDR Manager" OR "Head of SDR" OR "Sales Development Manager")NOT (Fractional OR Freelance OR Consultant OR Advisor OR Intern OR Assistant)Student OR Junior OR Retired OR Former OR ExNOT (Fractional OR Freelance OR Consultant OR Advisor OR Intern OR Assistant)Student OR Junior OR Retired OR Former OR Ex(... OR ... OR ...)NOT (...)(... OR ... OR ...)NOT (...)| Wrong | Right |
|---|---|
| |
| |
| |
| |
| |
| |
references/boolean-search.md| 错误写法 | 正确写法 |
|---|---|
| |
| |
| |
| |
| |
| |
references/boolean-search.mdundefinedundefined
The script prints the URL to stdout. Warnings go to stderr; errors fail the build.
To lint a boolean string standalone (rarely needed — the builder validates automatically):
```bash
python3 scripts/validate_boolean.py '(CMO OR "Chief Marketing Officer") NOT Fractional'
脚本会将URL打印到标准输出。警告信息会输出到标准错误流;错误会导致构建失败。
如需单独验证布尔字符串(很少需要 — 构建工具会自动验证):
```bash
python3 scripts/validate_boolean.py '(CMO OR "Chief Marketing Officer") NOT Fractional'visualize:show_widgetvisualize:show_widget| Language | Framing line |
|---|---|
| English (default) | |
| French | |
| Spanish | |
| German | |
| Italian | |
| 语言 | 说明语 |
|---|---|
| 英文(默认) | |
| 法语 | |
| 西班牙语 | |
| 德语 | |
| 意大利语 | |
visualize:show_widgetvisualize:show_widgettitlesales_nav_search_handoffsales_nav_revops_emealoading_messages["Wrapping the search up", "Lining up the launch"]widget_code<h2 class="sr-only">Sales Navigator search built, with options to open in browser or one-click import into La Growth Machine</h2>
<style>
.snv-primary { transition: opacity 0.15s; }
.snv-primary:hover { opacity: 0.85; }
</style>
<div style="background: var(--color-background-primary); border-radius: var(--border-radius-lg); border: 0.5px solid var(--color-border-tertiary); padding: 1.25rem 1.5rem; margin: 0.5rem 0;">
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 14px;">
<i class="ti ti-search" style="font-size: 18px; color: var(--color-text-secondary);" aria-hidden="true"></i>
<span style="font-size: 13px; color: var(--color-text-secondary); font-weight: 500;">{HEADER_LABEL}</span>
</div>
<p style="font-size: 15px; margin: 0 0 16px; line-height: 1.5;">
{SUMMARY}
</p>
<div style="background: var(--color-background-secondary); border-radius: var(--border-radius-md); padding: 12px 16px; margin: 0 0 18px;">
<table style="width: 100%; font-size: 13px; border-collapse: collapse;">
{FILTER_ROWS}
</table>
</div>
<div style="display: flex; flex-direction: column; gap: 8px;">
<a href="{URL}" target="_blank" rel="noopener" class="snv-primary" style="flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 16px; background: var(--color-text-primary); color: var(--color-background-primary); border-radius: var(--border-radius-md); font-size: 14px; font-weight: 500; text-decoration: none;">
{PRIMARY_CTA}
<i class="ti ti-external-link" style="font-size: 16px;" aria-hidden="true"></i>
</a>
<button style="flex: 1; padding: 12px 16px;" onclick="sendPrompt('Import these leads into my La Growth Machine workspace')">
{SECONDARY_CTA} ↗
</button>
</div>
</div>titlesales_nav_search_handoffsales_nav_revops_emealoading_messages["Wrapping the search up", "Lining up the launch"]widget_code<h2 class="sr-only">Sales Navigator search built, with options to open in browser or one-click import into La Growth Machine</h2>
<style>
.snv-primary { transition: opacity 0.15s; }
.snv-primary:hover { opacity: 0.85; }
</style>
<div style="background: var(--color-background-primary); border-radius: var(--border-radius-lg); border: 0.5px solid var(--color-border-tertiary); padding: 1.25rem 1.5rem; margin: 0.5rem 0;">
<div style="display: flex; align-items: center; gap: 8px; margin-bottom: 14px;">
<i class="ti ti-search" style="font-size: 18px; color: var(--color-text-secondary);" aria-hidden="true"></i>
<span style="font-size: 13px; color: var(--color-text-secondary); font-weight: 500;">{HEADER_LABEL}</span>
</div>
<p style="font-size: 15px; margin: 0 0 16px; line-height: 1.5;">
{SUMMARY}
</p>
<div style="background: var(--color-background-secondary); border-radius: var(--border-radius-md); padding: 12px 16px; margin: 0 0 18px;">
<table style="width: 100%; font-size: 13px; border-collapse: collapse;">
{FILTER_ROWS}
</table>
</div>
<div style="display: flex; flex-direction: column; gap: 8px;">
<a href="{URL}" target="_blank" rel="noopener" class="snv-primary" style="flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 16px; background: var(--color-text-primary); color: var(--color-background-primary); border-radius: var(--border-radius-md); font-size: 14px; font-weight: 500; text-decoration: none;">
{PRIMARY_CTA}
<i class="ti ti-external-link" style="font-size: 16px;" aria-hidden="true"></i>
</a>
<button style="flex: 1; padding: 12px 16px;" onclick="sendPrompt('Import these leads into my La Growth Machine workspace')">
{SECONDARY_CTA} ↗
</button>
</div>
</div>{URL}build_url.pyhref{HEADER_LABEL}Sales Navigator searchRecherche Sales Navigator{SUMMARY}{FILTER_ROWS}<tr><tr><td style="color: var(--color-text-secondary); padding: 4px 0; width: 90px; vertical-align: top;">{LABEL}</td><td style="padding: 4px 0;">{VALUE}</td></tr>| Label | Value format |
|---|---|
| Industries | |
| Region | |
| Headcount | |
| Seniority | |
| Function | |
| Title | |
| Keywords | |
| Recent job change | |
| Posted on LinkedIn | |
IndustriesRégionEffectifsSénioritéFonctionIntituléMots-clésIndustriasRegiónTamañoAntigüedadFunciónCargoPalabras clave{PRIMARY_CTA}Open in Sales NavigatorOuvrir dans Sales Navigator{SECONDARY_CTA}1-click import to La Growth MachineImporter en 1 clic dans La Growth MachineImportar en 1 clic en La Growth Machine1-Klick-Import in La Growth MachineImporta in 1 clic in La Growth MachinesendPromptonclick{URL}build_url.pyhref{HEADER_LABEL}Sales Navigator searchRecherche Sales Navigator{SUMMARY}{FILTER_ROWS}<tr><tr><td style="color: var(--color-text-secondary); padding: 4px 0; width: 90px; vertical-align: top;">{LABEL}</td><td style="padding: 4px 0;">{VALUE}</td></tr>| 标签 | 值格式 |
|---|---|
| Industries | |
| Region | |
| Headcount | |
| Seniority | |
| Function | |
| Title | |
| Keywords | |
| Recent job change | |
| Posted on LinkedIn | |
IndustriesRégionEffectifsSénioritéFonctionIntituléMots-clésIndustriasRegiónTamañoAntigüedadFunciónCargoPalabras clave{PRIMARY_CTA}Open in Sales NavigatorOuvrir dans Sales Navigator{SECONDARY_CTA}1-click import to La Growth MachineImporter en 1 clic dans La Growth MachineImportar en 1 clic en La Growth Machine1-Klick-Import in La Growth MachineImporta in 1 clic in La Growth MachineonclicksendPromptsendPrompt('Import these leads into my La Growth Machine workspace')import_lead_from_linkedin_searchhttps://mcpapp.lagrowthmachine.com/mcphttps://app.lagrowthmachine.com/register?utm_source=claude_skill&utm_medium=mcp&utm_campaign=sales-nav-search-buildersendPrompt('Import these leads into my La Growth Machine workspace')import_lead_from_linkedin_searchhttps://mcpapp.lagrowthmachine.com/mcphttps://app.lagrowthmachine.com/register?utm_source=claude_skill&utm_medium=mcp&utm_campaign=sales-nav-search-builderexamples/marketing-leaders.jsonexamples/sales-revops.jsonexamples/founders-startups.jsonexamples/recent-job-changers.jsonexamples/marketing-leaders.jsonexamples/sales-revops.jsonexamples/founders-startups.jsonexamples/recent-job-changers.jsonpython3 scripts/build_url.py --test
python3 scripts/validate_boolean.py --testpython3 scripts/build_url.py --test
python3 scripts/validate_boolean.py --test