Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
203 commits
Select commit Hold shift + click to select a range
1ec6311
Add stubs for a subset of required string API calls
juliannguyen4 May 20, 2026
d21568a
Finish all string expression stubs. TODO now need to implement
juliannguyen4 May 22, 2026
ae1e95b
Add multiline string to prepare for docstrings
juliannguyen4 May 22, 2026
9859e1e
Use TypeCTX to be defensive; in the future, TypeCTX can also include …
juliannguyen4 May 29, 2026
0b674ba
automatically create a dictionary with the kwargs instead of manually…
juliannguyen4 May 29, 2026
342ef2b
Update C client to revision with string ops support.
juliannguyen4 Jun 5, 2026
8355d2f
Merge remote-tracking branch 'origin/dev' into CLIENT-4836-add-string…
juliannguyen4 Jun 5, 2026
408cce9
Finish python-native implementation and documentation for string_oper…
juliannguyen4 Jun 8, 2026
d2a3b9b
When autodoc is run, TYPE_CHECKING is set to false so a NameError occ…
juliannguyen4 Jun 8, 2026
430dc61
Fix sphinx build error
juliannguyen4 Jun 8, 2026
0fd2e48
Add space between class docstring and attributes / methods to follow …
juliannguyen4 Jun 8, 2026
bd8d3c2
Try using inline comments for describing IntEnum attributes to addres…
juliannguyen4 Jun 8, 2026
e37373a
The previous commit resolved the errors for RegexFlags. So do the sam…
juliannguyen4 Jun 8, 2026
b60ef28
Forgot that str.format() doesn't modify string in place
juliannguyen4 Jun 8, 2026
a5b12ec
Fix formatting of attribute descriptions
juliannguyen4 Jun 8, 2026
895ad70
Fix invalid rst syntax.
juliannguyen4 Jun 8, 2026
3936c05
Show the class attributes in the same order they were defined (in inc…
juliannguyen4 Jun 8, 2026
9f294d4
Finish documentation for string expressions.
juliannguyen4 Jun 8, 2026
dbff9ab
Since expressions are represented by classes, get every class and upd…
juliannguyen4 Jun 8, 2026
fbd5808
Just handle case where function.__doc__ is None to prevent sphinx bui…
juliannguyen4 Jun 8, 2026
0ea0de5
Remove unused import. Explicitly document string_helpers since the er…
juliannguyen4 Jun 8, 2026
71ef916
Address sphinx build errors
juliannguyen4 Jun 8, 2026
4276588
Move StringPolicy to string_helpers module.
juliannguyen4 Jun 8, 2026
b6435d3
Explicitly document aerospike_helpers.expressions.string modul
juliannguyen4 Jun 8, 2026
e4e0211
start parameter only used once.
juliannguyen4 Jun 8, 2026
8398413
Start working on implementation for string expressions. Use X-macro t…
juliannguyen4 Jun 8, 2026
044cfc4
Cannot redeclare an enum member that was defined before. The aerospik…
juliannguyen4 Jun 8, 2026
da09a02
Fill in sizes for string expressions
juliannguyen4 Jun 8, 2026
f22596f
WIP on code that builds the string expressions.
juliannguyen4 Jun 9, 2026
f923df0
Address some spellcheck errors
juliannguyen4 Jun 9, 2026
6d542bf
Address some spellcheck errors. TODO address false positives
juliannguyen4 Jun 9, 2026
6c333fd
Confirmed these words are valid.
juliannguyen4 Jun 9, 2026
5ea0eb7
Address spellcheck errors for function names by wrapping them in back…
juliannguyen4 Jun 9, 2026
044b7be
Address remaining spellcheck errors
juliannguyen4 Jun 9, 2026
2d494ea
Update docstring for string expressions
juliannguyen4 Jun 9, 2026
e67457d
Merge common parameters together for both string ops and exprs
juliannguyen4 Jun 9, 2026
15284d6
Generate string expression docstrings that cross link to the correspo…
juliannguyen4 Jun 9, 2026
ae2f7a3
Clean up todo. Fix docs failing to build by only generating docstring…
juliannguyen4 Jun 9, 2026
b3740dc
Fix invalid rst syntax.
juliannguyen4 Jun 9, 2026
1841d28
Since this is a function, __qualname__ doesn't include the module whe…
juliannguyen4 Jun 9, 2026
07957b3
Add test cases for the first few string operations. Making sure this …
juliannguyen4 Jun 9, 2026
14d9bd1
Add missing copyright notice and docstring for string_helpers module.
juliannguyen4 Jun 9, 2026
ee3201e
Move subpackages section out of string helpers section.
juliannguyen4 Jun 9, 2026
d691a46
Rm invalid import in test.
juliannguyen4 Jun 9, 2026
ff99288
Add tests up to to_integer() op
juliannguyen4 Jun 9, 2026
f1ce34e
Finish tests for all string read ops.
juliannguyen4 Jun 9, 2026
a746adc
Add overwrite and insert tests. Add decorator to test multiple combin…
juliannguyen4 Jun 9, 2026
ebb58de
Add more string write op tests. TODO - need to create fixture for wri…
juliannguyen4 Jun 9, 2026
5f23223
Fix test syntax to apply bin_name and kwargs_with_ctx fixtures to eve…
juliannguyen4 Jun 10, 2026
ced59ea
Python allows passing multiple kwarg dictionaries to the same functio…
juliannguyen4 Jun 10, 2026
55e224f
Remove draft code...
juliannguyen4 Jun 10, 2026
a0ae4d4
Reorg
juliannguyen4 Jun 10, 2026
88cfc08
Only apply ctx parameters to certain tests. There's some tests for ed…
juliannguyen4 Jun 10, 2026
fe329ce
Finish tests for string ops. TODO need to further test all options in…
juliannguyen4 Jun 10, 2026
1f9f5c7
Fix test syntax
juliannguyen4 Jun 10, 2026
889b2fa
Fix test syntax
juliannguyen4 Jun 10, 2026
111382e
Add missing default value for write_flags in StringPolicy.
juliannguyen4 Jun 10, 2026
26d1086
Expose all string operation codes in the aerospike module
juliannguyen4 Jun 10, 2026
1a98ce0
Implement a subset of the read list operations. Need to do refactorin…
juliannguyen4 Jun 10, 2026
1f1466a
Implement all string read ops.
juliannguyen4 Jun 10, 2026
2cdee52
Finish implementation for string write ops. Add helper to convert Str…
juliannguyen4 Jun 10, 2026
69f2ae2
Fix invalid op add name.
juliannguyen4 Jun 10, 2026
c80f0b4
Fix wrong helper method being used for converting snip's end parameter
juliannguyen4 Jun 10, 2026
03fbf11
Address compiler error - cast as_val *val1 as as_list* since as_list …
juliannguyen4 Jun 10, 2026
f2b3031
Fix convert_expressions.c compiler errors. Make string op codes priva…
juliannguyen4 Jun 10, 2026
fb46ddd
forgot to address more string op macros in convert_expressions.c
juliannguyen4 Jun 10, 2026
84958e1
Address linker error.
juliannguyen4 Jun 10, 2026
c0242ae
Merge remote-tracking branch 'origin/dev' into CLIENT-4836-add-string…
juliannguyen4 Jun 10, 2026
9e16ca5
For now just assign _children tuple's first value to be a ternary com…
juliannguyen4 Jun 10, 2026
b3870fc
Add missing op local variable to represent op code.
juliannguyen4 Jun 10, 2026
d148cd6
Fix string ops using the wrong dict key for bin values.
juliannguyen4 Jun 10, 2026
23bbad4
Prevent dict returned by parametrize from being modified and causing …
juliannguyen4 Jun 10, 2026
d40ee9c
Fix helper method get_str
juliannguyen4 Jun 10, 2026
08cf2fc
Label parameters with id's to make easier to identify the failing tests.
juliannguyen4 Jun 10, 2026
c3e6117
Handle case where ctx is None throughout the client API. TODO: If thi…
juliannguyen4 Jun 10, 2026
5aa1191
length argument can be None. None represents no end boundary in this …
juliannguyen4 Jun 10, 2026
532bb78
Fix substr test. And because string write ops have policy as the firs…
juliannguyen4 Jun 10, 2026
00a45ee
Read bin after string write ops. Compare with previous commit's resul…
juliannguyen4 Jun 10, 2026
0ee20bf
Address some test failures
juliannguyen4 Jun 10, 2026
7587e7a
This test case should fail
juliannguyen4 Jun 10, 2026
9e94b5b
Fix substr
juliannguyen4 Jun 10, 2026
0d3b03c
Address multiple test failures
juliannguyen4 Jun 10, 2026
3135314
Fix split operation implementation's separator parameter raising an e…
juliannguyen4 Jun 10, 2026
84fc77e
optional and required are opposites...
juliannguyen4 Jun 10, 2026
d1f1434
Fix compiler error
juliannguyen4 Jun 10, 2026
57d94f3
fix: if separator is None, then as_operations_string_split should be …
juliannguyen4 Jun 10, 2026
1549542
Address split's docstring that doesn't match with C client's. Fix tes…
juliannguyen4 Jun 10, 2026
094e353
All read operations tests pass now. TODO - fix remaining write ops te…
juliannguyen4 Jun 10, 2026
7df6594
Address memory error where string policy is not initialized for any w…
juliannguyen4 Jun 10, 2026
48b0a31
Fix bug where snip operation's end parameter fails with None arg.
juliannguyen4 Jun 10, 2026
04bc0b6
For more compiler errors and test failures.
juliannguyen4 Jun 10, 2026
97647ec
Address snip test failure. The char at start idx should be removed.
juliannguyen4 Jun 10, 2026
55d2921
Revert "Address snip test failure. The char at start idx should be re…
juliannguyen4 Jun 10, 2026
616bd61
Fix snip op test where end arg is an integer. The other test failures…
juliannguyen4 Jun 10, 2026
19b161e
Make test_lower compatible with Python < 3.13
juliannguyen4 Jun 10, 2026
78ca4d6
Skip failing test cases for now, but add TODO's to address for later.
juliannguyen4 Jun 11, 2026
74309b3
Fix faulty test logic...
juliannguyen4 Jun 11, 2026
c36e165
test_lower now passes
juliannguyen4 Jun 11, 2026
9b8d72b
Address test failure (undefined behavior)
juliannguyen4 Jun 11, 2026
1c0b877
Fix regex_replace op using the wrong C client API call. Add default r…
juliannguyen4 Jun 11, 2026
7c17afe
Address regex_replace expecting the wrong param name.
juliannguyen4 Jun 11, 2026
e5e80d6
test_string_operations.py has no more failures. There are a few TODO'…
juliannguyen4 Jun 11, 2026
bc05f75
Add skeleton code to test string expressions. Testing that there's no…
juliannguyen4 Jun 11, 2026
f29b812
Address remaining module constants that weren't updated in the string…
juliannguyen4 Jun 11, 2026
1d17880
Finish most of the string read expression tests.
juliannguyen4 Jun 11, 2026
627a2ab
Add skeleton code for testing string write expressions.
juliannguyen4 Jun 11, 2026
d230658
Address test syntax / usage errors
juliannguyen4 Jun 11, 2026
f552726
Create helper function to reduce code dup re: converting bin names to…
juliannguyen4 Jun 11, 2026
aecba1c
Prevent private helper from undergoing name mangling. We want to reus…
juliannguyen4 Jun 11, 2026
2a6ac08
See if this fixes the substr expr test failing.
juliannguyen4 Jun 11, 2026
db1ec0e
Fix tuple syntax with only one element.
juliannguyen4 Jun 11, 2026
e7c1706
Finish Python code implementation for string expressions. This assume…
juliannguyen4 Jun 11, 2026
f63d10a
Finish first pass of implementation for string write expressions.
juliannguyen4 Jun 11, 2026
713943e
Address compiler error.
juliannguyen4 Jun 11, 2026
8463f4d
Address compiler errors by ignoring -Waddress when a non-NULL address…
juliannguyen4 Jun 11, 2026
b24b530
Fix compiler error
juliannguyen4 Jun 11, 2026
a449df7
Fix compiler error
juliannguyen4 Jun 11, 2026
7ff59ba
Address substr test failing. lval1 and lval2 aren't wrapped by an exp…
juliannguyen4 Jun 11, 2026
3e05564
Address inaccurate test case. Now this test case will fail, so this n…
juliannguyen4 Jun 11, 2026
66ff6dc
Address several string read expressions not taking in string args pro…
juliannguyen4 Jun 11, 2026
a21ec65
Address python syntax error in aerospike_helpers.expressions to fix t…
juliannguyen4 Jun 11, 2026
e52613e
Address is_numeric expr test case failure.
juliannguyen4 Jun 11, 2026
8ca50cb
Address numeric_type failing.
juliannguyen4 Jun 11, 2026
d6b7c53
All string read expression tests pass now.
juliannguyen4 Jun 11, 2026
5ab460b
Add missing break for switch cases covering all str write ops. This a…
juliannguyen4 Jun 11, 2026
86c43ba
Guessing that the index argument never gets processed because it come…
juliannguyen4 Jun 11, 2026
888056d
Make string expr tests become negative tests for server < 8.1.3
juliannguyen4 Jun 14, 2026
3c252c1
Make string ops tests negative if running server < 8.1.3. (TODO maybe…
juliannguyen4 Jun 14, 2026
271d84e
Address invalid pytest syntax. (this follows the same syntax as the p…
juliannguyen4 Jun 14, 2026
4f18e9e
Reuse same server check fixture for test_string_operations.py.
juliannguyen4 Jun 14, 2026
ba6ac01
Address compiler error on macOS.
juliannguyen4 Jun 15, 2026
26c7f1e
Add more string write expr tests.
juliannguyen4 Jun 15, 2026
db94db9
Port the string write op tests to expr tests. (TODO normalize_nfc not…
juliannguyen4 Jun 15, 2026
83c38b0
Address test syntax errors.
juliannguyen4 Jun 15, 2026
07102f4
Address all test syntax errors. Tests are still failing though.
juliannguyen4 Jun 15, 2026
e8f506b
Address test failures.
juliannguyen4 Jun 15, 2026
1ea9984
Fix crash with regex replace expression.
juliannguyen4 Jun 15, 2026
ab911ba
Address test failures.
juliannguyen4 Jun 15, 2026
a0b187b
Now that Nate's feature branch for string ops is rebased onto master,…
juliannguyen4 Jun 16, 2026
f3fed29
Address test failure where bin name of NULL is passed to C client API.
juliannguyen4 Jun 16, 2026
1374423
Address several test cases not handling server < 8.1.3 properly.
juliannguyen4 Jun 16, 2026
177ea68
Merge remote-tracking branch 'origin/dev' into CLIENT-4836-add-string…
juliannguyen4 Jun 17, 2026
70804d0
Refactor some deprecation message work. Deprecate operations.prepend(…
juliannguyen4 Jun 17, 2026
7d92fb9
Update C client to include the latest revisions to the string op API.
juliannguyen4 Jun 17, 2026
d31c233
Deprecate CmpRegex in favor of string expression RegexCompare.
juliannguyen4 Jun 17, 2026
daeeabe
WIP on Shannon's latest changes in c client
juliannguyen4 Jun 17, 2026
6d371fa
Finalize latest changes in string ops PRD.
juliannguyen4 Jun 17, 2026
9f74c96
Fix implementation where snip requires end parameter now.
juliannguyen4 Jun 17, 2026
87b8c28
Address compiler error
juliannguyen4 Jun 17, 2026
56a4515
Address compiler errors
juliannguyen4 Jun 17, 2026
0f34a4a
Fix implementation for snip() due to end param being required, now.
juliannguyen4 Jun 17, 2026
0f70549
Deprecate using client.append() and client.prepend() only for string …
juliannguyen4 Jun 17, 2026
c131fad
Forgot that append/prepend ops need to be explicitly documented as de…
juliannguyen4 Jun 17, 2026
29c8610
Add missing module constants used to parse new string append/prepend …
juliannguyen4 Jun 18, 2026
472229a
Address compiler errors and bad test logic.
juliannguyen4 Jun 18, 2026
44a480b
Address substr() test failure
juliannguyen4 Jun 18, 2026
7a2df1a
Address snip end parameter being required instead of optional
juliannguyen4 Jun 18, 2026
458eae5
String ops: make string policy optional which is more consistent with…
juliannguyen4 Jun 18, 2026
1781625
Create parent expr class that sets the string policy automatically in…
juliannguyen4 Jun 18, 2026
6febc76
Dont create cross reference for WriteOp base class.
juliannguyen4 Jun 18, 2026
84c58bb
Address Substr expr test failure.
juliannguyen4 Jun 18, 2026
92fc3f1
Address deprecation warning causing test failure.
juliannguyen4 Jun 18, 2026
3e05565
Prevent crash with concat()
juliannguyen4 Jun 18, 2026
8eda0a4
Rm outdated test cases for snip now that end is required.
juliannguyen4 Jun 18, 2026
33083ae
Add test cases for normalizenfc op and expr.
juliannguyen4 Jun 18, 2026
e43c7c7
Address many TODO's in PR. We create a 1-to-1 mapping of the C client…
juliannguyen4 Jun 18, 2026
e4ad146
Address 2 more TODOs.
juliannguyen4 Jun 18, 2026
067d6bb
Not going to address unicodeStrVector technical debt for now.
juliannguyen4 Jun 18, 2026
2c2a573
Address more TODO's.
juliannguyen4 Jun 18, 2026
0a494ec
Test string policy for all string write expressions.
juliannguyen4 Jun 18, 2026
e13b3c2
Add test cases for string ops where ctx is None.
juliannguyen4 Jun 18, 2026
55d3ea1
Add byte length test case with multibyte codepoint
juliannguyen4 Jun 18, 2026
54b5762
Unskip snip() now that changes to this op have been finalized by the …
juliannguyen4 Jun 18, 2026
2b8668b
Addressed all TODOs.
juliannguyen4 Jun 18, 2026
a58325b
Address test failure.
juliannguyen4 Jun 18, 2026
39bfcf8
Address buggy tests / actual bugs
juliannguyen4 Jun 18, 2026
4cb1c57
Address test failures.
juliannguyen4 Jun 18, 2026
3fe9879
Address test failures in string ops.
juliannguyen4 Jun 18, 2026
490f07d
Address compiler err
juliannguyen4 Jun 18, 2026
3e619c4
Address compiler error.
juliannguyen4 Jun 18, 2026
f62fa75
Address test failure.
juliannguyen4 Jun 18, 2026
d3d09da
Address undefined behavior.
juliannguyen4 Jun 18, 2026
b1a2c00
Address split() test failure.
juliannguyen4 Jun 18, 2026
9b7a89c
Address invalid test logic.
juliannguyen4 Jun 18, 2026
2a8251c
Address bad syntax in test_overwrite_past_*
juliannguyen4 Jun 18, 2026
8f17166
Address undefined behavior with append and prepend
juliannguyen4 Jun 18, 2026
0119ed3
All string op tests pass now.
juliannguyen4 Jun 18, 2026
399be9d
Address substr expression test failures.
juliannguyen4 Jun 18, 2026
21edf62
Address expr test failures.
juliannguyen4 Jun 18, 2026
b2282c2
Fix prepend() implementation.
juliannguyen4 Jun 18, 2026
693e1a3
Prevent undefined behavior for append/prepend
juliannguyen4 Jun 18, 2026
17607d8
Address Prepend expr test failure.
juliannguyen4 Jun 18, 2026
d36489d
Add test cases for all regex flags.
juliannguyen4 Jun 18, 2026
e5626d7
Address test failures on server 8.1.3.
juliannguyen4 Jun 18, 2026
d4e4d51
Replace all string-related uses of aerospike.OPERATOR_APPEND and OPER…
juliannguyen4 Jun 18, 2026
4478b00
Address test syntax error.
juliannguyen4 Jun 18, 2026
07e3257
Switching ops here since it seems that string_operations.append fails…
juliannguyen4 Jun 18, 2026
3f12852
Address spellcheck error.
juliannguyen4 Jun 18, 2026
183ccb8
Since string op append was added in server 8.1.3, we have to choose t…
juliannguyen4 Jun 18, 2026
d7e9fb4
Do the same with string prepend.
juliannguyen4 Jun 18, 2026
6a56e5a
Address invalid test syntax
juliannguyen4 Jun 18, 2026
d09916b
Address test errors. This fixture should be consolidated with the oth…
juliannguyen4 Jun 18, 2026
623bba8
Address bad test syntax
juliannguyen4 Jun 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion aerospike-client-c
9 changes: 8 additions & 1 deletion aerospike_helpers/expressions/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -837,11 +837,18 @@ def __init__(self, expr0: "TypeComparisonArg", expr1: "TypeComparisonArg"):


class CmpRegex(_BaseExpr):
"""Create an expression that performs a regex match on a string bin or value expression."""
"""
.. deprecated:: 19.3.0 :py:class:`~aerospike_helpers.expressions.string.RegexCompare` should be used instead.
This legacy expression uses POSIX regex and is not Unicode/DBCS-aware; the string-package equivalent
uses ICU regex.

Create an expression that performs a regex match on a string bin or value expression.
"""

_op = _ExprOp.CMP_REGEX

def __init__(self, options: int, regex_str: str, cmp_str: Union[_BaseExpr, str]):

"""Args:
options (int) :ref:`regex_constants`: One of the aerospike regex constants, :ref:`regex_constants`.
regex_str (str): POSIX regex string.
Expand Down
Loading
Loading