diff --git a/faker/providers/lorem/__init__.py b/faker/providers/lorem/__init__.py
index 5f07712d..dea4dd36 100644
--- a/faker/providers/lorem/__init__.py
+++ b/faker/providers/lorem/__init__.py
@@ -8,7 +8,8 @@ class Provider(BaseProvider):
     @classmethod
     def word(cls):
         """
-        :example 'Lorem'
+        Generate a random word
+        :example 'lorem'
         """
         return cls.random_element(cls.word_list)
 
diff --git a/faker/providers/python/__init__.py b/faker/providers/python/__init__.py
index 0b452478..4e5477b8 100644
--- a/faker/providers/python/__init__.py
+++ b/faker/providers/python/__init__.py
@@ -25,7 +25,7 @@ class Provider(BaseProvider):
 
     @classmethod
     def pystr(cls, max_chars=20):
-        return Lorem.text(max_chars)
+        return "".join(cls.random_letter() for i in range(max_chars))
 
     @classmethod
     def pyfloat(cls, left_digits=None, right_digits=None, positive=False):

Add ability to generate lorem characters without punctuation
Sometimes I want to generate a string of characters of a specific length without any punctuation or capitalization but the lorem provider currently does not allow for this. 
diff --git a/faker/tests/__init__.py b/faker/tests/__init__.py
index 8c20e3d5..802bee4c 100644
--- a/faker/tests/__init__.py
+++ b/faker/tests/__init__.py
@@ -499,6 +499,20 @@ class FactoryTestCase(unittest.TestCase):
         sentence = provider.sentence(0)
         self.assertEqual(sentence, '')
 
+    def test_random_pystr_characters(self):
+        from faker.providers.python import Provider
+        provider = Provider(None)
+
+        characters = provider.pystr()
+        self.assertEqual(len(characters), 20)
+        characters = provider.pystr(max_chars=255)
+        self.assertEqual(len(characters), 255)
+        characters = provider.pystr(max_chars=0)
+        self.assertEqual(characters, '')
+        characters = provider.pystr(max_chars=-10)
+        self.assertEqual(characters, '')
+
+
     def test_us_ssn_valid(self):
         from faker.providers.ssn.en_US import Provider
 

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest
apt-get update apt-get install -y gcc
3.9
requirements/base.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
exceptiongroup==1.2.2
-e git+https://github.com/joke2k/faker.git@326e22d5752e0a28baee59c57ed0f49935de9059#egg=fake_factory
iniconfig==2.1.0
packaging==24.2
pluggy==1.5.0
pytest==8.3.5
python-dateutil==2.9.0.post0
six==1.17.0
tomli==2.2.1

name: faker
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - exceptiongroup==1.2.2
      - iniconfig==2.1.0
      - packaging==24.2
      - pluggy==1.5.0
      - pytest==8.3.5
      - python-dateutil==2.9.0.post0
      - six==1.17.0
      - tomli==2.2.1
prefix: /opt/conda/envs/faker

faker/tests/__init__.py::FactoryTestCase::test_random_pystr_characters
faker/tests/__init__.py::ShimsTestCase::test_counter faker/tests/__init__.py::UtilsTestCase::test_add_dicts faker/tests/__init__.py::UtilsTestCase::test_choice_distribution faker/tests/__init__.py::UtilsTestCase::test_find_available_locales faker/tests/__init__.py::UtilsTestCase::test_find_available_providers faker/tests/__init__.py::FactoryTestCase::test_add_provider_gives_priority_to_newly_added_provider faker/tests/__init__.py::FactoryTestCase::test_command faker/tests/__init__.py::FactoryTestCase::test_command_custom_provider faker/tests/__init__.py::FactoryTestCase::test_date_time_between_dates faker/tests/__init__.py::FactoryTestCase::test_date_time_between_dates_with_tzinfo faker/tests/__init__.py::FactoryTestCase::test_date_time_this_period faker/tests/__init__.py::FactoryTestCase::test_date_time_this_period_with_tzinfo faker/tests/__init__.py::FactoryTestCase::test_datetime_safe faker/tests/__init__.py::FactoryTestCase::test_datetimes_with_and_without_tzinfo faker/tests/__init__.py::FactoryTestCase::test_documentor faker/tests/__init__.py::FactoryTestCase::test_email faker/tests/__init__.py::FactoryTestCase::test_format_calls_formatter_on_provider faker/tests/__init__.py::FactoryTestCase::test_format_transfers_arguments_to_formatter faker/tests/__init__.py::FactoryTestCase::test_get_formatter_returns_callable faker/tests/__init__.py::FactoryTestCase::test_get_formatter_returns_correct_formatter faker/tests/__init__.py::FactoryTestCase::test_get_formatter_throws_exception_on_incorrect_formatter faker/tests/__init__.py::FactoryTestCase::test_magic_call_calls_format faker/tests/__init__.py::FactoryTestCase::test_magic_call_calls_format_with_arguments faker/tests/__init__.py::FactoryTestCase::test_no_words_paragraph faker/tests/__init__.py::FactoryTestCase::test_no_words_sentence faker/tests/__init__.py::FactoryTestCase::test_parse_returns_same_string_when_it_contains_no_curly_braces faker/tests/__init__.py::FactoryTestCase::test_parse_returns_string_with_tokens_replaced_by_formatters faker/tests/__init__.py::FactoryTestCase::test_password faker/tests/__init__.py::FactoryTestCase::test_prefix_suffix_always_string faker/tests/__init__.py::FactoryTestCase::test_random_element faker/tests/__init__.py::FactoryTestCase::test_slugify faker/tests/__init__.py::FactoryTestCase::test_timezone_conversion faker/tests/__init__.py::FactoryTestCase::test_us_ssn_valid faker/tests/__init__.py::GeneratorTestCase::test_get_random faker/tests/__init__.py::GeneratorTestCase::test_random_seed_doesnt_seed_system_random
faker/providers/python/__init__.py faker/providers/lorem/__init__.py
faker/providers/python/__init__.py faker/providers/lorem/__init__.py