def rshares_to_vote_pct(self, rshares, crea_power=None, vests=None, voting_power=CREA_100_PERCENT, use_stored_data=True):
    ' Obtain the voting percentage for a desired rshares value\n            for a given Crea Power or vesting shares and voting_power\n            Give either crea_power or vests, not both.\n            When the output is greater than 10000 or less than -10000,\n            the given absolute rshares are too high\n\n            Returns the required voting percentage (100% = 10000)\n\n            :param number rshares: desired rshares value\n            :param number crea_power: Crea Power\n            :param number vests: vesting shares\n            :param int voting_power: voting power (100% = 10000)\n\n        '
    if ((crea_power is None) and (vests is None)):
        raise ValueError('Either crea_power or vests has to be set!')
    if ((crea_power is not None) and (vests is not None)):
        raise ValueError('Either crea_power or vests has to be set. Not both!')
    if (crea_power is not None):
        vests = int((self.sp_to_vests(crea_power, use_stored_data=use_stored_data) * 1000000.0))
    if (self.hardfork >= 20):
        rshares += math.copysign(self.get_dust_threshold(use_stored_data=use_stored_data), rshares)
    max_vote_denom = self._max_vote_denom(use_stored_data=use_stored_data)
    used_power = int(math.ceil(((abs(rshares) * CREA_100_PERCENT) / vests)))
    used_power = (used_power * max_vote_denom)
    vote_pct = (((used_power * CREA_100_PERCENT) / ((60 * 60) * 24)) / voting_power)
    return int(math.copysign(vote_pct, rshares))
Obtain the voting percentage for a desired rshares value
for a given Crea Power or vesting shares and voting_power
Give either crea_power or vests, not both.
When the output is greater than 10000 or less than -10000,
the given absolute rshares are too high

Returns the required voting percentage (100% = 10000)

:param number rshares: desired rshares value
:param number crea_power: Crea Power
:param number vests: vesting shares
:param int voting_power: voting power (100% = 10000)
def rshares_to_vote_pct(self, rshares, crea_power=None, vests=None, voting_power=CREA_100_PERCENT, use_stored_data=True):
    ' Obtain the voting percentage for a desired rshares value\n            for a given Crea Power or vesting shares and voting_power\n            Give either crea_power or vests, not both.\n            When the output is greater than 10000 or less than -10000,\n            the given absolute rshares are too high\n\n            Returns the required voting percentage (100% = 10000)\n\n            :param number rshares: desired rshares value\n            :param number crea_power: Crea Power\n            :param number vests: vesting shares\n            :param int voting_power: voting power (100% = 10000)\n\n        '
    if ((crea_power is None) and (vests is None)):
        raise ValueError('Either crea_power or vests has to be set!')
    if ((crea_power is not None) and (vests is not None)):
        raise ValueError('Either crea_power or vests has to be set. Not both!')
    if (crea_power is not None):
        vests = int((self.sp_to_vests(crea_power, use_stored_data=use_stored_data) * 1000000.0))
    if (self.hardfork >= 20):
        rshares += math.copysign(self.get_dust_threshold(use_stored_data=use_stored_data), rshares)
    max_vote_denom = self._max_vote_denom(use_stored_data=use_stored_data)
    used_power = int(math.ceil(((abs(rshares) * CREA_100_PERCENT) / vests)))
    used_power = (used_power * max_vote_denom)
    vote_pct = (((used_power * CREA_100_PERCENT) / ((60 * 60) * 24)) / voting_power)
    return int(math.copysign(vote_pct, rshares))