{"id":"https://openalex.org/W7160636080","doi":"https://doi.org/10.1145/3796315.3796328","title":"The Opaque Pointer Design Pattern in Python: Towards a Pythonic PIMPL for Modularity, Encapsulation, and Stability","display_name":"The Opaque Pointer Design Pattern in Python: Towards a Pythonic PIMPL for Modularity, Encapsulation, and Stability","publication_year":2026,"publication_date":"2026-01-21","ids":{"openalex":"https://openalex.org/W7160636080","doi":"https://doi.org/10.1145/3796315.3796328"},"language":null,"primary_location":{"id":"doi:10.1145/3796315.3796328","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3796315.3796328","pdf_url":null,"source":null,"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2026 9th International Conference on Software Engineering and Information Management","raw_type":"proceedings-article"},"type":"conference-paper","indexed_in":["crossref"],"open_access":{"is_oa":true,"oa_status":"gold","oa_url":"https://doi.org/10.1145/3796315.3796328","any_repository_has_fulltext":null},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5066825420","display_name":"Antonios Saravanos","orcid":"https://orcid.org/0000-0002-6745-810X"},"institutions":[{"id":"https://openalex.org/I57206974","display_name":"New York University","ror":"https://ror.org/0190ak572","country_code":"US","type":"education","lineage":["https://openalex.org/I57206974"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Antonios Saravanos","raw_affiliation_strings":["New York University, New York, NY, USA"],"raw_orcid":"https://orcid.org/0000-0002-6745-810X","affiliations":[{"raw_affiliation_string":"New York University, New York, NY, USA","institution_ids":["https://openalex.org/I57206974"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5124053542","display_name":"John Pazarzis","orcid":null},"institutions":[],"countries":[],"is_corresponding":false,"raw_author_name":"John Pazarzis","raw_affiliation_strings":["Independent Researcher, New York, NY, USA"],"raw_orcid":"https://orcid.org/0009-0001-4866-2236","affiliations":[{"raw_affiliation_string":"Independent Researcher, New York, NY, USA","institution_ids":[]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5085156750","display_name":"Stavros Zervoudakis","orcid":null},"institutions":[{"id":"https://openalex.org/I57206974","display_name":"New York University","ror":"https://ror.org/0190ak572","country_code":"US","type":"education","lineage":["https://openalex.org/I57206974"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Stavros Zervoudakis","raw_affiliation_strings":["New York University, New York, NY, USA"],"raw_orcid":"https://orcid.org/0009-0008-8047-6231","affiliations":[{"raw_affiliation_string":"New York University, New York, NY, USA","institution_ids":["https://openalex.org/I57206974"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5052978614","display_name":"Dongnanzi Zheng","orcid":null},"institutions":[{"id":"https://openalex.org/I57206974","display_name":"New York University","ror":"https://ror.org/0190ak572","country_code":"US","type":"education","lineage":["https://openalex.org/I57206974"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"Dongnanzi Zheng","raw_affiliation_strings":["New York University, New York, NY, USA"],"raw_orcid":"https://orcid.org/0000-0002-6547-5600","affiliations":[{"raw_affiliation_string":"New York University, New York, NY, USA","institution_ids":["https://openalex.org/I57206974"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":1,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":0.0,"has_fulltext":false,"cited_by_count":0,"citation_normalized_percentile":{"value":0.51554655,"is_in_top_1_percent":false,"is_in_top_10_percent":false},"cited_by_percentile_year":null,"biblio":{"volume":null,"issue":null,"first_page":"85","last_page":"97"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.680400013923645,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.680400013923645,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T13650","display_name":"Computational Physics and Python Applications","score":0.05220000073313713,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10054","display_name":"Parallel Computing and Optimization Techniques","score":0.039799999445676804,"subfield":{"id":"https://openalex.org/subfields/1708","display_name":"Hardware and Architecture"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/python","display_name":"Python (programming language)","score":0.843500018119812},{"id":"https://openalex.org/keywords/code-refactoring","display_name":"Code refactoring","score":0.6328999996185303},{"id":"https://openalex.org/keywords/implementation","display_name":"Implementation","score":0.5892000198364258},{"id":"https://openalex.org/keywords/pointer","display_name":"Pointer (user interface)","score":0.49219998717308044},{"id":"https://openalex.org/keywords/encapsulation","display_name":"Encapsulation (networking)","score":0.40720000863075256},{"id":"https://openalex.org/keywords/object-oriented-programming","display_name":"Object-oriented programming","score":0.4043000042438507},{"id":"https://openalex.org/keywords/design-pattern","display_name":"Design pattern","score":0.35359999537467957}],"concepts":[{"id":"https://openalex.org/C519991488","wikidata":"https://www.wikidata.org/wiki/Q28865","display_name":"Python (programming language)","level":2,"score":0.843500018119812},{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.7793999910354614},{"id":"https://openalex.org/C152752567","wikidata":"https://www.wikidata.org/wiki/Q116877","display_name":"Code refactoring","level":3,"score":0.6328999996185303},{"id":"https://openalex.org/C26713055","wikidata":"https://www.wikidata.org/wiki/Q245962","display_name":"Implementation","level":2,"score":0.5892000198364258},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.515999972820282},{"id":"https://openalex.org/C150202949","wikidata":"https://www.wikidata.org/wiki/Q107602","display_name":"Pointer (user interface)","level":2,"score":0.49219998717308044},{"id":"https://openalex.org/C81147070","wikidata":"https://www.wikidata.org/wiki/Q1172449","display_name":"Encapsulation (networking)","level":2,"score":0.40720000863075256},{"id":"https://openalex.org/C73752529","wikidata":"https://www.wikidata.org/wiki/Q79872","display_name":"Object-oriented programming","level":2,"score":0.4043000042438507},{"id":"https://openalex.org/C14501506","wikidata":"https://www.wikidata.org/wiki/Q5253831","display_name":"Design pattern","level":2,"score":0.35359999537467957},{"id":"https://openalex.org/C53073257","wikidata":"https://www.wikidata.org/wiki/Q7075021","display_name":"Object-oriented design","level":3,"score":0.3456000089645386},{"id":"https://openalex.org/C154945302","wikidata":"https://www.wikidata.org/wiki/Q11660","display_name":"Artificial intelligence","level":1,"score":0.32350000739097595},{"id":"https://openalex.org/C146054899","wikidata":"https://www.wikidata.org/wiki/Q181156","display_name":"Software design pattern","level":3,"score":0.320499986410141},{"id":"https://openalex.org/C162319229","wikidata":"https://www.wikidata.org/wiki/Q175263","display_name":"Data structure","level":2,"score":0.31769999861717224},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.2948000133037567},{"id":"https://openalex.org/C2780615836","wikidata":"https://www.wikidata.org/wiki/Q2471869","display_name":"USable","level":2,"score":0.28940001130104065},{"id":"https://openalex.org/C2985264313","wikidata":"https://www.wikidata.org/wiki/Q378859","display_name":"Pattern analysis","level":2,"score":0.28600001335144043},{"id":"https://openalex.org/C2778648169","wikidata":"https://www.wikidata.org/wiki/Q967768","display_name":"Compatibility (geochemistry)","level":2,"score":0.25110000371932983}],"mesh":[],"locations_count":1,"locations":[{"id":"doi:10.1145/3796315.3796328","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3796315.3796328","pdf_url":null,"source":null,"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2026 9th International Conference on Software Engineering and Information Management","raw_type":"proceedings-article"}],"best_oa_location":{"id":"doi:10.1145/3796315.3796328","is_oa":true,"landing_page_url":"https://doi.org/10.1145/3796315.3796328","pdf_url":null,"source":null,"license":"cc-by","license_id":"https://openalex.org/licenses/cc-by","version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"Proceedings of the 2026 9th International Conference on Software Engineering and Information Management","raw_type":"proceedings-article"},"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"grobid_xml":false,"pdf":false},"content_urls":null,"referenced_works_count":1,"referenced_works":["https://openalex.org/W2028911404"],"related_works":[],"abstract_inverted_index":{"Python":[0,134,196],"libraries":[1],"often":[2],"need":[3],"to":[4,31,38,47,86,109,149,190],"maintain":[5],"a":[6,70,76,87,99,140],"stable":[7],"public":[8,78,166],"API":[9],"even":[10],"as":[11,69,92,113],"internal":[12,27],"implementations":[13],"evolve,":[14],"gain":[15],"new":[16],"backends,":[17],"or":[18],"depend":[19],"on":[20,40,182],"heavy":[21,151],"optional":[22],"libraries.":[23,197],"In":[24],"Python,":[25,106],"where":[26],"objects":[28],"are":[29],"easy":[30],"inspect":[32],"and":[33,53,66,118,121,131,156,173,178,188],"import,":[34],"users":[35],"can":[36,143],"come":[37],"rely":[39],"\u201creachable":[41],"internals\u201d":[42],"that":[43,82],"were":[44],"never":[45],"intended":[46],"be":[48,144],"public,":[49],"making":[50],"refactoring":[51],"risky":[52],"slowing":[54],"long-term":[55],"maintenance.":[56],"This":[57],"paper":[58],"revisits":[59],"the":[60,128,132,165,171,176,184],"pointer-to-implementation":[61],"(PIMPL)":[62],"idiom":[63],"from":[64],"C++":[65],"reinterprets":[67],"it":[68,108,192],"Pythonic":[71,141],"pattern":[72,97,185],"of":[73,102,160,175],"opaque":[74],"delegation:":[75],"small":[77],"object":[79,90],"(or":[80],"module)":[81],"delegates":[83],"its":[84],"behavior":[85],"separate":[88],"implementation":[89],"treated":[91],"internal.":[93],"We":[94,136],"situate":[95],"this":[96],"within":[98],"broader":[100],"taxonomy":[101],"encapsulation":[103],"techniques":[104],"in":[105,127,146,193],"relate":[107],"existing":[110,147],"practices":[111],"such":[112],"module-level":[114],"indirection,":[115],"facade":[116],"objects,":[117],"backend":[119],"dispatch,":[120],"identify":[122],"PIMPL-like":[123],"structures":[124],"already":[125],"used":[126,145],"standard":[129],"library":[130],"scientific":[133],"ecosystem.":[135],"then":[137],"show":[138],"how":[139,189],"PIMPL":[142],"codebases":[148],"isolate":[150],"dependencies,":[152],"support":[153],"lazy":[154],"imports,":[155],"enable":[157],"runtime":[158],"selection":[159],"alternative":[161],"backends":[162],"without":[163],"changing":[164],"API.":[167],"Finally,":[168],"we":[169],"discuss":[170],"benefits":[172],"trade-offs":[174],"approach":[177],"offer":[179],"practical":[180],"guidance":[181],"when":[183],"is":[186],"appropriate":[187],"apply":[191],"large,":[194],"long-lived":[195]},"counts_by_year":[],"updated_date":"2026-07-29T14:22:42.915294","created_date":"2026-05-09T00:00:00"}
